[表示 : 全て 最新50 1-99 101- 201- 301- 401- 2chのread.cgiへ]
Update time : 10/07 15:09 / Filesize : 154 KB / Number-of Response : 425
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

AutoHotkey スレッド part8



1 名前:名無しさん@お腹いっぱい。 [2009/05/23(土) 00:23:38 ID:78PWRd9v0]
■公式
www.autohotkey.com/

■解説
AutoHotkeyを流行らせるページ
lukewarm.s101.xrea.com/

■過去スレ
1 pc7.2ch.net/test/read.cgi/software/1098531338/
2 pc7.2ch.net/test/read.cgi/software/1129836713/
3 pc11.2ch.net/test/read.cgi/software/1157043396/
4 pc11.2ch.net/test/read.cgi/software/1184556627/
5 pc11.2ch.net/test/read.cgi/software/1201502896/
6 pc11.2ch.net/test/read.cgi/software/1219130051/
7 pc12.2ch.net/test/read.cgi/software/1230694774/

■派生版
AutoHotkey_L
www.autohotkey.net/~Lexikos/AutoHotkey_L/

駄目文字微対策版
yak.myhome.cx/junks/#ahk.cp932

関連リンク>>2以降も参照


2 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 00:24:43 ID:78PWRd9v0]
■関連記事のあるサイト

AutoHotkey メモ - Principia
principia.s54.xrea.com/index.php?AutoHotkey%20%A5%E1%A5%E2
AutoHotKey - notitle.txt
kan.s151.xrea.com/?AutoHotKey
なまず日記
www.tierra.ne.jp/~aki/diary/
eamatの日記
d.hatena.ne.jp/eamat/
おばけ日記
d.hatena.ne.jp/obake/

1 Hour Software by Skrommel - DonationCoder.com
www.donationcoder.com/Software/Skrommel/
ACConsole
www.autohotkey.com/forum/topic7831.html
Tips N Tricks(公式フォーラムのトピック)
www.autohotkey.com/forum/topic8795.html&highlight=gui

3 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 00:25:48 ID:78PWRd9v0]
Q1:CapsLock(英数)キーの割り当てがうまくいかないよ
A1:日本語環境だとLock系キーの動作は不定。
  OS側がキーUp/Down情報が正しく返してこないので対処のしようがない。
  OSのローカライズ段階で発生してる問題なので、窓使いの憂鬱やChange Keyのように
  ドライバレベルで弄らないとダメだが英語圏では問題ないらしいので今後のサポートもあまり期待できない。
  対処としては前述のソフトで、CapsLock(英数)キーを別のキー(F13〜F24など)に割り当ててから
  AHKで利用すべし。

Q2:「〜AチЯ`荏柿義形港餐汁秦疏蛋伝覗描冒輿倭兪啻嫣彖拜杼歔」を含む文字列がうまく扱えないよ
A2:これらの文字の2バイト目が、AHKのエスケープ文字である0x60[`]なため。
  対処としてはこれらの文字の"直後"に「`」を記述する(例:「線形`代数」)か、
  #EscapeCharでエスケープ文字を別のものに変えるべし。

Q3:Shift, Ctrl, Alt, Winキー以外のキーを修飾キーとしてキー割り当てしたいよ
  (例:無変換 + IKJLキーをそれぞれ「↑↓←→」に割り当てたいよ)など
A3:Remap機能は記述が簡単になる反面、細かい指定がしにくい。
  流行らせるページのHotkeys, キーリスト, リファレンス→Send, #IfWinActive, GetKeyState()なども参照すること。
  なお、例の場合は以下のように記述する。
  sc07B & I::Send, {Blind}{Up}
  sc07B & K::Send, {Blind}{Down}
  sc07B & J::Send, {Blind}{Left}
  sc07B & L::Send, {Blind}{Right}

Q4:エディタの定義はどうするの?
A4:「{AutoHotkeyのフォルダ}\Extras\Editor」に各種エディタの定義ファイル及びキーワード一覧あり

Q5:GUI作るのめんどくせ〜〜
A5:公式( ttp://www.autohotkey.com/download/ )から SmartGUI Creator をDLして使え

Q6:ファイルパスに駄目文字があるんだが、、、
A6:駄目文字微対策版( ttp://yak.myhome.cx/junks/#ahk.cp932 )を使え。

4 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 00:27:52 ID:78PWRd9v0]
Q7:「XX hotkeys have been received in the last XXXXms.」って怒られるんだけど、、、(XXは環境による)
A7:多分自分自身のキーを送って無限ループになっている。 例) 「a::Send, a 」
  先頭に $ を付ければ回避できる(NT系のみ)。 例) 「$a::Send, a」

Q8:AHKってマルチスレッドじゃないの?
  タイマーやMsgBox, WinWait, KeyWaitを使ってるけど思った通りに動かない。
A8:「擬似マルチスレッド」です。最後に割り込んだスレッドが終わるまで元スレッドは動きません。

> 要は処理系統が複数同時に走らないってこと。図にするとこんな感じ。
> → 実行中、 …:割り込み終了待ち
> 元スレッド   →→→→→→→→→→→……………………………………→→→→
>                           ★割込                ↑再開    
> 割り込みスレ                  →→→→…………→→→→→→END
>                                 ◆割込 ↑再開
> 更に割り込み                        →→→END

Q9:完璧なスクリプトなのに、なぜerrorが出るの?
A9:このスレではインデントに全角スペースを使ってコードを貼り付ける事があるので、
  全角スペースをタブや半角スペースに変換してみよう。

Q10:作りたいんですけど?どうすればいいのでしょうか?ご教示頂きたいです。よろしくお願いします。
A10:簡単ですから(メモ帳等を使い)自分で書いてください。
  まず、自分で少しでも書いて晒してみよう。そうしたらレスが付くかも…
  イントロダクション、使用例、使用方法、Hotkeys、キーリストに目を通した方が話が早いぞ。

Q11:具体的に何が出来ますか?どこにありますか?
A11:マウスジェスチャ、ThumbRemap、TTBaseプラグインの数種、仮想デスクトップ等
   1:「AutoHotkeyを流行らせるページ」の「My Scripts」や「BBS」の投稿スレ
   2:公式のWiki「Compilations」

5 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 00:59:07 ID:78PWRd9v0]
Q12:「a=abc」と「a:="abc"」って違いがある? / 「If a=1」と「If (a=1)」って違いがある?
A12:意味としては違いは無いけど、コマンド形式(共に前者)の方が「式」形式(後者)のほうが少し速い。
  だけど、ループで大量(数万回転↑)に回さないと実感出来ないし、複数条件を使うなら「式」を使った方が速い。

Q13:ウィンドウ毎のキーマップは簡単だけど、キーを押して切り替えたりしたい。
Q13:派生版の「AutoHoekey_L( www.autohotkey.net/~Lexikos/AutoHotkey_L/ )」を使うと便利。
  ; 変数KeyMapが1の時だけ、IKJLでカーソル移動
  #If (KeyMap=1)
   I::Up
   K::Down
   J::Left
   L::Right
  #If
  ※ 上記以外にもユーザ定義関数などを利用して様々条件でキー・マウス設定が出来る。

Q14:配列変数やハッシュ(仮想配列)は使ええないの?
A14:「式」を使うと配列やハッシュのように変数を参照できる
  以下のようにした場合、A%Index%を展開してできあがった文字列の示す変数内容が x に格納される。
   x := A%Index%
  代入しないで参照するする事も可能、
  WinGet, list, list
  Loop, %list%
  {
   WinGetClass, class, % "ahk_id " list%A_Index%
    :
  }

6 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 01:22:42 ID:i45iLGOr0]
新スレおめ

               ∧_∧
オツカレチャ━━━━━━(´∀` )━━━━━━ソ!!!!!
              /     ヽ
             / 人   \\   彡
           ⊂´_/  )   ヽ__`⊃
                / 人 (
               (_ノ (_)



7 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 02:26:26 ID:EdKRGdzN0]
乙です!

> A12:意味としては違いは無いけど、コマンド形式(共に前者)の方が「式」形式(後者)のほうが少し速い。
どっちが速いの?

8 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 02:29:34 ID:j0LLn1RV0]
>>7
後をきちんと読めばわかるだろう

9 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 06:24:57 ID:Pd5cDY560]
>>3の↓は
>Q:「〜AチЯ`荏柿義形港餐汁秦疏蛋伝覗描冒輿倭兪啻嫣彖拜杼歔」を含む文字列がうまく扱えないよ
別ファイルに書いといて直接変数に読み込む手もあるね

(ahkスクリプト)
------------------
SetWorkingDir, %A_ScriptDir%
FileReadLine, OutputVar, test.txt,1
FileReadLine, HelloWorld, test.txt,2
MsgBox, %OutputVar%
MsgBox, %HelloWorld%
------------------

test.txt
------------------
〜AチЯ`荏柿義形港餐汁秦疏蛋伝覗描冒輿倭兪啻嫣彖拜杼歔
ハロ〜ワールド


10 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 08:15:38 ID:0lga1Rqg0]
前スレ >>977
Gui, Add, Hotkey はWindowsキーを修飾キーとして利用出来ず、
いずれはそれっぽいものを個人的に作ろうと思ってたので
前スレ >>978 氏のリンクを参考に書いてみた。


#SingleInstance, force
#Installkeybdhook
gosub, SetHotkeys
InputBox, OutputVar, , キーを押してください, , 180, 120
return

SetHotkeys:
Hotkey, IfWinActive, %A_ScriptName% ahk_class #32770
;リンク先のサンプルは vk?? なので入力欄ではどのキーを押したのか判別し難いので
;A-Z,0-9,F1-F12 で表示されるようにしてみただけ。他(記号やテンキー等)が必要なら要追加
keys=A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z
,0,1,2,3,4,5,6,7,8,9,F1,F2,F3,F4,F5,F6,F7,F8,F9,F10,F11,F12
loop, parse, keys, `,
{
Hotkey, *~%A_loopField%, AnyKey_down
Hotkey, *~%A_loopField% up, AnyKey_up
}
return




11 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 08:16:18 ID:0lga1Rqg0]
;<続き>

AnyKey_down:
B_ThisHotkey:=RegExReplace(A_ThisHotkey, "\*~(.*)", "$1")
if GetKeyState("LWin", "P") || GetKeyState("RWin", "P")
B_ThisHotkey=`#%B_ThisHotkey%
if GetKeyState("Alt", "P")
B_ThisHotkey=`!%B_ThisHotkey%
if GetKeyState("Ctrl", "P")
B_ThisHotkey=`^%B_ThisHotkey%
if GetKeyState("Shift", "P")
B_ThisHotkey=`+%B_ThisHotkey%
return

AnyKey_up:
B_KeyDelay=%A_KeyDelay%
SetKeyDelay, -1
Send, {home}
Send, +{end}
Sendraw, %B_ThisHotkey%
SetKeyDelay, %B_KeyDelay%
return


12 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 13:32:15 ID:gAwG1DqL0]
初歩的な事ですみませんが
SplashTextを中央以外に表示させる事ってできますか?
スクリーンの中央に表示するって書いてあるので、中央以外は無理なのかな?

13 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 13:39:45 ID:aA4IMCHP0]
SplashImageを使えばいいんでないの?

14 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 14:55:33 ID:gAwG1DqL0]
>>13
イメージを表示させる事ができなかったけど、やりたい事はできました。ありがとうございます
インストールフォルダに画像「splash.JPG」を置いて
SplashImage , splash.JPG, B X100 Y100, 123
sleep, 1000
SplashImage, Off
で画像が出ませんでした。文字は出せたのでいいといえばいいのですが、なぜ画像が出ないのでしょうか?

15 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 15:01:35 ID:EUJqRyaQ0]
977です。最終的にはこんなスクリプトになりました。

#SingleInstance force

currentlyRecording := 0
send_mode = Event
holddown := 10
between := 10

; register all 255 virtual keys
SetFormat,Integer,Hex
Loop, 255
{
key := substr("0" . substr(A_Index + 0, 3), -2) ; convert to hex, remove "0x", pad to two digits
Hotkey, *~vk%key%, AnyKey_down
Hotkey, *~vk%key% up, AnyKey_up
}
SetFormat,Integer,Decimal

AnyKey_down:
if (currentlyRecording)
playback := playback . "{" . substr(A_ThisHotkey,3). " Down}"
return

AnyKey_up:
if (currentlyRecording)
playback := playback . "{" . substr(A_ThisHotkey,3). "}"
return

16 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 15:02:26 ID:EUJqRyaQ0]
続き

ToolTipOff:
SetTimer,ToolTipOff,Off
ToolTip
return

~LWin::
tapcount=1
loop,
{
KeyWait,LWin
KeyWait,LWin,t0.15 d
if ErrorLevel=0
tapcount+=1
else
break
}
;---------------------ここから希望動作を入れる
if tapcount=1
{
SetKeyDelay, between, holddown
Send,%playback%
return
}

17 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 15:04:22 ID:aA4IMCHP0]
>>14
ahkがあるフォルダが作業ディレクトリになるから。
msgbox, %A_WorkingDir%

18 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 15:04:23 ID:EUJqRyaQ0]
続き

else if tapcount=2
{
if (currentlyRecording)
{
ToolTip,Stopped recording.
currentlyRecording := 0
playback := RegExReplace(playback, "(\{[^}]+ Down\})+$", "") ; remove the "^F5" from the end
} else
{
ToolTip,Started recording.
currentlyRecording := 1
playback := ""
}
SetTimer,ToolTipOff,1000
return
}
最初のとは結構変わってるけど、やりたいことができました!ありがとう!
ただ、たまに暴発するのがたまにキズw

19 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 15:36:25 ID:gAwG1DqL0]
>>17
ahkも同じインストールしたフォルダにあります。
C:\Program Files\AutoHotkey\splash.JPGでもダメでした

20 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 16:15:40 ID:78PWRd9v0]
スクリプトをどこに置いて、どうやって実行してるか、でカレントフォルダは変わるよ



21 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 17:37:09 ID:CXZr65JJ0]
新スレ立ってたのか

22 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 17:51:29 ID:gAwG1DqL0]
>>17>>20
ごめんなさい、画像ファイルの名前ミスでした・・・
初歩の初歩のミスでレス重ねてすみませんでした


23 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/23(土) 20:09:00 ID:aA4IMCHP0]
>>22
ぇぃ! 
 ∧,,∧
(´・ω・)  ∧_∧
⊂( ⊆ ̄つ☆))Д`)
  \ /⊂ ⊂~ノ
  と丿⊂ と_ノ

24 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/24(日) 20:30:16 ID:UimWf5FR0]
SQLiteModule.ahkの1.1の関数のSQLite_GetSelect(db, sql, text, ByRef row, ByRef col)で
データベースの列の最後の値がNULLだと次のレコードを変数に格納してくれない気がする

よく検証してないから分からないけど最後の列の値になにか入れたら次の行は一応格納してくれた

25 名前:24 mailto:sage [2009/05/24(日) 20:40:28 ID:UimWf5FR0]
いや、やっぱり8列目までしか対応してないだけっぽいかも
SQLはじめてやるもんで朝から苦戦しっぱなし
基本情報取るときに少しやっただけだが辛い

26 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/24(日) 20:54:05 ID:2/JStSCV0]
autohotkey で sqlite を使う用途がいまいち思い浮かばない
何に使うんだろう


27 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/24(日) 23:30:10 ID:ERJmg4L+0]
同一キー連打でキーマップ切り替え。AutoHotkey_L専用。
コンビネーションキーよりいい感じ。

#If
*vk1Dsc07B::
  KeyMap:=(A_ThisHotkey==A_PriorHotkey && A_TimeSincePriorHotkey<300)+1
  KeyWait, vk1Dsc07B
  KeyMap:=0
  return

#If (KeyMap==1)
  h::Left
  j::Down
  k::Up
  l::Right
#If (KeyMap==2)
  h::Home
  j::PgDn
  k::PgUp
  l::End




28 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/25(月) 05:07:06 ID:+20GCM/K0]
Guiの手始めにじゃんけんゲーム作ってみたところ
勝敗引分けの統計がほぼ平均的にバラけてて
ランダムといってもあまり偏ったりしないもんなんですかね

29 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/25(月) 19:06:52 ID:K51ru5IJ0]
>>26
使ったことないけど配列とかリストの代わりになるのかな?

30 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/25(月) 19:49:53 ID:ayEEflNj0]
なるよ。普通の言語の配列みたな気軽さを求めると痛い目に遭うと思うけど。



31 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/25(月) 20:54:05 ID:D8xwJFNr0]
前スレ1000の某所の裏ってどこ?

1000 名前:名無しさん@お腹いっぱい。[sage] 投稿日:2009/05/24(日) 14:29:38 ID:h0rZeR9o0
1000ゲト?

あるえ?>>999 なんでドキュメントの方のリンク載せちゃったんだろ?
Class library
ttp://www.autohotkey.net/~animeaime/ClassLibrary/
こっちっすね。

Class library (OOP) - Help Thread:
ttp://www.autohotkey.com/forum/topic42244.html
Class library (OOP) - Wish list / Bug reports thread:
ttp://www.autohotkey.com/forum/topic40293.html

; >>994,999,1000のネタ元は某所の裏からっす。

32 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/25(月) 21:36:07 ID:K51ru5IJ0]
>>30
そうかそういう手があったのか
非表示のリストビューで無理矢理リスト作ってたわ俺w

33 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/25(月) 21:50:53 ID:3ssrsEXY0]
>>24
作者だけど忙しい+結構立ってるので理解が・・・
自分用にコメントつけておけばよかった

>>26
自分用TV表が欲しかった
お気に入り機能でデータ保存には何が良いだろう→SQLが一番
と考えて

34 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/25(月) 22:37:00 ID:ayEEflNj0]
ぬるぽかと
ttp://www.3rd-impact.net/Document/SQLite/Translation/Current/capi3ref.html#sqlite3_column_text

35 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/25(月) 23:47:59 ID:3ssrsEXY0]
INTEGER、FLOAT、TEXTしか判断してないっぽい
514〜521を
if($result == 3)
{
if(!SQLite_Column_Text($query, $nowCount, $get))
{
$errMsg = SQLite_GetSelect->%$errMsg%
return False
}
}
else
{
$get = ""
}
で対処可能なはず
blob型ってのがよく分かってないのでとりあえず空文字で

36 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/26(火) 00:05:37 ID:3ssrsEXY0]
>>35
これミスでした

ttp://lukewarm.s101.xrea.com/up/file/109.zip
これで大丈夫なはず

37 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/26(火) 01:24:00 ID:+TlrQY3d0]
RButton::return
で右クリックを殺してるはずなのに、ゲーム中で右クリックすると無効になってません
どうしてでしょう?
ゲームのプロテクトとかそんなんですかね?

38 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/26(火) 02:49:14 ID:Y7ZtP0Kd0]
そんなところだろうね。たぶんDirectInput

39 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/26(火) 10:46:40 ID:WTUueAPd0]
>>38
DirectInputはキー切ったり、送ったりはできないのですか?

40 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/26(火) 11:33:39 ID:24/J68kf0]
公式のFAQにあるけど、DirectInputでも一部は動くこともある
・SendPlayを使う
・SetKeyDelayを増やしてみる
  SetKeyDelay, 0, 50
  SetKeyDelay, 0, 50, Play
・ControlSendを使う

GameguardやNPro使ってるんだったら、ドライバレスでマクロができるゲーマー用のマウス買った方が楽かと



41 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/26(火) 17:13:05 ID:QN5A7Hfw0]
If A > %A_Index%
 Count ++

Hoge%Count% = hogehoge

みたいに配列的に変数を使ってその数が不定の場合、これらのメモリを一括で開放する方法はなにかありますでしょうか。

Loop,%Count%
{
Hoge%A_Index%=
}

Loopで回せばいいのはわかりますが、Countの値を保持してなければならずあまりスマートな感じがしないので、「配列のメモリを解放」みたいなコマンドがあればと思って。

42 名前:24 mailto:sage [2009/05/26(火) 18:39:35 ID:qcaMCxpC0]
>>36
うお、よくわかんないけど直りました
ありがとうございます

>>26
ちょっとした記憶用ソフト作りたくて頑張ってました
すでにCSVで問題、答え、苦手度、最後に解いた日、間違ったフラグ(次正解すれば解除)とか記録してて
そのCSVを読み込んで出題するAHKはほとんど完成系で作ってあるんだけど

いろんな条件で抽出するときやっぱりCSVよりSQLのWHERE文があればと思ったのがきっかけ

43 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/26(火) 18:48:49 ID:24/J68kf0]
>>41
内部的には配列ではなくそれぞれ独立した変数として扱われてるのだから一括解放は無理なんじゃないかな
どうしても一括解放にこだわるなら、以下のようなライブラリを使ってみるとか
ttp://www.autohotkey.com/forum/topic36600.html
ttp://www.autohotkey.com/forum/topic35041.html
ttp://www.autohotkey.com/forum/topic14881.html

それから余計なお世話かもしれないけど、hoge=ではメモリが解放されない場合がある
この辺はVarSetCapacity()のヘルプに書いてあるけど、一度64にセットしてから0で解放する必要がある

44 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/27(水) 06:01:02 ID:49MLE6WY0]
前スレでVista+Word2007でダイアモンドカーソルを実現しようと思った者です。
返信すごく遅くなって申し訳ありません。
今日試してみたらなぜか普通に動くようになってました。
1日潰してあんなに動かそうとしても全然動かなかったのに…。

前スレでレス下さった皆様ありがとうございました。
お騒がせしました。


45 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/27(水) 22:13:25 ID:ghabN5mP0]
先輩方 初めてのAutoHokeyで書いてみたのですが
おかしなところを突っ込んで頂けると嬉しいです。


#Persistent
SetTimer, Note, 3000
Note:
Process, Exist, notepad.exe
NewPID = %ErrorLevel%
if NewPID = 0
{
Run, notepad.exe, c:\, /UseErrorLevel
}


3秒ごとにメモ帳が動いてるか確認
動いてなければ メモ帳を起動する
notepad.exeなんか存在しませんのときにエラーウインドウが立ち上がらないように処理
作業ディレクトリがc:\は良く意味がわかっていないorz
メモ帳が動いてた時の処理はループするだけだから問題ないのかな(´・ω・`)


46 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/27(水) 23:03:39 ID:2RG+Zvrk0]
>>45
SetTimerの後と、最後の行にreturn入れてる?

47 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/27(水) 23:19:55 ID:HF3buD8W0]
>>45
うごくから、いいんじゃないのかな。
>>46のツッコミはもっともだが、起動時に1回処理を噛ますと言う意味では処理としては良いと思う。
(SetTimerの後にreturnをわざと置いていないのだとしたら)
第2引数は作業フォルダ。ショートカットを右クリックし見たてプロパティ画面のと同じ。
メモ帳なら空でもいい。

プロセスが無くなるまで待つ方法もある。
Process, WaitClose, %pid%

48 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 00:06:27 ID:wZfk3OyC0]
>>46
>>47

ありがとうございます。

settimerの後はreturn入れると挙動がおかしかったので入れてません。
最後の行に入れてないのは入れたら終わってしまうと思っていれてないです^^;

作業フォルダのご説明大変わかりやすいです^^
この場合は特になくても大丈夫そうですね。
作業フォルダがいつか消滅したときのことを考えてエラーを吐かれると嫌だったので
絶対存在し続けるc:\にしてみました。

returnを入れてもう一度ためしてみます。

49 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 00:10:25 ID:wZfk3OyC0]
#Persistent
SetTimer, Note, 3000
return
Note:
Process, Exist, notepad.exe
NewPID = %ErrorLevel%
if NewPID = 0
{
Run, notepad.exe, c:\, /UseErrorLevel
}
return


言われた通りにretrun二つ突っ込んで見ましたがちゃんと動きますね
return入れてないと処理がきちんと修了しないからだんだん重くなっていったりしますかね?
違いが全くわかりません^^;

50 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 00:14:22 ID:wZfk3OyC0]
Return
GosubやHotkeyのサブルーチン処理から戻る

Remarks
GoSubでジャンプしていないときにReturnを実行すると、
Exitを実行したときと同様にスレッドを終了する。



サブルーチン処理をしていない場合はなくてもよいのかなと思い込んでみる。。



51 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 00:18:11 ID:k3jZrIoJ0]
これだけでいい気がする

Loop
RunWait, NotePad.exe

52 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 01:23:49 ID:g2Gpk75K0]
SetTimerって待機スレッド(プロセス?)がどんどん溜まって
重くなったりしないかと不安であまり使ってない…。実際のところどうなんでしょ?

53 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 05:19:31 ID:UHCBZ4+L0]
Autohotkeyの中で疑似スレッド的に動いてるだけで、OSから見たら常に単一プロセス単一スレッドだから
CPUやメモリリソースへの負荷はあまり考える必要が無いと思うけど。

疑似スレッドの制御は本物のプロセス/スレッドのように複雑じゃないので、
実質上の負荷は、実際にタイマースレッドで動作するAHKコードの量で判断してもかまわないと思う。

それにスクリプト実行中はSetBatchLinesで指定した間隔で10msのスリープも入って、
OS全体の負荷を高めないような作りにもなってるし。

54 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 16:22:04 ID:ar6yU5aO0]
AutoHotKey、さっきはじめて知りました。
スクリプトとか全然わかりませんし、わかるのはBASICぐらいですw
でもなんとかマニュアルを参考にして10分ぐらいいろいろやってるのですが。。。

たとえば、Winキー+y で、iTunesがアクティブなときだけ最小化したいんですが、
スクリプトは、これでOKでしょうか?
一応動いているのですが、なにか問題があるでしょうか?

>>>>>>>>>>>>( iTunesがアクティブなら最小化 )<<<<<<<<<<<<<

#y::
IfWinActive iTunes
WinMinimize,iTunes
IfWinActive
return

レベルが低い質問でごめんなさい...orz

そもそも、なにがやりたくてAutoHotKeyを知ったのかといいますと、
任意のホットキーを押したとき、
(1)任意のアプリが起動していなければ起動する。
(2)任意のアプリが起動していて、かつ、最小化状態またはバックグラウンド状態なら、アクティブに(最前面に持ってくる)。
(3)任意のアプリが起動していて、かつ、最前面(アクティブ)ならば、最小化する。

こういうのをやりたかったんです。

55 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 16:24:36 ID:ar6yU5aO0]
そもそもなぜそんなことをやりたいのかといいますと、、、

最近、プログラマブルキーボードを買ったのですが、
1つのキーだけで、任意のアプリのアクティブ化と最小化をトグルしたい。
あるキーを押したら指定したアプリのウィンドウが最前面に来て、
そのアプリが最前面にあるときに、そのキーをもう一度押したら
そのアプリのウィンドウが最小化する、みたいな感じです。

でもそんな簡単なことすらプログラマブルキーボード付属のユーティリティーではできず。。。
で、いろいろ考えて、その任意のアプリにWindows標準のホットキーを割り当て、
プログラマブルキーボード側の任意のキーにそのホットキーをアサインすれば、
上記の(1)と(2)だけは実現できるんですが、(3)がどうしても実現できないんですよね。

んで、国内外のフリーウェアをかなりいろいろ試したんですが、(1)(2)と同時に(3)ができるものが
数時間探しても見つけられず、また、こういうのって、
検索ワードがホットキーとか最小化とか一般すぎる言葉になっちゃって
自分の求めているソフトを検索エンジンで探しにくいんですよね。。。。

てなわけで、長くなってしまいましたが、AutoHotKeyにこれからハマってみる予定です
GUIまで作れちゃったりするみたいで、恐ろしいほど高性能でびっくりですよ、ほんと。

56 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 16:25:18 ID:ar6yU5aO0]
コメントアウトは
>>>>>>>>>>>>
で大丈夫でしょうか?

57 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 16:32:10 ID:Rj+x9ILK0]
まだ初心者の俺が、試しもせずにしゃしゃり出てみる

#y::
IfWinActive, iTunes
{
WinMinimize,iTunes
}else{
Process,Exist,notepad.exe
If ErrorLevel<>0
WinActivate,ahk_pid %ErrorLevel%
else
Run,notepad.exe
}
return

58 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 18:06:51 ID:ar6yU5aO0]
>>57
早速、ありがとうございます!
notepad.exeになってしまってますが、
iTunes.exeに変えると動きますね!

59 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 18:08:03 ID:ar6yU5aO0]
>>55,56を書き込んだあとに、自分で考えたものは以下でした。
以下でも一応ちゃんと動くみたいです。
でも、>>57さんのように、ちゃんとahk_pid %ErrorLevel%みたいに
指定したほうが確実ですよね?

#y::
IfWinActive,iTunes
{
WinMinimize,iTunes
}
else
{
WinActivate,iTunes
Process,Exist,iTunes.exe
If ErrorLevel=0
{
Run,iTunes.exe
}

}

;;;IfWinNotExist iTunes
;;; Run,iTunes.exe

return

ただ、iTunesって名前が付いたフォルダとかアプリが開いていると
そっちのほうが最小化しちゃったりしますけど、それも本当は、キッチリPIDを調べてやれば、誤動作もなくなるんですよね?
数時間いじったらかなりわかってきました!ありがとうございます!!
本当に面白くて可能性を感じるソフトですよね!

60 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 18:08:51 ID:ar6yU5aO0]
ありゃりゃ、
;;;IfWinNotExist iTunes
;;; Run,iTunes.exe
の部分はコメントアウトでした..orz



61 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 19:31:15 ID:Rj+x9ILK0]
ちなみに>>57のやつはAutoHotkeyを流行らせるページに載ってたヤツのコピペです。
暇なときにでものんびり読んでみるといいよ。

62 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 21:32:48 ID:jz4l290M0]
>>36
これはいいね。使わせてもらうよ
ところでライセンスは何?

63 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 22:02:37 ID:k3jZrIoJ0]
マウス周囲のを指定した大きさの正方形でデスクトップまで穴をあける。再度呼び出すと元に戻す。

~RCtrl::ClipWindow()
ClipWindow(size=200, ignoreClassPattern="Shell_TrayWnd|BaseBar") {
 static clipped
 If (!clipped) {
  DetectHiddenWindows, Off
  CoordMode, Mouse, Screen
  MouseGetPos, mx, my
  WinGet, list, List
  Loop, % (list-1) {
   IfWinNotExist, % "ahk_id " list%A_Index%
    continue
   WinGetClass, class
   If ignoreClassPattern && RegExMatch(class, ignoreClassPattern)
    continue
   WinGetPos, x, y, w, h
   mx1:=mx-x-size//2, my1:=my-y-size//2, mx2:=mx-x+size//2, my2:=my-y+size//2
   If (mx1>w || my1>h || mx2<0 || my2<0)
    continue
   WinSet, Region, 0-0 %w%-0 %w%-%h% 0-%h% %mx1%-%my1% %mx2%-%my1% %mx2%-%my2% %mx1%-%my2% %mx1%-%my1% 0-%h%
   clipped := list%A_Index% . (clipped ? "|" : "") . clipped
  }
 } else {
  DetectHiddenWindows, On
  Loop, PARSE, clipped, |
   WinSet, Region,, ahk_id %A_LoopField%
  clipped=
 }
}

64 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/28(木) 22:33:50 ID:qyNknqLm0]
>>63
これいいね
ちょっと感動した
使わせてもらいます。

65 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 00:36:46 ID:DA5drrjA0]
Vistaじゃ動かないな

66 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 00:37:02 ID:u1yo0xzx0]
>>63
面白いな
穴あいてるときにSetTimerでマウス追従するとさらに便利
堪能するためにわざわざ壁紙張ってしまったw

67 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 00:40:11 ID:0CBSOWcu0]
もちろんエロい壁紙だよな

68 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 01:12:50 ID:ZNykQa940]
s = %A_thishotkey%

s1 = %s%%

msgbox,%s1%
return

s の変数の値の末尾に % を付け加えて
それを s1 に保存したいのですが
(A_thishotkey が a だとすれば "a%")
こうかくとエラーになります。
どうすればこれを実現できますか。

69 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 01:19:50 ID:keMVWhB40]
敷居が高いのもあるからどんどん流行ってくれ

70 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 01:25:55 ID:5w+b34I70]
>>68
s1 = %s%`%
最後の % をエスケープする(デフォならShift + @)



71 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 01:27:23 ID:y2qE0/Pv0]
>>68
エスケープ
s1 = %s%`%
MsgBox, %s1%

式を使う方法もあり
s2 := s1 . "%"
MsgBox, % s2

72 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 01:29:55 ID:ZNykQa940]
>>70-71
ありがとうございます!


73 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 08:36:17 ID:HnnwY0C40]
少しお聞きします。

無変換とシフトと任意のキーというホットキーの定義の仕方はありませんでしょうか?

vk1Dsc07B & +g::
 SplashTextOn,,, Test...
 Sleep, 600
 SplashTextOff
return

などとやっても、無変換+シフト+Gを拾ってくれないのです・・・
+vk1Dsc07B & gだと読み込み時にエラーがでるし…。

74 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 08:42:33 ID:vciG3EmH0]
>>73
コンビネーションキー
「&」を使うことで、2つの任意のキー(ジョイスティック以外)の組み合わせをホットキーに指定することが可能。
3つ以上のキーを指定したり、+^!#で修飾キーを追加したりは出来ない。

If GetKeyState("Shift","P")

75 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 08:54:53 ID:vciG3EmH0]
最初に
vk1Dsc07B & g::
If !GetKeyState("Shift","P")
return
を追加すれば大丈夫か

76 名前:1/2 mailto:sage [2009/05/29(金) 13:22:46 ID:u1yo0xzx0]
>>63 のマウス追従Ver 作ってみた。 タイマ未使用、Shiftで固定、ESCで終了

#1:: ClipWindow_MouseFollows()
ClipWindow_MouseFollows(size=200, Pause="Shift",endKey="ESC", ignoreClassPattern="Shell_TrayWnd|BaseBar")  {
  static list
  IfNotEqual,list,, return ;semaphore
  DetectHiddenWindows, Off
  CoordMode, Mouse, Screen
  WinGet, list, List
  Loop, %list%
    l := list%A_Index% . (l ? "|" : "|0x0") . l
  While !GetKeyState(endKey) && Instr(l,WinActive("A"))  {
    if GetKeyState(pause) {
      KeyWait,%pause%
      pmode := (pmode!=1 ? 1 : 0)
    }
    IfEqual,pmode,1,  continue
    MouseGetPos, mx, my
    if ((mxs-10 < mx) && (mx < mxs+10) && (mys-10 < my) && (my < mys+10))
      continue
    mxs:=mx, mys=my


77 名前:2/2 mailto:sage [2009/05/29(金) 13:24:56 ID:u1yo0xzx0]
    Loop, % (list-1) {
      IfWinNotExist, % "ahk_id " list%A_Index%
        continue
      WinGetClass, class
      If ignoreClassPattern && RegExMatch(class, ignoreClassPattern)
        continue
      WinGetPos, x, y, w, h
      mx1:=mx-x-size//2, my1:=my-y-size//2, mx2:=mx-x+size//2, my2:=my-y+size//2
      If (mx1>w || my1>h || mx2<0 || my2<0)
        continue
      WinSet, Region, 0-0 %w%-0 %w%-%h% 0-%h% %mx1%-%my1% %mx2%-%my1% %mx2%-%my2% %mx1%-%my2% %mx1%-%my1% 0-%h%
      if !Instr(clipped,list%A_Index%)
        clipped := list%A_Index% . (clipped ? "|" : "") . clipped
    }
    Sleep,50
  }
  DetectHiddenWindows, On
  Loop, PARSE, clipped, |
   WinSet, Region,, ahk_id %A_LoopField%
  list=
}

>>67
プリインスコのメーカーロゴ、エロいの持ってねぇ(´・ω・`)

78 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 13:36:25 ID:tLIgPVbp0]
最小化したときにタスクトレイにアイコン化するアプリを
タスクトレイに入った状態からアクティブ化するのは無理でしょうか?
その手のアプリ、みんなWinActiveが効きません...orz

79 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 15:06:40 ID:+GBy9qZg0]
DetectHiddenWindows, On

80 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 15:41:21 ID:tLIgPVbp0]
>>79
そんなコマンドがあったとは!
即レス本当にありがとうございます!
ほんと、ahkってなんでもできるんですねー




81 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 22:49:46 ID:y2qE0/Pv0]
昨晩のやつの改造版。アクティブウィンドウ以外に黒いシェードを掛ける。2K/XP用。ビデオ鑑賞にでもどぞ

Gui, +LastFound -Border +ToolWindow +AlwaysOnTop -Caption +0x02000000 -0x0CC00000 +E0x00080020
Gui, Color, 000000 ; ここで色をかえてもおk
WinSet, Transparent, 200 ; 透明度(1-255)
Gui, Show, NA x0 y0 w%A_ScreenWidth% h%A_ScreenHeight%
SetTimer, Timer1, On
Timer1:
SetWinDelay,-1
WinGetPos,x,y,w,h,A
x1:=x, y1:=y, x2:=x1+w, y2:=y1+h
If (lx1==x1 && ly1==y1 && lx2==x2 && ly2==y2)
return
Gui, +LastFound
Gui, +AlwaysOnTop
WinGetPos,,,ww,hh
WinSet, Region, 0-0 %ww%-0 %ww%-%hh% 0-%hh% %x1%-%y1% %x2%-%y1% %x2%-%y2% %x1%-%y2% %x1%-%y1% 0-%hh%
lx1:=x1, ly1:=y1, lx2:=x2, ly2:=y2
Return


82 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 23:08:59 ID:IKD+qEU60]
おもしろいな
解除はどうやるんすか?

83 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/29(金) 23:13:54 ID:y2qE0/Pv0]
タスクトレイw

84 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/30(土) 06:17:34 ID:84IZ3aep0]
>>74-75
2つ以上ダメなんですね。以外に不便…。というかホットキー扱いじゃないのかな
ありがとうさんです。試してみまする

85 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/30(土) 13:39:34 ID:pp0cJZID0]
>>36のSQLite_GetSelect関数ってフィールドの数が10個以上あると変数重複するよね?
例えばLV111の場合11行目の1列目、1行目の11列目で重複みたいに
俺が頭悪いだけ?

86 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/30(土) 14:25:44 ID:yxno/H630]
それが仕様だと思うよ。
> %接頭辞%%行番号%%列番号% := 値
って風に代入してるし

> %接頭辞%_%行番号%_%列番号%
とかにすれば平気なんだろうけど

87 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/30(土) 14:40:43 ID:pp0cJZID0]
なるほど。
ライブラリいじらないとだめか。

88 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/31(日) 01:53:08 ID:jQyIS5jG0]
>>36関連でわからないことがあったので便乗して質問します

SELECT * FROM test WHERE 〜

というところで、 ' が含まれる項目をうまく探し出してくれません
autohotkey 特有のエスケープ処理か何かのせいか?と思ったのですが
いまいちよくわかりません

' が含まれる項目を処理するときに同じような症状に出会った人はいますか?

89 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/31(日) 20:18:32 ID:g4+Xfjng0]
引数の基準フォルダと対象ファイルパスを元に相対パスを返す関数ってありますか?

90 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/31(日) 21:26:54 ID:3pSi+qBb0]
Path_RelativePathTo(From,atrFrom,To,atrTo)
; 相対パスを作成
; From : ベースパス
; To : 相対にするパス
; atr : ファイル属性を指定
; ディレクトリ 0x10 (FILE_ATTRIBUTE_DIRECTORY)
; ファイル 0x20 (FILE_ATTRIBUTE_ARCHIVE)
{
VarSetCapacity(t,260,0)
DllCall("SHLWAPI.DLL\PathRelativePathToA", Str,t , str,From, Uint,atrFrom, str,To, Uint,atrTo)
return t
}

Path_CommonPrefix(p1, p2)
; 2つのパス名の先頭から共通するディレクトリ名を取得する
{
VarSetCapacity(t,260,0)
DllCall("SHLWAPI.DLL\PathCommonPrefixA", Str,p1, Str,p2, str,t)
Return t
}



91 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/05/31(日) 21:59:11 ID:g4+Xfjng0]
>>90
ありがとうございます
無事できました

92 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/01(月) 01:21:39 ID:nMoGzHYT0]
AutoHotkey v1.0.48.03.L30

93 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/01(月) 15:00:23 ID:KxOltqgo0]
変数%aaa%の中に変数%bbb%を組み込みたいです。
%aa%bbb%%では駄目でした。
どうすれば出来ますか?


94 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/01(月) 15:57:15 ID:nMoGzHYT0]
「%aaa%」と書いた場合、
 ・コマンド内は、変数に格納された値
 ・式や関数の中では、%〜%を展開した文字列が名前となる変数
となるけど、
「組み込みたい」の意味が分からないから具体例で。

95 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/01(月) 16:27:57 ID:5kiaGP5n0]
よくわからんが多分 Transform,Deref, String あたりではないかとエスパーしてみる

96 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/01(月) 16:33:11 ID:9Rwj7uYk0]
流行るページを参考にしたのですが、わからない箇所があるので教えてください

Ctrl-x,Ctrl-sで保存(Ctrl-S)の実行、Ctrl-sで検索(Ctrl-f)の実行をしたいと思っています
ところが下記のスクリプトでCtrl-x,Ctrl-sを実行すると、Ctrl-fが送られてしまいます

このように置き換え対象のキーも別のキーに置き換えてしまっている場合、どのように対処すれば意図した動きになるのでしょうか?

^x::
    Transform,CtrlS,Chr,19
    Input,InputChar,C I M L1 T1,{ESC}
    If InputChar=%CtrlS%
        Send,^s
Return

^s::
    Send,^f
Return

97 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/01(月) 17:02:21 ID:nMoGzHYT0]
いろいろやり方はあるけど、^s:: のところでA_PriorHotkeyで分岐すりゃいいんじゃないの

^x::Return
$^s::
 If A_PriorHotkey = ^x
  Send, ^s
 Else
  Send, ^F
 Return

98 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/01(月) 17:36:14 ID:9Rwj7uYk0]
>>97
試してみたところ意図した動きになりました。感謝です!
^x::Returnでキーの動きを無効化しても組み込み変数に値は入るんですね
勉強になりました。ありがとうございました><
2ストロークで設定しているキーバインドが多く、書き換えが面倒なので、
勉強もかねて関数をつくってやってみたいと思います

99 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 18:58:42 ID:xwgWw2A40]
対象窓で、文字入力中or変換中なら1を、変換候補窓が出ているなら2を、それ以外なら 0を返す。
ATOK2007とMS-IME8.1で確認。クラス名がバージョンの数値違いだけなら別verでも通用するかも。

IME_IsConverting(winTitle="A") {
 hwnd:=WinExist(winTitle)
 WinGet, pid, PID, ahk_id %hwnd%
 tmm:=A_TitleMatchMode
 SetTitleMatchMode, RegEx
 ret := WinExist("ahk_class ATOK\d+Cand|imejpstCandList\d+ ahk_pid " pid) ? 2
  : WinExist("ahk_class ATOK\d+CompStr|imejpstcnv\d+ ahk_pid " pid) ? 1
  : 0
 SetTitleMatchMode, %tmm%
 return ret
}


100 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 19:44:30 ID:rJZ7jJ5w0]
>>99
昔から何度も質問に出てましたよね。IMEで変換中かどうかを知る方法。
ついに実現できる人がいたとは。
さっそく試してみます。



101 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 19:56:13 ID:osRS2DeA0]
>>99
おおーありがとう
これがあったら無変換にIMEOFF、変換にONにする関数割り当てられる

102 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 20:18:55 ID:ftcLo5Gk0]
けっこう既出な気がするけど
他のIMEでもウィンドウクラス一覧表示するスクリプト書けば怪しいクラス名が分かる
注意する点はWinActiveで判断するんじゃなくExistで判断するところ

103 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 20:23:03 ID:xwgWw2A40]
BOOLを返さないのに Is〜 とは変な名前だったorz。好きに替えてくらはい。
自分が使ってるIMEしか調査してないから、
SKK、VJE、WXG、松茸、その他IMEへの対応は出来ないので自分で追加してくれ。

あああ ← 入力窓の上で MouseGetPos,,,hwnd して hwndからクラス名をとって正規表現に追加
 ̄ ̄ ̄

|愛   | ← 候補窓の上で MouseGetPos,,,hwnd して hwndからクラス名をとって正規表現に追加
|亜依  |
|あい  .|
|藍   |
| :   .|
 ̄ ̄ ̄

104 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 20:30:06 ID:xwgWw2A40]
>>102
おっしゃるとおりで

#IfWinNotExist, ahk_class 入力窓|変換窓
vk1Csc079::IME_Set(!IME_Get())

とかのほうが楽ではある

105 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 21:37:03 ID:Kr4mD/Ke0]
MS-IME2000までなら
WinExist("ahk_class msime")
でいけそう

106 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/02(火) 22:31:33 ID:P6oxe9UG0]
autohotkey以外の任意のウィンドウをタスクバーから消す方法ってありませんか
toolwindow作ってSetParentすればいいのかなと思ったけど同じプロセスじゃないとできないみたいで

107 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/03(水) 09:37:26 ID:fHhPIlcJ0]
ここのTrayIcon.ahkの中にあるTaskButton.ahk
www.autohotkey.com/forum/topic17314.html

108 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/03(水) 09:43:09 ID:cMFaAOnD0]
実行中のスクリプトのファイル名を取得する方法を教えてください。
実行中と同じスクリプト名のiniファイル読み込みにしようしたいです。

109 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/03(水) 09:58:06 ID:fHhPIlcJ0]
組み込み変数 A_Script○○○

110 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/03(水) 11:03:28 ID:cMFaAOnD0]
>>109
ありがとう。



111 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 00:17:18 ID:QQ0YUUDy0]
任意のアプリケーションのメニューバーを非表示にする方法ってあります?
AU3_Spy.exe で調べてもメニューバーの Class_NN なんかが判らなくて…。

112 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 01:01:23 ID:duXuCFzc0]
クラスが取れないのは昔ながらのメニュー(メモ帳、電卓など、Ahkもそう)、非クライアント領域と言われているところ。

^F12::
 hwnd := WinExist("A")
 hMenu := DllCall("GetMenu", "UInt", hwnd, "UInt")
 If (hMenu) {
  DllCall("SetMenu", "UInt", hwnd, "UInt", 0)
  Sleep, 2000
  DllCall("SetMenu", "UInt", hwnd, "Uint", hMenu)
 } else {
  MsgBox, Menu not found
 }
 return

ttp://msdn.microsoft.com/ja-jp/library/cc364679.aspx
ttp://msdn.microsoft.com/ja-jp/library/cc411047.aspx

113 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 01:16:22 ID:6AUpOLN+0]
処理が終わるまでの間を進歩状況を表示させたいんだけど
Gui,Add,Progress見つけたけどできそうなのか使い方がさっぱりわからなかった

114 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 01:49:52 ID:QQ0YUUDy0]
>>112
おおお、ありがとうございます!助かりました

115 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 08:17:20 ID:SXDlYEUH0]
>>113
ttp://www.autohotkey.com/docs/commands/GuiControls.htm#Progress

Progress, R0-200 W400 H70 Hide
Progress, Show
Loop, 200
Progress, %A_Index%, Number:%A_Index%, Counting..., Title
Progress, Off

Gui, Add, Progress, W300 h10 cBlue vMyProgress
Gui, Add, Button, Default, Start
Gui, Show
return

ButtonStart:
Loop, 300
GuiControl,, MyProgress, %A_Index%
return


116 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 09:19:45 ID:dyra48CT0]
マウスの下のWindowTitleを取得する方法を教えてください。

117 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 11:24:00 ID:39eHpjNw0]
>>116
lukewarm.s101.xrea.com/commands/WinGetTitle.html

#Persistent
#SingleInstance, force
SetTimer, MouseShitaWindowTitle, 50
Return

MouseShitaWindowTitle:
MouseGetPos, , , HWND
WinGetTitle, Title, ahk_id %HWND%
Tooltip, %Title%
Return


118 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 15:38:47 ID:dyra48CT0]
>>117
助かりました。ありがとうございました。

119 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 16:13:54 ID:6AUpOLN+0]
>>115
処理完了までの時間がどのくらいなのか取得したいんで
Loop,200だか300なんて固定じゃしょうがない

120 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 16:31:03 ID:39eHpjNw0]
>>119
固定も何も>>115のサンプルを応用すればいいよってことじゃないのかい。




121 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 16:48:28 ID:SXDlYEUH0]
>>119
すまなない
何が分からないか分からない
完了時間の予測なら、全体量と1回の処理時間から自分で毎回計算するしかないと思う

122 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 17:06:34 ID:6AUpOLN+0]
なるほど
そういうことならしょうがないですね
ありがとう

123 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 17:40:27 ID:TWv1vctD0]
具体的な秒数を事前に出すのはAHKに限らずむづかしいと思うけど。
ダミー進捗が嫌なら、メクラループやめて具体的気に処理が終わるたびに更新すればいいだけっしょ

やらなきゃいけない処理の数(分母)と、そのうち何個目が終わった(分子)か、で
進捗グラフ更新してくのがProgressなんだから

124 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 19:36:13 ID:nKWMwvxe0]
>>99
Firefox3.0.10上だと文字入力中をうまく検出できないんだけどどうしてだろう
0が返ってくる

125 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 21:14:42 ID:6pR9OPq00]
>>99-101
窓使いの憂鬱でIMEのON/OFFでキー割り当て変えられることに気づいた・・・
もしかしたらAPI一発で取得できたりして・・・
窓使いのソース見たらよいかも

126 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 22:05:15 ID:TWv1vctD0]
ん? >99がすごいって言われてんのは「IME ONかつ変換中か」を見てるからっしょ

ON/OFF状態や変換モードだけなら SendMessageのWM_IME_CONTROLでとれるよ
lukewarm.s101.xrea.com/up/file/089.zip

127 名前:99 mailto:sage [2009/06/04(木) 22:10:50 ID:duXuCFzc0]
IMEが描画する窓の存在を見てるんで、インライン描画するタイプだと検出出来ないのはしょうがない...
IE, FireFox, Office系とか、、ダメじゃんorz
でも、API一発で取れないのは数々の先人達が試みて失敗してる(スレ1で既出)

>>125
ちょっと見てみた・・・
ttp://mayu.cvs.sourceforge.net/viewvc/mayu/mayu/hook.cpp?revision=1.34&view=markup の428行目あたりから
グローバルフックでメッセージとらえているようだ。
IL (IME_Lock、 On/Off)はAPIで取得しているみたい(実質的には IME.ahkと同じ)
IC(入力中かどうか)は WM_IME_(START|END)COMPOSITION を見て内部でフラグ管理しているみたい

低水準マウス/キーボードはフックできるけど、これだとDLLが必要だぬ。俺には無理ぽ。

128 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 22:51:48 ID:hfmiG/aI0]
メールの内容を読み込んで、そこにあるフレーズで次の処理をするっていうのを作りたいのですが
何かいい方法ないでしょうか?どうにかしてメールをtxtファイルにしてFileReadで変数に読み込む
ぐらいしか思いつかないんですが

129 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 22:56:27 ID:gv6ECyM30]
ごりむちゅうで何がなにやら。
次の処理が何かわからんのに、答えるのは難しい。

130 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/04(木) 23:23:25 ID:hfmiG/aI0]
>>129
情報不足過ぎですみません
家で常時動いているPCにメール送って、PCを遠隔操作したいんです。
具体的には本文にAいう単語があったら、そのあとの文をファイルとして保存するとか
Bという単語があったらaというソフトを起動するとかです。



131 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 00:13:11 ID:e7k/ar4E0]
>>126
IME.ahkでは Office 系の IME の On / OFF を
正しく取得出来なかったと思う
改善された?

132 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 01:31:04 ID:T3bmGBtQ0]
ウチでは IME.ahkで Office 系「で」 IME の On / OFF を正しく取得出来る

133 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 02:44:19 ID:fBYNAlWU0]
>>130
常時起動ならリモートデスクトップでいいんでないの?
それとも携帯からかな?
メールでやるなら、面倒くさそうだね。

134 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 10:57:01 ID:TiIrn5XK0]
>>128
>どうにかしてメールをtxtファイルに
あるかどうかわからないけど、ログをテキストで保存してるメーラーを使えばいいんじゃないか。
今見てるメールに対して処理をしたいだけなら、スマートではにけどCtrl+A & Ctrl+Cで本文を内容読めばいい

135 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 12:30:07 ID:TL25cwxb0]
POPなりIMAPのプロトコルが分かるなら英語のフォーラムにあるWinSockのライブラリ使えば
メールをファイルに落とさなくても直接接続して処理できるけど、エラーハンドリングなどかなり面倒。

次点は、コマンドラインレベルのクライアントを探して連携するとか。
POPならこういうやつとか>ttp://www.codeode.com/popclient/index.html

普通のWindowsのMUAでも、大抵は開けば普通にtextで読めるからそれでもいいかも。
メール毎に個別にファイルに保存するやつの方が楽だとは思うけど。

136 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 12:38:48 ID:gplHJn2c0]
スレどころか板違いだが、sshで入れるようにすると楽なんじゃないかな。
携帯用のクライアントアプリもあるみたいだし ttp://mutil.jp/。
鯖にするのはリ便利さと管理コストのトレードオフだけど。

ahkでやるならメーラによると思うけど、メールデータをテキストそのままで
保存してるメーラも結構あるんでファイル監視でいくのもアリ。

現段階でメールのヘッダと本文の解析の仕方を知らないなら、敢えてメールチェッカ入れて
新着通知の窓が出るのを監視してその本文を取得ってのもありかも。

あとはBASP21あたりで自前でPOP3鯖見に行くとか。。。

137 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 13:58:03 ID:SxfMtifS0]
出先からメールで自宅のPCを操作できるソフトて結構あるような気がするんだが

138 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 19:52:28 ID:BSIYPVRTO]
TaskTrayIcon.ahkを眺めてたんだが、
クリックされたトレイアイコンの番号は取得できないのかな?

139 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 19:56:05 ID:esdfKZUa0]
出先から指定ラベル実行できたらちょっと面白いな

140 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 20:40:42 ID:O6B2s5Qx0]
>>133,134,135,136,137
レス遅れてすみません。携帯は焼かれているもので
いろいろな手段を教えてくださってありがとうございます。
じっくりググって作りたい物を作ってみます。また行き詰ったら質問に来るかもしれません
そのときはよろしくお願いします



141 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/05(金) 23:04:28 ID:NwioFG9O0]
z::yのようにリマップし、alt+zとやると、
余計なCtrlが入力されます。なぜでしょうか。

Key history
74 03F u 0.08 F5
A4 038 d 2.25 Alt
5A 02C h d 0.05 Z
59 015 i d 0.00 Y
A4 038 u 0.16 Alt
A2 01D i d 0.00 Ctrl
A2 01D i u 0.00 Ctrl
5A 02C h u 0.03 Z
59 015 i u 0.00 Y
74 03F d 0.53 F5


142 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/06(土) 19:35:48 ID:RpRz7vLw0]
Guiでボタンを押すとListBoxが更新されるようにしたいのですが、
Gui, Add, ListBox, vList,
Gui, Add, Button, gTest1, Button1
Gui, Add, Button, gTest2, Button2
Gui, Show,
Return

Test1:
GuiControl,, List, test||..
Return
Test2:
GuiControl,, List, hoge|..||
Return
これだとリストの末尾に追加される形になってしまいます。
リストを入れ替えるようにするにはどうしたら良いでしょうか。

143 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/06(土) 19:44:21 ID:nz9UkNk/0]
先頭にデリミタ。
GuiControlの頁を要再読。

144 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/06(土) 20:09:54 ID:RpRz7vLw0]
>>143
即レスありがとうございます。
見落としてました...orz

145 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/07(日) 03:46:36 ID:6gUtZr/R0]
しつもーん。
指定アプリ上でzを押した時、aの動作→bの動作→cの動作→aの動作→bのry
と言った事をやりたいんですが、どう記述したらいいですか。。。

#IfWinActiveを使うって事と、個別の動作(sendでいくつかキーを送るだけ)は分かってできたんだけど、
それを同じキーで繰り返したいです。

ご教授願います。。。

146 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/07(日) 04:20:29 ID:64k7gMDb0]
>>145
質問がいまいちわかりにくいけど、こういうこと?

#IfWinActive 指定アプリ
z::
Loop,n ;nは繰り返したい回数
{
aの動作
bの動作
cの動作
}
Return
#IfWinActive

147 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/07(日) 09:24:01 ID:tkyz3VGy0]
同じキーで
1回目押したら aの動作
2回目押したら bの動作
3回目押したら cの動作

って意味じゃなかろうか

148 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/07(日) 09:37:04 ID:ZORhP0Gy0]
z::
count++
if(count=1){
tooltip, aの動作
}else if(count=2){
tooltip, bの動作
}else if(count=3){
tooltip, cの動作
count=0
}
keywait, z
Return


149 名前:145 mailto:sage [2009/06/07(日) 16:40:24 ID:6gUtZr/R0]
>>146
質問がわかりにくくてすいませんしたっ_| ̄|○

>>147
そうです。その意味です。。。

>>148
希望通りの動きが出来ましたっ!
ありがとうありがとう(つД`)

リファレンス読んで処理内容を解読できるようにがんばってみます(´・ω・)、

150 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 01:08:14 ID:mPjxZMt70]
AutoHotkey.ahkの書き換え、再起読み込み
を自動化した。
Aキーを押したらA用途のAutoHotkey.ahkを
Bキーを押したらB用途のAutoHotkey.ahkを
読み込んでそれ用の設定になるので、便利。
perl使って書き換えしてるだけだが。



151 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 02:18:59 ID:VN+15O/CP]
何故ahkでやらない

152 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 10:20:12 ID:aCqJ4TQP0]
流行らせるページの中の人、ネトラン関係者になってたのか

153 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 10:20:50 ID:Gscpj3Zd0]
書き換えって、毎回 マイドキュにある AutoHotkey.ahkを削除だのリネームだのしてるのか?
スクリプトは別に「AutoHotkey.ahk」の名前じゃなきゃ動かないわけじゃないし
多重起動もできるんだが。

154 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 15:15:28 ID:mPjxZMt70]
>>153
AutoHotkey.ahkの指定箇所A〜B部分をキー一発で交換します。
マウスのM、X1,X2ボタンやテンキー機能は衝突するしな。
複数キーバインドで使い分けってめんどいし。なんかのキー押しながらマウスのX1ボタン押すっても・・

155 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 16:48:40 ID:VN+15O/CP]
何によって用途が違うのか知らないけど、
ホットキーラベル内に条件分岐作ればいいだけの話じゃ

156 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 16:53:37 ID:mkWh48Pk0]
----- ScriptA.ahk ------
#include common.ahk
; 以下A用キー定義

----- ScriptB.ahk ------
#include common.ahk
; 以下B用キー定義

----- common.ahk ------
A::Switch("ScriptA.ahk")
B::Switch("ScriptB.ahk")
Switch(script){
Run,"%A_AhkPath%" "%A_ScriptDir%\%script%"
ExitApp
}
; 以下共通用キー定義

157 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 17:01:01 ID:NOGmzyJY0]
AutoHotkey_L 使えば楽

158 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 18:08:44 ID:WA7XkMG90]
ahkで起動するのとexeに変換して起動するのではどっちが高速ですか?

159 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 18:26:19 ID:mkWh48Pk0]
exeの場合は、起動時に解凍する処理が入る
その後はどっちも同じ

160 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 19:42:44 ID:GcGcBK5q0]
すいません教えてください。
Loop, Read, exclude.txt ; 削除したい行を改行区切りで列挙したファイル
{
 match := A_LoopReadLine
 Loop, Read, %1%, *temp.txt
 {
  if (A_LoopReadLine != match)
   FileAppend, %A_LoopReadLine%`n
 }
 FileMove, temp.txt, %1%, 1
}
こんな感じでマッチした行を削除したいのですが、元の場所に改行が残ってしまいます。
削除した行だけ改行を詰めるにはどうやったら良いでしょうか。
FileReadして Loop, Parse, var, `n, `r, でも同じでした。



161 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 19:50:53 ID:WA7XkMG90]
>>159
なるほど
ありがとうございました

162 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 20:48:11 ID:NOGmzyJY0]
>>160
ループの入れ子が想定と逆だったから分かりづらかった。
それと、ファイルI/O多すぎじゃない?
どっちのファイルも巨大(100M〜)ならしょうがないけど、
どっちかをメモリに積んだ方がいいと思う。

俺ならこうする。
FileRead, ExcludeLines, *t exclude.txt
ExcludeLines = `n%ExcludeLines%`n
Loop, READ, src.txt, output.txt
 If InStr(ExcludeLines, "`n" . A_LoopReadLine . "`n")==0
  FileAppend, %A_LoopReadLine%`n

163 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/08(月) 21:55:55 ID:GcGcBK5q0]
>>162
ありがとうございます。
うーm、しかし他の場所の改行も削除されてしまうYO

FileRead, ExcludeLines, *t exclude.txt
ExcludeLines = `n%ExcludeLines% ;改行残る
Loop, READ, src.txt
{
 if InStr(ExcludeLines, "`n" . A_LoopReadLine . "`n")==0
  var = %var%`n%A_LoopReadLine%
 else
  count = %A_Index%`,%count%
}
StringTrimLeft, var, var, 1
StringTrimRight, count, count, 1
Loop, Parse, var, `n, `r
{
 if A_Index not in %count%
  FileAppend, %A_LoopField%`n, output.txt
}
;FileMove, output.txt, src.txt, 1
return
こんなんしか思いつきません><;

164 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 18:41:24 ID:wStbLZev0]
Hayateというフリーソフトでキーのリピート速度やリピート開始時間を変えても
AutoHotKeyのホットキーラベルを介すとデフォルトのリピート速度になってしまいます
 ex) Down:: Send, {Down}
Hayate側のキーリピート速度でホットキーラベルを実行する方法はないでしょうか
ちなみにHayateというフリーソフトは検索してもなかなか出てこないですがfrozenlib.net/app.htmlにあるものです

165 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 18:50:30 ID:Ezplb6lV0]
SetKeyDelay
SendやControlSendコマンドでの1キーごとに挿入される間隔を変更

166 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 18:56:50 ID:wStbLZev0]
SetKeyDelayを小さく設定することは試したのですがキーリピートが開始されるまでの時間が変化無しです

167 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 19:12:29 ID:Ywd4Dynt0]
SendPlay

168 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 19:31:21 ID:wStbLZev0]
試しに以下のように設定してみましたが改善されませんでした
SetKeyDelay,-1,-1
SendPlay, {Down}

SendPlay以外も一応試しましたがうまくいきませんでした
あきらめるしかないですかね

169 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 19:35:48 ID:N+aijEuz0]
その何とかってのは知らないけど、仕組み的に両立は無理なんじゃないのかね

170 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 19:57:24 ID:wStbLZev0]
そうですか。残念
ありがとうございました



171 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 21:58:14 ID:kA+0+7DI0]
>>162
ごめんなさい163です。すんごい初歩的な所で勘違いしてました。
>>162のでバッチリです。本当にごめんなさい

172 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/09(火) 22:18:00 ID:o631qgYJ0]
>>160
perl使えばいいよ。2GBのテキストでもperlなら処理できる。

173 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/10(水) 20:49:55 ID:i0OR+VsR0]
キーの取りこぼしが生じるときには
どのパラメーター設定をいじればいいのでしょうか
現在この5つを設定しています

SetWinDelay, 0
SetControlDelay, 0
SetKeyDelay, 0
SetBatchLines, -1
SendMode Input


174 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/10(水) 21:42:19 ID:tNiIalHL0]
キー入力イベントの取りこぼしだとしたらどうしようもない(原理的には無いはず)
GetKeyState などでの状態取得で取りこぼしがあるのだとしたらスクリプトが悪い

もしくは AutoHotkey_L の #If でものすごく重い関数呼んでいるとか

175 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/10(水) 22:03:41 ID:i0OR+VsR0]
>>174
ふむふむ
スクリプトを見直します

176 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/10(水) 22:11:54 ID:OK2G++4p0]
ホットキーラベルを実行した後そのホットキーの修飾キーが押され続ける現象がよくあります
根本的に起こらなくすることは出来ないのでしょうか
もしくは発生しやすいホットキーの設定の仕方とかあったりするのでしょうか

過去ログにあった押され続けていることをツールチップで知らせる対策は一応やってます

177 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 13:54:37 ID:RYxlht2m0]
ホットキーの修飾キーが押されっぱなしになる現象は
ウチの環境では発生した記憶は無いけど
考えられる可能性としてCPU負荷が高いときに発生してるのかな?
CPU負荷が高いときは各Delayを長くしたり、一時的に停止させたりすると発生率が下がるかも。
CPU使用率を取得するには流行らせるページ(↓)の「システムモニタ用関数群」を使うと簡単
lukewarm.s101.xrea.com/myscripts/index.html

178 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 20:40:44 ID:nqDZEveb0]
>>176
自分も <+WheelUp::ShiftAltTab
を使った後によくShiftが押されっ放しになります。
CPU負荷は10%くらいでも起きますね。なんでだろう

179 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 20:53:04 ID:Jqjy1sE50]
Safari4を使われている方は、御存じだと思うのですが
このブラウザはリンクを新しいタブで開くのに
control + クリックの操作となり非常に不便でして
AutoHotkeyのスクリプトで、リンクをクリックだけで
タブを開く事は可能でしょうか

180 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 21:50:16 ID:tOyf+Vjo0]
状態に応じてタスクトレイアイコンが3種類に変化するスクリプトを
コンパイルしてexe化することを考えています。
ahk2exeでコンパイルするときにiconを埋め込むことができますが、
ここで3種類のiconを埋め込むことも可能なのでしょうか?
外にiconを用意せずに、内部に埋め込んで利用するにはどうすればよいのか
お知恵を拝借したくて参りました。どうぞよろしくお願いします。



181 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 23:40:41 ID:Act1V8T40]
>>176
>過去ログにあった押され続けていることをツールチップで知らせる対策
どういうものですか?
興味があります。

182 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 23:45:35 ID:wKap2oAj0]
>>181
これです

782 :名無しさん@お腹いっぱい。:2008/11/27(木) 01:43:58 ID:pOwnMABe
よく分からんけど、 Ctrl とかが押しっぱなしになる。解決はよく分からんが対処法としてアラートだすようにした。
if書きたくないから、三項演算子だいすきif書きたくないから、三項演算子だいすき

#SingleInstance
#Persistent
keys = Ctrl|Shift|Alt|LWin|RWin
alertDur = 3000 ;(ms)
SetTimer, Alerter,200
return
Alerter:
alert =
Loop, PARSE, keys, |
{
%A_LoopField% := !GetKeyState(A_LoopField) ? 0 : !%A_LoopField% ? A_TickCount : %A_LoopField%
alert .= (%A_LoopField% && (A_TickCount - %A_LoopField%) > alertDur) ? "[" A_LoopField ": " (A_TickCount - %A_LoopField%) "ms]" : ""
}
Tooltip, %alert%
return

183 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 23:47:40 ID:Act1V8T40]
>>182
ありがとうございます。
勉強になります

184 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/11(木) 23:56:12 ID:g3bI05W70]
WheelScroll.ahk の作者さん、見てらっしゃいますかー? (´∀`)ノ
前スレ809でご相談した、 マルチモニタで座標がマイナスのときスクロールしない件、ようやく調査できました。
どうやら Firefox と Google Chrome に特有の問題?だったようです。

> 1.スクリプト殺したノーマルの状態で通常のホイールが効いているか
Yes

> 2.ToolTip,mx=%mx% my=%my% とか追加して値がマイナス値になってるかどうか
OK

> 3.互換モード(WM_SCROLL)で動かした場合も動かないのか
アプリによって違う
[初期設定]
OK: Word 2007, Excel 2007 (ClassNN=XLDESK1), VBE, Explorer, Hidemaru,
NG: Firefox 3.0.10, Google Chrome 2.0,
[互換モード] ※
OK: Word 2007, Excel 2007, VBE, Explorer, Hidemaru, Google Chrome 2.0,
NG: Firefox 3.0.10 (プラス座標でも動かない),

※「if (!scmode)MOUSEWHELL() 」の部分をコメントアウトして「SCROLL()」だけが使われるようにした

> 4.管理人さんのホイールリダイレクト で正常に動くかどうか
OK: Word 2007, Excel 2007 (ClassNN=XLDESK1), VBE, Explorer, Hidemaru,
NG: Firefox 3.0.10, Google Chrome 2.0,

というわけなのですが、何かおわかりになりますか?

185 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/12(金) 09:13:09 ID:xwya5VPS0]
>>182
三項演算子を使えるのか
AutoHotkeyでは使えないものだと早とちりしていた


186 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/12(金) 20:35:06 ID:UekHVJ+l0]
>>179
済みません、このスクリプトの作り方を
ご存じの方、教えて頂けないでしょうか
宜しくお願いします。

187 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/12(金) 21:03:44 ID:bITW0WaS0]
それってSafariに限らずIE7以降やFirefoxでも一緒なのでは…。人間側が対応すれば?

どうしても作りたいなら、単に左クリックにCtrl+左クリックのショートカット割り当てて
常駐させればいいんじゃね?

188 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/12(金) 21:09:54 ID:36hO0FeI0]
IEはデフォでミドルクリック新タブに対応したけど
Safariはまだなのか

189 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/12(金) 21:20:51 ID:ZrrVWnQk0]
>>184
作者とは関係ないけど、

MOUSEWHELL関数内の

; lParam: XY座標
lpalam := (my << 16) | mx

って所を

VarSetCapacity(tmp, 4), NumPut(mx, tmp, 0, "Short"), NumPut(my, tmp, 2, "Short")
lParam := NumGet(tmp, 0, "UInt")

に変えてみたら動くかな?

190 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 00:15:39 ID:dhbOZypN0]
>>184
どもです。XPSP2で現象確認しました。
>189氏でも突っ込み入ってますがバッファサイズと符号の問題っぽいですね。
ただ、VarSetCapacity() & NumPut()は自分もやってみたんですが上手くいかず。
泥臭いけど↓の記述でいけました。

; lParam: XY座標
my += (my < 0) ? 0xFFFF : 0
mx += (mx < 0) ? 0xFFFF : 0
lpalam := (my << 16) | mx

初めはアプリ固有の問題かと思ったけど、問題が起こってたのはlParamの値を
ちゃんと見てるアプリだったですね。
(逆に言うとほとんどのアプリはlparam値をデタラメに指定しても動くんだな)

いづれ修正版を上げ直したくはあるんですが、色々手を入れたいとこがありすぎるんで
ちょっといつになるかわからんです。
とりあえず当座は個々でのモデファイで対応をお願いします。



191 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 08:25:43 ID:FZfPnSVw0]
AutoHotKeyではないあるウィンドウに
ファイルがドロップされたことを知りたいんですが何か方法ありませんでしょうか

192 名前:名無しさん@お腹いっぱい。 [2009/06/13(土) 09:59:23 ID:tz1EHr/W0]
三項演算子の話が出ていたので便乗して質問します

if (key = "q" or key = "w" or key = "e")
{
key = ok
}
の条件の部分を
if key in q,w,e
{
key = ok
}
のように省略化して三項演算子を書きたいのですが無理でしょうか

193 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 10:20:05 ID:zUCF2v8d0]
>>191
他のウィンドウへのD&DはWM_DROPFILESを検知しないとダメかも
hook用のdllが英語のフォーラムにあったような記憶

>>192
一般論で言えば無理だけど、
instr("qwe",key) ? "ok":key
みたいなことは書けると思う

keyが複数文字なら instr("_q_ww_ee_","_" . key . "_") ? "ok":key とも書けるけど、
選択肢の数によっては普通に or で結んだ方が速いかも

194 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 11:49:58 ID:tz1EHr/W0]
>>193
どうも
この手は思いつきませんでした

195 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 13:15:03 ID:TEt0QNw/0]
高級なツールチップ表示関数を作ろうと思ってます
ツールチップ番号ごとに独立した表示時間を持たせたいのですが
作り方が分かりません
ツールチップ削除用ラベルも関数内で完結させようと思ってます
とりあえず現時点のツールチップ削除機能がない関数です↓

ToolTip(msg, dur=2000, tipNumber=20, x="88%", y="95%")
/******************************************
* スクリーンの絶対座標にツールチップ表示
*
* @param msg - 表示メッセージ
* @param dur - 表示時間(ms)
* @param tipNumber - ツールチップ番号(1~20)
* @param x - スクリーン座標。絶対値または%指定が可能
* @param y - スクリーン座標。絶対値または%指定が可能
*******************************************
*/
{
ifinstring, x, `% ; xに%が含まれていた場合の座標を算出する
{
StringReplace, x, x, `%
x := A_ScreenWidth * x / 100
}
ifinstring, y, `% ; yに%が含まれていた場合の座標を算出する
{
StringReplace, y, y, `%
y := A_ScreenHeight * y / 100
}
CoordMode, ToolTip, Screen
ToolTip, %msg%, %x%, %y%, %tipNumber%
return
}

196 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 13:32:17 ID:uM8h8kxB0]
チップ番号毎に消去用のタイマ設置じゃないの

197 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 13:37:14 ID:TEt0QNw/0]
20個ラベル作るってことですか?

198 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/13(土) 19:06:14 ID:TEt0QNw/0]
とりあえずラベル20個作って望み通りの挙動になりました
ありがとうございます

199 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/14(日) 04:29:55 ID:uW112SM80]
プログラマブルテンキーのリマップで困っているのですが
VK SC Type Up/Dn Elapsed Key
------------------------------------------
A4 038 d 43.83 Alt
60 052 d 0.05 Num 0
60 052 u 0.02 Num 0
66 04D d 0.02 Num 6
66 04D u 0.00 Num 6
61 04F d 0.02 Num 1
61 04F u 0.00 Num 1
A4 038 u 0.02 Alt
こんな入力があって発動するスクリプトは可能でしょうか?

200 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/14(日) 10:26:41 ID:aFW/syKk0]
ALT押しながらテンキーの061ということでいいのかな。
前にも似たようなスクリプト貼られた気がするけど。

seq:="!Numpad0!Numpad6!Numpad1|UPUPDOWNDOWNLEFTRIGHTLEFTRIGHTba" ; 検出するキーシーケンス
endkeys:="{Backspace}{Enter}{Left}{Right}{Up}{Down}{Delete}{Insert}{Escape}{Home}{End}{PgUp}{PgDn}"
. "{Numpad0}{Numpad1}{Numpad2}{Numpad3}{Numpad4}{Numpad5}{Numpad6}{Numpad7}{Numpad8}{Numpad9}"
. "{NumpadDot}{NumpadDiv}{NumpadMult}{NumpadAdd}{NumpadSub}{NumpadEnter}"
. "{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Pause}{Break}{PrintScreen}"
. "ba" ; endkeysには検出するキーを含める
hist:=""
Loop
{
Input, var, L1 V, %endkeys%
if ErrorLevel=Max
hist:=""
else if InStr(ErrorLevel,"EndKey:")
{
hist.=GetKeyState("Alt","P") ? "!":""
hist.=SubStr(ErrorLevel,8)
}
Loop,Parse,seq,|
if ( SubStr(hist,StrLen(hist)-StrLen(A_LoopField)+1) = A_LoopField )
Gosub % A_LoopField . hist:=""
}

!Numpad0!Numpad6!Numpad1:
TrayTip,, %A_ThisLabel%:%A_TickCount%
return

UPUPDOWNDOWNLEFTRIGHTLEFTRIGHTba:
TrayTip,, FullPower:%A_TickCount%
return



201 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/14(日) 16:34:29 ID:uW112SM80]
>>200
ありがとうございます。
参考にさせて頂きます。

202 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/14(日) 23:30:20 ID:DC/htVT+P]
つい2,3日前に,このツールの存在を知りました。

いままで自分で欲しかった,
 1 ブラウザやエディタ上で範囲選択
 2 ホットキーでポップアップメニュー
 3 Firefoxに送る,EBViewに送る,Googleで検索,Wikiで検索……
などの機能を持つスクリプトが,見よう見まねで書けたんですが,
(かなり細かくTPO次第の条件分岐になるので,自動認識はさせない方針)
ただ一つ「IE8にURLを送る」だけがうまくいきません。

仕事でどうしてもIE8が必要なので,あとここだけ動くと
言うことなしなんですが,何か良い手はありませんでしょうか。

Run, C:\Program Files\Internet Explorer\iexplorer %Clipboard%

は駄目でした。

203 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 00:27:40 ID:t4Kz1iJG0]
#1:: run, "C:\Program Files\Internet Explorer\iexplore.exe" "%clipboard%"

http::// はいらんでしょ。そういう使い方してるんだったらごめん。

204 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 00:37:59 ID:DfoIckCV0]
>>202
IE8をインストールしていないけど
iexplorer.exe ではなく iexplore.exe じゃないかと。

それとパス中に含まれる半角スペースは %A_Space% に置き換えた方が確実に動くと思う
Run, C:\Program%A_Space%Files\Internet%A_Space%Explorer\iexplore.exe %Clipboard%

205 名前:202 mailto:sage [2009/06/15(月) 00:54:56 ID:jQythkfVP]
>203 さん
動きました! ありがとうございます。
http://は意図的です。仕事で使うシステムが,
どういう意図なのかhttp://抜きのURL(←毎回違う)を
送ってくるシステムなので,苦し紛れの方法です。
でもよく考えたらこのほうが(どうせ人間が選択するなら)
便利だということにも気づいて,割と気にいってます。

>204 さん
返信見たときにかなり焦りましたが,iexplorerでした。
%A_Space%の件は気づいてなかったので,
試しに203さんの解に入れ込んでみたけどやはり駄目でした。
今後は気をつけて使うことにします。ありがとうございました。


206 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 01:01:22 ID:YLFCYF1c0]
>%A_Space%
これは流石にやりすぎだと思うが
行頭行末以外で勝手にtrimされるわけじゃないし

207 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 01:14:24 ID:YLFCYF1c0]
なんかねぼけてた
AutoTrimで設定できる範囲でどうのこうのって意味ね

208 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 01:30:23 ID:cH860UQK0]
うちのは iexplore.exe だな、環境によって変わったりするものなのかw

209 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 01:42:15 ID:Rpm4wJtQ0]
ウイルスじゃねw>iexplorer.exe
昔の名残でWindowsに最初から入ってるプログラムは
基本的に8文字までになってるから

210 名前:202 mailto:sage [2009/06/15(月) 01:51:19 ID:jQythkfVP]
ホントだ,Iexploreですね……なに寝ぼけてるんだろう。
すいません。。。

ランチャー代わり&さっきのメニューだけで,
個人的にはとても満足。
次はマウス右クリック1秒でメニュー出るようにしてみます。

こういうのBasic以来だ。楽しい。



211 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 01:54:33 ID:Qf1MbZOM0]
>>205
補足
""で括るとそのままパスの文字列として扱われるので%A_Space%に置き換えると動かない。
(%A_Space%が半角スペースとして処理されない)
""で括らない場合は %A_Space% に置き換えると確実に動く。

>>206
半角スペースが区切りとして処理される場合があるので
""で括れるときはいいけど、括れないときに半角スペースを %A_Space% に置き換えてる。
前後に半角スペースやTabスペースが欲しいときにこういう方法がありますよー、ってことで。

212 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 19:01:59 ID:x31IQNlX0]
XPのデスクトップ上で、たとえば、マイコンピュータが選択されている などのように、
現在選択されているアイコンを調べる方法はないでしょうか。

F2でリネーム→コピー→キャンセル というローレベルな方法で一応動いています。

#IfWinActive ahk_class Progman

F1::
send,{F2}
sleep,5
send,^c
send,{ESC}
sleep,5
var=%clipboard%
if var=マイ コンピュータ
msgbox,マイコンピュータが選択されている
return
#IfWinActive

が、デスクトップの空き領域でこの操作をした場合、「空」になってもらいたいのに、
直前まで選択していたアイコンに強制的にフォーカスが移り、
意図しない動作になってしまいます。
それと、この方法だと「ゴミ箱」が検出できません。

もっとスマートな検出方法はないでしょうか。

213 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 19:56:45 ID:OJANZZ8e0]
ゴミ箱のショートカットをつくり、デスクトップにそれを置く。


214 名前:名無しさん@お腹いっぱい。 [2009/06/15(月) 20:16:07 ID:uHI5LVh90]
デスクトップの空き領域・ゴミ箱・普通のアイコンのそれぞれに
SHIFT+F10で個別のコンテクストメニューがだせる
あとは場合分け汁

215 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 20:45:43 ID:x31IQNlX0]
>>213
なるほど、最悪そのようにしてみます。

>>214
どうもです。Shift+F10を押した後の場合分けの方法が思いつかないのですが、
コンテキストメニューの情報をテキストで取得する方法って有りますか?

コンテキストメニューが出ているとき、最前面ウインドウから情報を
抜き取ってみましたが、デスクトップそのものの情報しか得られませんでした。

216 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 20:54:51 ID:Eq0wz7dd0]
礼も言わず「最悪そうします」とかw

217 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 21:07:27 ID:cPBSw7WG0]
>>212 COMを使う方法がある

エクスプローラの場合 ShellFolder()
ttp://www.autohotkey.com/forum/topic20701.html

デスクトップの場合 ShellDesktop()
ttp://www.autohotkey.com/forum/topic20701-30.html#203520

必要なライブラリ com.ahk, acc.ahk
ttp://www.autohotkey.com/forum/topic24234.html

218 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 21:33:37 ID:PR1YLCAc0]
>>190
ご確認ありがとうございます。
ご教示いただいた方法を試してみたいと思います (が、また数日〜十数日先になるかもしれません)。


219 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/15(月) 21:36:25 ID:x31IQNlX0]
>>217
これでイケそうです。ありがとうございます!

220 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/16(火) 20:41:51 ID:DCCAcnmU0]
タスクスケジューラに登録しているタスクの
プロパティ(っていうんでしょうか?)を開くにはどうしたらいいでしょうか?

Winキーや矢印キーを何回かSendして・・・という方法は思いつきますが
タスクを追加や削除して順番が変わると書き換えが必要になるので、
できれば直接開く方法はないでしょうか?

やりたいことは、プロパティを開いて「実行する」のチェックボックスを
トグルするスクリプトを書くことです。



221 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 10:10:53 ID:WpDhJ6Es0]
>>220
タスク名をタイプすればいいんじゃない?
Send,task1
Send,{AppsKey}r
日本語なら流行らせるページの日本語コード変換とか使えばいけるハズ。

もしくは、Task Scheduler APIでゴニョゴニョするか、
ここのataskみたいなのを使うとか
ttp://www.piedey.co.jp/softs/atask.html
atask --set タスク名 TASK_FLAG_DISABLED 1

222 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 21:09:40 ID:QQe2Egi20]
Gui, Add, ListView, w200 r10 Grid -Multi NoSortHdr AltSubmit vTEST gLV, aaa|bbb
Gui, Add, Button, gXX, &XX
Gui, Show
Return
LV:
Lv_Add("", 1, 2)
Return
XX:
Gui, 2:+Owner1
Gui, 2:Add, Button, w200 gHH, &HH
Gui, 2:Show,
Return
HH:
Gui, ListView, TEST
Lv_Delete()
Gui, 2:Destroy
Return
すみません、これでGui2のHHボタンを押したときに、Lv_Delete()が実行されず行き詰ってます。
Lv_Delete()を実行するボタンをGui1に追加してラベルに飛んだり、リストダブルクリックを
A_GuiEvent で拾ってLV: の分岐で実行するようにしても上手くいかず、
Gui1にボタンを増やしてHHを押したら、Gui1側のボタンをクリックするようにしたらなんとか動作しました。
ControlClick, Button2, ahk_class AutoHotkeyGUI
ControlClick, Button2, ahk_class AutoHotkeyGUI ;一回だけだと反応しませんでした
本当はどう書いたら良いのでしょうか。よろしくお願いします。

223 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 22:29:36 ID:6WNHPMfr0]
>>221
ありがとうございます
ataskを使うことにしました

224 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 22:31:13 ID:jrmVfvzF0]
>>222

HH:
Gui, 1:Default

225 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 22:33:03 ID:jrmVfvzF0]
>>223
一応
ttp://www.atmarkit.co.jp/fwin2k/win2ktips/582schtasks/schtasks.html

226 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/17(水) 23:28:11 ID:JeuLn3PH0]
>>176
最近これがやたらと起きてまじで困る
何がいけないのか分からない
AutoHotKeyのバグなの?

227 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 06:11:05 ID:HZFIWwq10]
>>226
Logiのsetpointつかってない?

228 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 06:44:39 ID:turBMvGA0]
>>227
マウスが路地のだからつかってる・・・

229 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 06:44:58 ID:VsQab8Ck0]
>>193
規制やら何やらで返事遅れてしまいましたが
フォーラムを漁ったらdllcallでole32\RegisterDragDropというのを使えばいいみたいでした

自分もSetWindowsHookExなどでWM_DROPFILES検知しようとしてたんですが、
Windowsって方法が色々あってむずかしいですね

230 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 07:02:32 ID:d+H9MLdZ0]
>>224
おお、これだったんですか、ありがとうございます出来ました。



231 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 07:55:11 ID:Ojx5UvYg0]
基本的なことで申し訳ないんだけど
テンプレなどのページでキーの変更などのことはわかったのですが、
どのようにして変更するかがわかりません。

たとえば「Ctrl+0」というのをF1に割りあげる場合どのソフトを起動し
どのような設定にすればいいのですか?

232 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 08:03:38 ID:ts3k5Em40]
それって結局何も分かってないってことじゃね?

233 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 09:14:25 ID:LcGKoNtW0]
>>226
マウスのサイドボタンに setpoint で shift や ctrl を割り当ててない?

234 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 13:20:46 ID:7JmYAkRj0]
LogiのMarbleMouse(トラックボール)を使ってるけど
SetPointはカスタマイズ系ソフトと競合してたのでSetPointを入れてないな。
ボタンのカスタマイズはAutoHotkeyでやってる。
MSのIntelliPointも同様のことが発生するという書き込みを見たことあるけど
使ったことが無いので解らない。

SetPoint(ユーティリティソフト)をアンインストールしても
ドライバはロジのままだったので手動で標準ドライバへ変更した記憶がある。
(標準ドライバにする必要があるかどうかは分らない。)
それとキーボードのドライバもいつのまにかロジのドライバに書き換えられてたので
それも標準ドライバに変えた。
現在のSetPointの仕様がどうなのか知らないけどね。

235 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 17:46:14 ID:CJ45cLgq0]
メーカー純正のマウスドライバって微妙だよな。
かといってXPだとOS標準じゃでチルトホイール使えないし。
せっかくWheelLeft/Rightがサポートされたのに残念だ。

236 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 17:59:54 ID:HZFIWwq10]
SetPointは、ノートPCのタッチパッド感度を勝手に初期化して加速を無効にしたり、
>>176の押しっぱなし症状が出たりと、多岐にわたって殺意が沸くほど悪影響がある。
が、こいつを入れないとせっかくのチルトボタンが有効にできないから、涙をのんで入れてる。

チルトボタンだけをF13〜F24にまわすような代替のソフトなんて、ないよね?
あったら、速攻でアンインスコしたい。

いまは、CtrlかAltが20秒以上押しっぱなしになってることを検出したら
Setpointを強制Killして、2秒後に、あらためて起動させるようにした。
けど、これも完璧な対策にはならない。

237 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 18:07:05 ID:Ojx5UvYg0]
特定のウィンドウもしくはソフトがアクティブの場合の指定などがわかりません。

Ctrl+0をF1に割り当てる場合どうすればいいですか?



238 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 19:35:35 ID:HZFIWwq10]
1年ぶりにロジクールのスレを覗いてみたんだが、

>Q. SetPointの設定が勝手にデフォルトに戻るんですが?
>A. キャンセルやクローズ(「×」)を押さないようにしましょう。
>
>Q. SetPoint 入れたくない(使いたくない)んで違う神ドライバありませんか?
>A. そんな都合のいいものがあったら是非教えてください。

添付アプリの糞加減は、なにも変わっていなかった・・・

239 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 19:41:07 ID:JJ+I/19Q0]
路地はハードは良いんだけどね

と言うかマウスユーティリティで良いものってあまり見ない。
絶対使わなそうなランチャとかイラネ。
古いInteliPointとエレコムホイールユーティリティは良いと思う

>>237
もうちょい頑張ろうぜ
ttp://lukewarm.s101.xrea.com/Examples.html

240 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 20:16:32 ID:7JmYAkRj0]
AutoHotkeyをインストールする
(インストーラーでインストールするとahkファイルの関連付けが一緒に行われる)
Autohotkey.exeと同じフォルダに 新規テキスト 作成する。
新規テキスト.txt を AutoHotkey.ini に変更する
※AutoHotkey.ini ではなく、任意の名前.ahk (ahkファイル)でもいい。
※ahkファイルならどこに作成してもOK。

テキストエディタ(メモ帳など)で Autohotkey.ini を開く。

ウィンドウの識別方法はいくつかあるけど、ウィンドウクラスで識別する方法を。
ウィンドウクラスを調べる方法はいろいろあるけど同梱されている AU3_Spy.exe を使うと簡単。
(AutoHotkey.exeと同じフォルダにある)
取得した ahk_class をクリップボードにコピーする。
例えばメモ帳のウィンドウクラスを調べると Notepad ということが分かる。

#IfWinActive, ahk_class Notepad ; メモ帳がアクティブなら
^0::F1

これを AutoHotkey.ini に貼り付けて保存し、Autohotkey.exe を実行。
(任意の名前.ahk に貼り付けて保存した場合は 任意の名前.ahk をダブルクリック)

最初の取っかかりで躓いているのだろうけど
後は>>239のリンク先に殆ど書かれている。



241 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 21:10:14 ID:Ojx5UvYg0]
いまんとこできたのがソフトの起動のみ・・・

WinTitle Mozilla Firefox
^PgDn::F2

#IfWinActive MozillaUIWindowClass
^PgDn::F2

これでできません・・・何が間違ってるのでしょうか?

242 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 21:23:46 ID:wnsiLCT/0]
F2::^PgDn
じゃないの?

ってか、とりあえず流行らせるページひととおり読もうぜ

243 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 21:49:21 ID:7JmYAkRj0]
「Ctrl+0にF1を」として書いてた・・・
「Ctrl+0をF1に」なら
F1::^0
だった

他の方も言ってるけどAutohotkeyを流行らせるページを見た?
(主に関連する解説ページはウィンドウの指定方法、ホットキー、Remap)

244 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/18(木) 21:52:18 ID:SVpnwZUO0]
>>241
Sendを使う
Remapは修飾キーを離してくれないので
それだとCtrl+F2が押されたことになっている

245 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 00:10:42 ID:nmCnAcVn0]
スレッド動作中に、ほかのキーが押されているかは「GetKeyState」で
できますが、マウスのホイールが回ったかどうかを調べる方法は、ありますか?

マウスの左右チルトを倒してスレッドを開始し、
そこでループさせながらホイールの上下入力を検知したいのですが、
ホイールの回転検出方法でつまずいてしまいました。

246 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 00:46:58 ID:IlTer6q60]
こんな感じか

~WheelUp::wheel:=1
~WheelDown::wheel:=-1

WheelLeftl::
 wheel = 0
 Loop
 {
  ほげほげ
  If (wheel!=0)
   ふがふが
 }
 Return

247 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 01:32:42 ID:nmCnAcVn0]
>>246
ありがとうございます。うまくいきました。
なるほど、1スレッドにこだわるあまり、思いつきませんでした。

248 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 01:47:13 ID:yGrRFejp0]
#IfWinActive MozillaUIWindowClass
F2::
Send ^
Send PgDn
return

これでも駄目だった・・・なぜかしらん?


249 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 01:59:10 ID:pArZgo1w0]
いいかげん解説くらい読んでくれ

250 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 13:42:58 ID:567XQ0M40]
>>248
ctrlとPgDn別々に押してるんだから動かなくて当然
あとSendのページ読めば{}やら,やら必要なのもわかるはず
それと、なんで>>242試してみないの?



251 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 18:13:40 ID:fIAAihen0]
まあ ahk_class 付いてない時点でウィンドウ判定に失敗してるんだけどな

252 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 19:46:31 ID:yGrRFejp0]
ここ2、3日騒いでいた者ですがなんとか設定できました。
F2::^PgDnで問題なくできました。

問題は、251さんの指摘しているところですw

253 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 19:53:11 ID:YBCNr5+M0]
もう二度とこないでね^^

254 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 20:18:25 ID:hGBhDH/a0]
>>226,227,228,233,234
自分>>178なんですが、ロジのマウス使ったことないですがやっぱりShiftが押されっぱなしになりますね。
マウスドライバはMSの純正で、ボタン割り当てはAutoHotkeyのみでやってます。
LShift & WheelDown::AltTab
LShift & WheelUp::ShiftAltTab
だけで走らせてみたところ、LShift & WheelDown::AltTab でフォーカスを移したあと、マウスクリックで
元のウィンドウに戻ってくると、毎回 Shiftが押されっぱなしになることが分かりました。
TeraPadとJanedoeViewで確認。
LShift & WheelUp::ShiftAltTab では大丈夫みたいです。

マウスはサンワのTB38という5ボタンのトラックボール、メーカーのドライバを入れた前歴はありません。
キーボードがへたってるのかなあ

255 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 20:29:17 ID:IlTer6q60]
■ キー押しっぱなし俺的まとめ ■

症状
i) キーはCtrl や Shift が多い
ii) 物理キー押下・押上で解除される

原因となっていそうなもの
A) SetPoint(ロジクール製マウスユーティリティ)
B) 窓使いの憂鬱(のどか)
C) VMWare / VirtualPC

A単独、もしくは (B または C) + デュアルコア以上のCPU

※ ソースは繭スレとか

----
俺はCore2のPCにした時 B で一度なってAHKに完全移行(OS再インスト)で
いったん無くなったけど、VMWareを入れて(C)再発した。
今はどちらも入れていないので特に問題は起きていない。

256 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 20:59:14 ID:NFr4v0Hr0]
何分後に動作
とか
何時何分に動作
っていうタイマーってできないかな?
1分ごとに監視するのは無駄な動作が多い

257 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 21:11:27 ID:NFr4v0Hr0]
何分後ってのはタイマーで指定すればいいだけか
時間指定できないかな

258 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 21:24:32 ID:hGBhDH/a0]
>>255
AとCは該当なし、Bは使った事ないですがChangeKeyで前変換とカタカナキーを殺していたのを思い出して
リセットして再起動してみましたが駄目でした。自分もCore2DuoのE8400です。
OS再インストールするしかないのかな・・・ orz

259 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/19(金) 21:59:46 ID:RvBowY+q0]
結局これといった解決方法は無しかorz

260 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 12:28:49 ID:Z+MpXoRr0]
>>256
SetTimer,OnTimer,60000
return

OnTimer:
FormatTime,NowTime,,HHmm
If (NowTime >= 0659) && (NowTime <= 0701) && (!Compleate) {
Msgbox, 7:00になったよ
Compleate := 1
} Else{
Compleate := ""
}
return

1分ごとに時間チェックするだけなら大した負荷にはならんと思うけど
(どっちにしろどこかで何かしらが定期時間チェックする必要はあるので
自分でやるか、他人に任せるかの違いでしかないのだし)

どうしても1分Timerが嫌なら単独スクリプトにしてOS標準のタスクスケジューラに登録したらいい



261 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 14:09:37 ID:J9kUfX5s0]
>>190
遅くなりましたが、動作確認できました。

> いづれ修正版を上げ直したくはあるんですが、色々手を入れたいとこがありすぎる
期待しています。

とりあえず WheelAccel.ahk に修正を加えてアップしておきました。
ttp://lukewarm.s101.xrea.com/up の 111.zip

>>189氏ともども、ご教示ありがとうございました。今後ともよろしくお願いいたします。

262 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 16:45:22 ID:yzkbbsVb0]
ソフトのタイトルの一部で判断し
各キーを対応させるにはどうすれば
いいのでしょうか?

263 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 16:48:52 ID:m9lSj1Vi0]
複数のキーボードを接続している状態で、特定のキーボードについてのみ
キー配置のリマッピングを有効にする方法はあるのでしょうか。
Alphagripというイロモノキーボードを買ってみまして、AutoHotkeyで
リマップして キー配置を変更したのですが、普通のキーボードも同時に
使っているので そちらは出来ればそのままのキー配置にしたいのです。
一応関数は探してみたつもりですがそれっぽいのが見つかりませんでした。

264 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 17:46:05 ID:Kh84drTR0]
>>262
SetTitleMatchMode と #IfWinActive

>>263
ドライバレベルで対応出来るものじゃないと出来ない。無理。

テンキーなら ttp://ioenc.net/magickeypad/ で出来るけど、
でもこれもやっぱりドライバ置き換え。

265 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 18:01:50 ID:yzkbbsVb0]
>>264
レスどうも
タイトルに AutoHotkeyというのが含まれてる場合
SetTitleMatchModeで指定するにはどうすればいいのでしょうか?

#IfWinActiveの場合は、付属のソフトでahk_class○○といった
感じでできました。

266 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 18:09:21 ID:m9lSj1Vi0]
>>264
レスありがとうございます。やっぱ無理なんですか、残念。

267 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 18:47:56 ID:Kh84drTR0]
>>265
#IfWinActive などのウィンドウの状態を見てのキーアサインを振り分ける機能は
Autoexec セクション内での SetTitleMatchMode コマンドの指定したやり方で判定をする
(指定がなければ前方一致をデフォルトとする)


意味が全然分からないならスクリプトの「1行目」に以下を書く
SetTitleMatchMode, 2

268 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 18:57:45 ID:yzkbbsVb0]
とりあえずテンプレのサイトにいって調べてみたら

MatchMode
タイトルのマッチ方法

1
前方一致(WinTitleで指定した文字列で始まるウィンドウが一致する)(高速)(デフォルト)
2
中間一致(WinTitleで指定した文字列を含むウィンドウが一致する)
3
完全一致(WinTitleで指定した文字列に完全に一致するものが一致する)

こんなのを発見しました。

2というのとかの意味もわかりました。使い方自体は疑問ですが、
最初の行に書き込むことによって目的の動作ができるようになりました。

m(_ _)mペコッ

269 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 19:19:19 ID:Z+MpXoRr0]
ID:yGrRFejp0 = ID:yzkbbsVb0 だろ

264でヒントもらっといて 265みたいな再質問ってあり得ない
質問するなとはいわんが答えてもらった内容をちゃんと噛み砕いて飲み込む努力しろよ
調べる能力つけないとこのソフト使うのは難しいぞ

270 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 19:58:07 ID:Kh84drTR0]
多少なりとも前進はしてるようだけど、調べる気がないのはちょっとな



271 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 23:35:06 ID:yzkbbsVb0]
そんな風にみえちゃんだろうけど相当検索し調べその結果ですw
調べ方が悪いのかしら・・・

272 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/20(土) 23:57:07 ID:LyIyydqb0]
調べ方も頭も態度も悪い

273 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 01:19:42 ID:LY2SRQDx0]
hoge.ahkが起動しているかを別のahkから調べる方法はありますか?
プロセスがあるかで調べようと思ったのですがどれもAutoHotkey.exeで調べられませんでした

274 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 01:34:59 ID:LCii9rhx0]
>>273
もらいもの
DetectHiddenWindows, On
WinGet, ahk_id_list, list, ahk_class AutoHotkey
Loop, %ahk_id_list%{
this_id:=ahk_id_list%a_index%
WinGetTitle, this_title, ahk_id %this_id%
msgbox, %this_title%
}

それか、AutoHotKey.exeをhoge.exeにリネームコピーしてhoge.ahkをhoge.exeに送れば問題なし。

275 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 01:38:33 ID:gJSSJElb0]
SetTitleMatchMode, 2
#SingleInstance, force
DetectHiddenWindows, On
WinWait, \hoge.ahk - AutoHotkey, , 0.1
DetectHiddenWindows, Off
msgbox, % Errorlevel ? "ないよ" : "あるよ"


276 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 01:46:22 ID:ylbkYADc0]
コマンドラインを読む関数がどこかになかったっけ?
それ使えばいいような

277 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 01:53:22 ID:LY2SRQDx0]
>>274-275
出来ましたありがとうございます

278 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 03:28:19 ID:LY2SRQDx0]
すみませんAHK連携絡みでもう二つ質問させてください。

あるAHKから起動中の別のAHK内の指定処理(ラベルなり関数)を実行させる最適な方法は何でしょうか?
起動中のAHK間の変数の受け渡しはファイル書き出し、読み込み以外で方法ありますか?

279 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 04:22:12 ID:gUuxFMOa0]
隠し(じゃなくてもいいけど)GUI作って、ボタンを押す。パラメタ渡しは隠しGUIのEditとかに書く

280 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 05:14:16 ID:gJSSJElb0]
関数ならAutoHotkeyをインストールしているディレクトリにLibフォルダを作って
そこに入れておけばいいんじゃないかな


変数の受け渡しはクリップボードを軽油する方法もある。
一定間隔でクリップボードを監視し、特定の文字列から始まるなら
変数の受け渡しと見なし、変数に置き換えてやるとか。



281 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 05:15:29 ID:gJSSJElb0]
;例えば特定の文字列を ahk9999999 とし、
;クリップボードコピーする形式を ahk9999999,変数名,値 というにようにする。
;下記スクリプトを実行中に ahk9999999,hoge,5 をクリップボードにコピーすると
;msgboxに hoge = 5 と表示。

#Persistent
#SingleInstance, force
hoge=1 ; テストで変化を確認するために初期値を 1 にしておく
SetTimer, ClipBoardCheck, 100
return

ClipBoardCheck:
if(Instr(Clipboard, "ahk9999999")=1){
loop, parse, Clipboard, `,
{
if A_Index=2
hogehoge=%A_LoopField%
else if A_Index=3
%hogehoge%=%A_LoopField%
}
Clipboard= ; クリップボードを空にする
msgbox, %hogehoge% = %hoge%
}
return

;変数を渡す方のスクリプトはClipboardの内容のバックアップしておき、
;Clipboardが空になったらバックアップしていたのを戻すようするといいかも。

282 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 15:21:49 ID:ZMhX9OF60]
>>279
仕組みは分かったのですがやり方が分かりません(´;ω;`)
よかったら簡単な例を教えてください

試しにこういうふうに作ったのですがGUIがHideだからなのかクリックしてくれません

操作する側に
ControlClick, Button1, HideControl

操作される側に
GUI, Add, Button,,Exit
Gui, Show, Hide, HideControl
return

ButtonExit:
ExitApp

>>280-281
なるほどクリップボードですか
接頭辞を決めておくというのは思いつきませんでした

283 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 16:13:59 ID:gUuxFMOa0]
>>282
操作側で DetectHiddenWindows,On

284 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 16:33:39 ID:16cGC6mhP]
受け渡しなら、OnMessageとPostMessageでしょjk
英語公式のリファレンスに詳しいサンプルがある

285 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 16:43:17 ID:ZMhX9OF60]
>>283
早速試しましたが変化無しでした

286 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 17:36:28 ID:gUuxFMOa0]
>>284
まぁそれが普通だと思うけど、GUIのボタン押すのもあまり変わらないと思う

---- server.ahk ----
Gui, Add, Button,gSub1
Gui, Add, Edit, vParam
Gui, Show,Hide, HiddenWindow
Return
Sub1:
Gui, Submit, NoHide
MsgBox, % Param
Return
---- client.ahk ----
Gui, Add, Edit, vParam
Gui, Add, Button,,Go
Gui, Show
Return
ButtonGo:
Gui, Submit, NoHide
DetectHiddenWindows, On
ControlSetText,Edit1,% Param, HiddenWindow ahk_class AutoHotkeyGUI
ControlClick,Button1,HiddenWindow ahk_class AutoHotkeyGUI
Return



287 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 17:56:23 ID:16cGC6mhP]
じゃあ、先に普通のやり方教えてあげなよw
余計なGUIリソース消費するし、コードの可読性や保守性を考えるとあまり一般的な解決法とも思えない

288 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 18:09:32 ID:ZMhX9OF60]
>>286
おー無事出来ました
どうもありがとうございました
>>284
やっぱりそっちのほうがいいんですかね
でも英語読めないので諦めますw

289 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 18:33:01 ID:gUuxFMOa0]
普通のアプリならそうすると思うけど、色々覚えなきゃいけないことが多いから
AHKのコマンドだけで出来る事に意義はあると思うよ。
リソースったってたいしたことないよ。

290 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 18:58:11 ID:16cGC6mhP]
まあ、人それぞれだから好きにすればいい
一応OnMessageだってahkのコマンドだし、覚えるのが大変なのはGUI絡みだって同じだと思うけどね
文字列の受け渡しになるとちょいと面倒になるけど、数値の受け渡しならこの程度で済む

--- receiver.ahk ---
OnMessage(0x5555,"MsgHandler")
MsgHandler(wParam, lParam, msg)
{
TrayTip,Receiver,Message %msg% arrived:`nWPARAM: %wParam%`nLPARAM: %lParam%
}

--- sender.ahk ---
F12::
SetTitleMatchMode 2
DetectHiddenWindows On
PostMessage, 0x5555, 11, 22, , receiver.ahk ahk_class AutoHotkey
return




291 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 22:46:25 ID:q3qyIN4s0]
人それぞれって言われたらそれまでだが、GUIはちょっとな
AHKのGUI関連って無駄にイベントラベル増えるからコードぐちゃぐちゃになるし。
自分だったら窓表示する必要があってもGUIコマンドは可能な限り使いたくないな。

>>276
管理人さんのマウスジェスチャ2の中だな。hh.exeなんかからでもchmファイルのフルパス抜けるし便利だよ
GetCommandLine(pid=0,WinTitle="A"){
  if (!pid)
    WinGet,pid,PID,%WinTitle%

  ; kernel32\GetCommandLineA のアドレスへのポインタを設定?
  ptr:=(NumGet(DllCall("kernel32.dll\GetProcAddress",UInt,DllCall("kernel32.dll\GetModuleHandle",Str,"Kernel32"),Str ,"GetCommandLineA",UInt)+1))

  ; プロセスのハンドルを取り出す
  hp:=DllCall("kernel32.dll\OpenProcess",UInt,0x001F0FFF,UInt,0,UInt,pid,UInt)
  VarSetCapacity(res,1024)

  ; GetCommandLineのメモリアドレスを取得してからコマンドライン文字列を取得
  DllCall("kernel32.dll\ReadProcessMemory" ,UInt ,hp ,UInt ,ptr, UIntP,addr ,UInt ,4 ,UInt ,0)
  DllCall("kernel32.dll\ReadProcessMemory" ,UInt,hp ,UInt,addr ,Str,res ,UInt,1024 ,UInt,0)

  DllCall("psapi\CloseProcess", UInt,hp)
  return res
}

292 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/21(日) 23:48:05 ID:ZMhX9OF60]
>>290
これはスマートでいいですね
使わせてもらいます

293 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 02:55:22 ID:9141GuF00]
>>200
この方法ではNumpad0,Numpad6,Numpad1に割り当てできなくなります。
何とかなりませんでしょうか?

294 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 03:00:20 ID:2F0zdoiY0]
キーを押し続けている間連続で加速しながら処理
プレイヤーのシーク操作やボリューム操作など

Left::
sleepTime := 80 ;初期待ち時間
While GetKeyState("Left","p")
{
send, {Left} ;任意処理
sleep, %sleepTime%
sleepTime := sleepTime > 20 ? sleepTime * 0.95 : 20 ;加速
}

295 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 22:47:42 ID:Qq8KUG5Y0]
AHK使い始めたばかりなんですが、ウィンドウタイトルの無いウィンドウを
操作するのはどうしたらいいでしょうか?
具体的にはnovolization.hp.infoseek.co.jp/pro.html#ao のMovieOperatorを
操作したいんですが。自分ではウインドウタイトルが無いとマウスで絶対座標指定して
いちいちクリックとかしか考え付かないです。

ちなみに前はUWSC使ってました。こいつでもウィンドウタイトルが無いとどうにもならなかったんで
ツール変えてみようかと思い立ったわけなんですが…

296 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 23:08:50 ID:HdFC8Trn0]
ウィンドウクラスとプロセス名(PID)で絞り込みかなl

Process, Exist, MovieOperator.exe
IfWinExist,ahk_class #32770 ahk_pid %ErrorLevel%
{
; ここにウィンドウ操作
ControlGetText, text, ComboBox1
MsgBox, % text
}

297 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 23:35:44 ID:Dlle25nB0]
>>>>>>>>>>( Window Title & Class )<<<<<<<<<<<
JPG2AVI
ahk_class Afx:00400000:b:00010011:00000006:0594124D

AU3_Spy.exeで見ると普通にウィンドウタイトル取れてるみたいだが。
これで操作できないんか?

298 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 23:40:34 ID:Dlle25nB0]
ってスマソ、思いっきりソフト間違えとる。

299 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 23:41:31 ID:Jnu5lPCA0]
JPG2AVI じゃなくて MovieOperator じゃないの?
ウチの環境でMovieOperatorをAU_Spy.exeで取得してみたけど
タイトル無しの ahk_class #32770 だったよ

300 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/22(月) 23:57:31 ID:Qq8KUG5Y0]
>>296
ありがとうございます。PIDで取れました。

これで色々操作するめどが立ちます。



301 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/23(火) 00:15:03 ID:ZOyW9r5y0]
先の質問とは関係ないですがエディタにサクラエディタ使ってる人居ないですかね?

キーワード定義既存のがあったら欲しいです…

302 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/23(火) 01:08:54 ID:K2VHacbK0]
>>301
昔どこかで拾ったんだよなあ。再びググったが見付からず。
黙ってあげてみるが、明日の昼には消す。
ttp://aaabbbccc.s6.x-beat.com/upload/src/up26358.zip

303 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/23(火) 02:46:42 ID:ZOyW9r5y0]
>>302
ありがとう。頂きました。

304 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/23(火) 13:43:55 ID:WplNcnsp0]
コントロールのウィンドウハンドルからClassNNを取得するにはどうすればいいんでしょうか

305 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/23(火) 15:41:53 ID:4VER+fnU0]
最近使い始めたばかりなのですが ttp://hp.vector.co.jp/authors/VA044605/resp.html
このRespというソフトとの連携がうまくいきません
IfWinExist, RESp
{
WinActivate, RESp
ControlFocus, TButtonEdit1
ControlSetText , TButtonEdit1, %1%
Send, {ENTER}
return ;サブルーチンを終了
}
Run, Respのぱす
WinWait,Resp
WinActivate, RESp
ControlFocus, TButtonEdit1
ControlSetText , TButtonEdit1, %1%
Send, {ENTER}
return ;サブルーチンを終了
ソフトが立ち上がっている場合はうまくいくのですが立ち上がってからの検索ワードが渡りません
よろしくご教授のほどお願いします。

306 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/23(火) 15:58:32 ID:uY1EeqKp0]
うまく動かないときは、適当にスリープを噛ませると、動く場合がある

検証してないけど↓はサンプル。

ControlFocus, TButtonEdit1
sleep,100
ControlSetText , TButtonEdit1, %1%
sleep,100
Send, {ENTER}

動けば、徐々にsleepの値を小さくしていけば、おk

307 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/23(火) 16:19:32 ID:4VER+fnU0]
Sleepかましてやってみたんですが10秒 5秒 1秒
でも
Resp起動→スクリプト→検索はうまくいくのですが
スクリプト→Resp起動→検索は起動はするのですが検索ワードがわたりません

二度手間になりますが起動はするのでこのまま使用して
また時間のあるときにいじることにします。
ありがとうございました。

308 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/23(火) 16:42:43 ID:63qINAR80]
× WinWait,Resp
○ WinWait,RESp

309 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/23(火) 18:31:10 ID:4VER+fnU0]
いけました。大文字と小文字で違うんですね。勉強になりました。
RESPで検索=D:\〜\AutoHotkey.exe "D:\〜\RESp\Resp_SelecitonSearch.ahk" "$TEXT$LINK"
Janeからこんな感じで使ってます
ありがとうございました。

310 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/27(土) 16:12:17 ID:kilshKVq0]
アクティブウィンドウの枠に色をつけたいです。
Progress / SplashImage使えばいいんですかね?
方法を教えてください。



311 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/27(土) 16:19:28 ID:TU1fJsoo0]
アクティブウインドウの大きさを調べて、
それより少し大きいGUIを作って、背景の色を変えればいいだろう

そのやり方を教えてってことなら、勉強するしかない

312 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/27(土) 20:43:29 ID:mjW9CgOJ0]
画面のプロパティで出来るだろ

313 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/28(日) 02:43:19 ID:H2leh/Na0]
下のように設定するとAlt+AでもHomeキーが押されたことにるんだけど
Alt+AのときにはCtrl+Aが押されたことにするにはどうすればいいですか?
^A::send {Home}
!A::send ^a

314 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/28(日) 03:18:30 ID:gb9fK4qR0]
>>313
>>4 A7

315 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/28(日) 04:45:22 ID:H2leh/Na0]
>>314
サンキュ。うまくいきました

316 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/29(月) 22:45:37 ID:e/W0qJft0]
ahkでFizz-Buzz問題の解答ください
www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm

317 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/29(月) 23:09:18 ID:roKbqfx60]
読んでみたけど、これってフィクションだよね?
ド素人の自分でもわかるのにプログラマ志望の人が分からないとか・・・

318 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/29(月) 23:57:56 ID:yHCDc8410]
loop,100{
tr++
fi++
tr:=tr=4 ? 1:tr=3 ? "Fizz":tr
fi:=fi=6 ? 1:fi=5 ? "Buzz":fi
valu:=tr="Fizz" && fi="Buzz" ? "FizzBuzz" : tr="Fizz" ? "Fizz" : fi="Buzz" ? "Buzz" : A_Index
MsgBox,%valu%
}
Return

こんなんでいいのかな?

319 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/29(月) 23:58:11 ID:CtyaNjiT0]
ttp://rosettacode.org/wiki/FizzBuzz#AutoHotkey

320 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 00:03:39 ID:j31Q4+5v0]
>>318
わかりづらいから駄目。
と言ってみる(´-ω-`)



321 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 00:13:58 ID:T80ICC0z0]

if mod(a_index,3)=0
{うんたら}

if mod(a_index,5)=0
{かんたら}

で適当に分岐させればいいんじゃないの

322 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 00:17:09 ID:p76oAck30]
こんな感じか
Loop,100{
a := (!Mod(A_Index,3) ? "Fizz" : "") . (!Mod(A_Index,5) ? "Buzz" : "")
msg .= (!(a) ? A_Index : a) . "`n"
}
msgbox %msg%

>>317
プログラマ「志望」なら案外そんなもん。
趣味でフリーソフト作ってるような人ばっか応募してくるわけじゃない。
シーケンスの基本概念なんて実務でもやってなきゃ案外頭に入ってないもんだよ。


323 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 00:18:37 ID:MqDPxJU80]
こんなの?

Loop,100
Fizz:=Mod(A_index,3) , Buzz:=Mod(A_index,5) , output.= (Fizz = 0 && Buzz = 0) ? "FizzBuzz'n" : Fizz = 0 ? "Fizz'n" : Buzz = 0 ? "Buzz'n" : A_index "'n"
MsgBox, %output%
output =

324 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 00:22:04 ID:T80ICC0z0]
みんな可読性わるすぎw

大括弧だけで1行
1命令1行

を徹底してる俺は異端なのか・・・

325 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 00:35:09 ID:j31Q4+5v0]
MsgBox, 1
MsgBox, 2
MsgBox, Fizz
MsgBox, 4
MsgBox, Buzz
MsgBox, 6

326 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 00:36:33 ID:rzfPOy180]
俺の頭の悪さに絶句・・・
 Loop 100
 {
  outLine := A_INDEX
  Loop 3
  {
   check := outLine
   if A_INDEX = 1
    subVal = 15
   else if A_INDEX = 2
    subVal = 5
   else if A_INDEX = 3
    subVal = 3
   Loop
   {
    check := check - subVal
    if check < 0
     break
    if check = 0
    {
     if subVal = 15
      outLine = FizzBuzz
     else if subVal = 5
      outLine = Buzz
     else if subVal = 3
      outLine = Fizz
     break
    }
   }
  }
  FileAppend, % outLine . "`n", %A_ScriptDir%\FizzBuzz.txt
 }

327 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 00:40:37 ID:xs+OUAE+0]
Loop,100
{
If Mod(A_Index,3)=0
value=Fizz
If Mod(A_Index,5)=0
value=%value%Buzz
If value=
value=%A_Index%
Msgbox,%value%
value=
}

これで最後にして寝よう。なかなかおもしろかったー。

328 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 00:47:38 ID:j31Q4+5v0]
まあ、基本形はこれで
Loop,100{
if !Mod(A_index,15)
MsgBox, FizzBuzz
else if !Mod(A_index,3)
MsgBox, Fizz
else if !Mod(A_index,5)
MsgBox, Buzz
else
MsgBox, % A_index
}

329 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 00:48:16 ID:EZ0ubY2h0]
考え方としては

3で割り切れるなら[Fizz]
5で割り切れるなら[Buzz]と表示
どちらでも割り切れないなら数字を表示
改行

だな


330 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 00:51:54 ID:T80ICC0z0]
>>319
↓懐かしすぎて涙が出た

FOR A = 1 TO 100
IF A MOD 15 = 0 THEN
PRINT "FizzBuzz"
ELSE IF A MOD 3 = 0 THEN
PRINT "Fizz"
ELSE IF A MOD 5 = 0 THEN
PRINT "Buzz"
ELSE
PRINT A
END IF
NEXT A


↓Perl。さすが変態

sub f { $_[0] % $_[1] ? '' : $_[2] }
print f($_, 3, 'Fizz') . f($_, 5, 'Buzz') || $_, "\n"
foreach 1 .. 100;



331 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 11:22:41 ID:ZWlKlVyy0]
SHIFT+カーソルの範囲選択を
SHIFT+無変換+IJKLでやる書き方って出来る?
三つのコンビネーションって指定できないっぽいんだけど

332 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 11:45:52 ID:z7lSMuFpP]
通常のカーソル移動も兼ねて良いのなら
~SC7B & i:: Send, {Blind}{Up}
~SC7B & j:: Send, {Blind}{Left}
~SC7B & k:: Send, {Blind}{Down}
~SC7B & l:: Send, {Blind}{Right}

333 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 16:39:04 ID:gVhvA3S20]
今更ながら>>63>>76-77を試したんですが、これすごい良いですね。
自分は単なるリマップとマクロにしか使ってなかったので、こんな事も
出来るのかと驚きました。

334 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 21:34:48 ID:WurnbeTc0]
>>332
うまくいった。ありがとう。

キーボード眺めてたら変換キーが丸々あいてるんだよな。
JKでタスク切り替え、残りのA-Zをランチャなんかに割り当てたら
めちゃくちゃ便利そうな気がしてきた。

335 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/06/30(火) 23:43:51 ID:hpTcuIjN0]
ひらがなキーを押したときの動作を key stroke and script info で見てみたら
ひらがなキーがなぜか押上されることが解りました
この不具合?を解消するにはどうすればいいのでしょうか


336 名前:名無しさん@お腹いっぱい。 [2009/07/01(水) 02:28:14 ID:JH7gYY9R0]
 ∧∧∧∧∧∧∧∧∧∧      ___/ ̄ ̄ ̄\
< ┌┐  ┌───┐ >   /  / / ̄ ̄ ̄ ̄\
< ││  │┌─┐│ >  /    ̄          \
< ││  └┘ //  >/    □            \
< ││    //    >// ̄~\ / ̄ ̄ ̄\      |
< ││     ̄     >|//\ヽ ∨〃/\   \   /\
< ││       _  >//(・) \ゞ/ /(・)  〉   |  | ∩|
< ││     //  >| \_/ノ  \_/ ノ し|:   | ∪|
< ││    / |   >l:::::::::∠~         ⌒ |   \/
< ││   //||   >|:::::::::r〜〜‐、ヽ      /   /
< ││   ̄  ||   >|:::::::::)jjjjjjjjjjjヽヽ   /   /
<   ̄       ̄    >|:::::::::|,,    || /   /
<.  ロロ┌┐┌┐┌┐  >!:::: ヽiiiiiiiii//  /   /
<   ┌┘│││││  >ヽ  ヽ〜〜"/   /
<     ̄ ̄ └┘││  > ヽ、__,,,_∠__/
< ┌┐┌┐    ││  >  _]:::::::   [_
< ││││   //   > ̄~        ゙ ̄ ̄ ̄ ̄ヽ
< ││││    ̄    >               ,〜ヽ
< └┘└┘        >             〜 ノ ̄\
<   []  []         >           ’ノ⌒⌒⌒⌒〉〉
 ∨∨∨∨∨∨∨∨∨∨∨            {       Y∫

337 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/01(水) 11:19:06 ID:qaOF2plA0]
2バイトコードの処理方法で質問です。
TV録画用途のPCで、テレビ番組名をINIファイルのセクションに割り当てて、
いろいろ自動処理しています。

INIコマンドで、セクションに使ってはいけない文字(たとえば括弧「[」「]」)
が入ると、INI自体は書けるものの、同一のセクションに書いてくれなかったり、
セクションを正しく読めないなどの不具合が出ます。
とりあえず、使ってはいけない特定の文字をアンダーバーに置換してみました。

name := RegExReplace(name,"(\.|\*|\?|\+|\[|\]|\{|\}|\||\(|\)|\^|^$|\\)","_")

成功
 前 [道徳ドキュメント[再]]
 後 [道徳ドキュメント_再_]

失敗1
 前 [スパイスTVどーも・キニナル!]
 後 [スパイスTVど\も・キニナル!]

失敗2
 前 [暴れん坊将軍[再]]
 後 [棒れん坊将軍_再_]

これって2バイトコードが1バイトずつ処理されてるのが原因っぽいですね。
2バイトコード部分に混入する文字は無視し、1バイト部分だけ置換したいのですが、
なにかうまい回避策はないでしょうか。

338 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/01(水) 11:49:08 ID:qJNMhI6B0]
>>337
マルチバイトの1バイト目の文字コードは 0x80〜0x9F 0xE0〜0xFC の範囲のはずなので
(?<=^|[^\x80-\x9F\xE0-\xFC])
で弾けると思う

>>335
OSやAHKのバージョンも書かずにそんなこと言われても答えられるやつはいないだろ。
マジレスするとKeyHistory まわりの問題は環境依存の可能性が高い。
(OS側が返してくる値自体が問題なのでAHK側でどうにかするのはたぶん無理)
現実的な解決策としてはキーボード変えるとかしかないと思われ

339 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/01(水) 11:52:56 ID:ll+32tHk0]
>>1
駄目文字微対策版
って消えてない?サイトに繋がらない

>>337
RegExReplaceじゃなくて
流行らせるページのBREGEXP.ahkを使えばいけると思う

340 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 11:36:06 ID:i54unxpm0]
しつもーん。
自分で作成したGUIのウィンドウを
WinSetのTransparentで半透明にしようとすると透過度の数値に関わらずウィンドウが消えるけど、バグ?



341 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 12:11:48 ID:rnkVZ9Ym0]
そんな事起きた事がない

342 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 12:14:52 ID:i54unxpm0]

だけど、いろいろ実験したら、半分自己解決。

一定サイズ以上のGUIウィンドウを、半透明にしようとすると、ウィンドウが消えるみたい。
たとえば、30000×10000のウィンドウを半透明にしようとすると消える。
ウィンドウサイズが超でかいのを半透明にするとすごく重そうだしそれを防止するための処理が組まれてるのかな?
回避方法はないだろうか。。。。

343 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 12:20:25 ID:i54unxpm0]
ちょっと極端な数値を書いたけど、
5000×2000のウィンドウでもダメみたい。

というか、マルチモニタ環境だけかもしれないけど、
挙動がちょっとおかしい。

5000×2000のGUIウィンドウを半透明にしようとすると
なぜかプライマリモニタにはウィンドウが表示されず、セカンダリにだけ表示される。
セカンダリにウィンドウが完全に移動したわけではなく、
プライマリとセカンダリの両方にウィンドウがまたがっているはずなのに、
プライマリの部分だけが表示されない。

マルチモニタ環境用にちょっとでかいウィンドウを使っていろいろやりたいのだけれど、
想定されていないバグってしまうサイズなのかな?。。。。

344 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 13:25:08 ID:YojB3hE5P]
ウチは6000x6000くらいはOKだったな
というか、ウィンドウスタイルでWS_EX_TRANSPARENTを指定してるだけだし
AutoHotkeyのバグではないと思うが
そもそも透明にする必要性があるのか分からんし、回避方法は勝手に探求してくれ

345 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 15:07:53 ID:0ufGIgHi0]
DOSの
%1
%~d1
%~p1
%~n1
%~x1
%~s1
のようなコマンドはありますか?


346 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 15:18:55 ID:odzNiaBs0]
えっ

347 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 15:32:24 ID:6MEA84T00]
ない
文字列操作、正規表現ライブラリ駆使して頑張れ

348 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 15:38:42 ID:LzARIfnI0]
>>345
コマンドラインからの引数で、なにかを利用したいなら

%1%
%2%
%3%
%4%
・・・

で取れる。使い方はDOSの%1と同様。

ファイル名に含まれる各種情報を取り出したいなら、
lukewarm.s101.xrea.com/commands/SplitPath.html

SplitPath, InputVar [, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive]
>InputVar 分解するファイルパスを格納した変数名
>OutFileName フォルダパスを除いたファイル名を格納する変数名フォルダパスのみの場合は、空になる
>OutDir フォルダパス(最後の「\」を含まない)を格納する変数名
>InputVarがファイル名のみの場合は、空になる。
>OutExtension ファイルの拡張子(「.」は含まない)を格納する変数名
>OutNameNoExt 拡張子を除いた名前部分を格納する変数名フォルダパスのみの場合は、空になる
>OutDrive ドライブ文字(「:」付き)やネットワーク上のパスのマシン名を格納する変数名 InputVarが相対パスなどの場合は、空になる。

349 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 15:50:24 ID:0ufGIgHi0]
>>348
ありがとうございます。

350 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 17:05:05 ID:YojB3hE5P]
ダメ文字があるので、BREGEXP使ってごにょごにょした方が確実かと。
>>1の対策版は繋らないね…



351 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 18:37:31 ID:0ufGIgHi0]
SplitPath, %1%, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive

で、 %1%,を使えないです。
X:= %1%,
も使えないです。どうすれば使えるようになりますか?

>>350
Batでダメ文字があったので逃げてきたのに・・・

352 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 18:42:48 ID:LzARIfnI0]
X= %1%
SplitPath, %X%, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive

でどうよ

353 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 18:47:08 ID:LzARIfnI0]
おっと間違ったかも

手元のコードを見直したら

X= %1%
SplitPath,X, OutFileName, OutDir, OutExtension, OutNameNoExt, OutDrive

これで動くはず

354 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 19:09:24 ID:0ufGIgHi0]
>>353
ありがとうございます。動きました。
がんばってみます。

355 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 22:17:47 ID:0ufGIgHi0]
DOSのSHIFTコマンドの代わりになるようなコマンドありますか?
また、X= %1%
の中の1の部分を
%%y%%として数字を増やしたいのですが出来ません。%%の間に%%を入れることは不可能なんですか?


356 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 22:23:21 ID:F+s6QMxA0]
演算子を:=にして式にする
X := %y%

357 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 22:34:25 ID:qjImDfCp0]
;AutoHotkey Help の「command line parameters」をそのままコピペ

Loop, %0% ; For each parameter:
{
param := %A_Index% ; Fetch the contents of the variable whose name is contained in A_Index.
MsgBox, 4,, Parameter number %A_Index% is %param%. Continue?
IfMsgBox, No
break
}

358 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/02(木) 22:41:42 ID:0ufGIgHi0]
>>356
>>357
度々すみませんでした。ありがとうございました。
がんばってみます。

359 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/03(金) 05:14:43 ID:c5pAeyeU0]
>>335
環境依存ではなく、Windowsの仕様(?)らしい。
ttp://lukewarm.s101.xrea.com/test/read.cgi/bbs/1095764510/243-246
ttp://d.hatena.ne.jp/blechmusik2/20090513/1242142080

2番目のリンク先のコメントによると他のキーと違いひらがなキーは Up → Down ということらしいので
(UWSCでキーのOn/Offチェックをしてみたけど、AutoHotkeyのKeyHistoryと同様にOnのままになってた)
ひらがなキーをAutoHotkeyでカスタマイズしたい場合はドライバレベルで別のキーに変更しておく必要があるみたい。
別キーに置き換えるなら他のキーと重複しないF13〜F24がいいかも。

ということでひらがなキーをF13に置き換える手順。
AutoHotkeyで任意のキーをF13にリマップする。
例:F12をF13にリマップし、スクリプトを実行させる。
F12::F13

Changekeyを起動する。(Changekeyが無いならググって入手する)
「調査」→「どのキーなのか?またはスキャンコードでキーを変更します」を選択。
F12を押すとスキャンコード「0x0064」、該当するキーは「該当なし」と表示される。
(0x0064 はF13のスキャンコード)
「上のスキャンコードでキー変更する」をクリックすると
「変更前 (中略) 0x0064 をどのキーに変更しますか?」
というウィンドウが表示されるので「ひらがな」キーを選択。
「登録」をクリックし、Windowsを再起動する。
リマップ( F12::F13 )を解除する。


360 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/03(金) 19:37:40 ID:RmoLSHNq0]
クリップボード内のテキストの中に、機種依存文字がないかチェックする処理って
どうやって書けばいいかな。メール送信前にチェックするのに使いたいと思ってるんだけど。

機種依存文字一文字一文字について、検索処理するのは非効率だと思うんだけど
ほかに何か良い方法ある?



361 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/03(金) 19:53:11 ID:eBItoHy+0]
それぞれ(非)存在チェックするしかないと思うが。
If var [not] contains values
で一発じゃないの

362 名前:360 mailto:sage [2009/07/04(土) 01:39:53 ID:NLnkQJFM0]
今、こんな感じに書いてて、処理を呼び出しとります。

m0:
sleep,200
Send,^a
sleep,200
Send,^c
ClipWait
sleep,200
Words = @,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S … (略)

Loop, parse, Words, `,
{
StringGetPos, pos, clipboard, %A_LoopField%
if pos >= 0
MsgBox, %pos%文字目に機種依存文字の%A_LoopField%が使われています。
}
return

>>361
If var [not] contains values を使って書くと、どんな感じになるんでしょう?

363 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/04(土) 02:09:25 ID:NLnkQJFM0]
おぉお…機種依存文字じゃない文字が機種依存文字として認識されてしまう…

ムズかしい。

364 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/04(土) 02:33:45 ID:RHUozl570]
正規表現か何かで文字コードを指定した方がいいんじゃない?

365 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/04(土) 16:48:06 ID:RdF1EmR40]
指定ドライブの空き容量を取得する方法はありますか?

366 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/04(土) 16:52:03 ID:RdF1EmR40]
自己解決しました
DriveGetっていうのが用意されてたんですね
無駄にSystemMonitor関数とか探してました

367 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 05:31:00 ID:rCPgZ7Wd0]
質問よろしいでしょうか?

タイトルバーの中クリックを検出する方法はないでしょうか?
具体的にやりたいことは、タイトルバーの中クリックを押すとウインドウを最小化する機能をつけることです。

他のソフトでもできそうなのですが、
というか同機能のすでにTTBaseのMinimizeプラグインを使っているのですが、
これだと、Office2007系(Excel2007とか)のメニューがバグって最小化できずしかも操作不能になってしまうのです。
その点をカスタマイズしたいのです。
(TTBaseのプラグイン作者はすでにおられないみたいでした)

368 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 05:39:38 ID:1ELefC3x0]
~MButton::
CoordMode, Mouse, Screen
MouseGetPos,x,y,hwnd
SendMessage, 0x84, 0, x|y<<16,, ahk_id %hwnd% ; WM_NCHITTEST
If (ErrorLevel==2) ; HC_CAPTION
PostMessage, 0x112, 0xF020,,, ahk_id %hwnd% ; WM_SYSCOMMAND / SC_MINIMIZE
Return


369 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 07:16:54 ID:rCPgZ7Wd0]
>>368
すげええw
WM_NCHITTESTにメッセージ送ったらどこにあるか状態返ってくるんかw
知らんかった。サンクス

参考:WM_NCHITTEST [WinAPI Database for VB Programmer]
www.winapi-database.com/Message/WM/WM_NCHITTEST.html

Excelだと WM_NCHITTEST だと 1(クライアント領域内)が返ってきてうまくいかないけど、バグるよりはよいや…
これでしばらく使ってみます

ありがとうございました。

370 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 16:17:11 ID:cg382fnr0]
#q::
Loop{
延々ループ処理
}
return
こんな感じのホットキー作ったんだけど
別のホットキーで、#qで動作させているホットキーの内容を強制的に停止させる方法って無い?
#e::
ExitApp
return
こういうのしてみたけどプログラム終了しなかった(´・ω・`)



371 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 16:32:19 ID:1ELefC3x0]
普通に動くけどなぁ

#q::
exec:=true
While (exec)
Tooltip, Mouse is Here!
Tooltip
Return

#e::exec:=false


372 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 17:13:15 ID:cg382fnr0]
>>371
んーだめっぽいなぁ
CoordMode,Mouse,Relative
CoordMode,Pixel,Relative
SetDefaultMouseSpeed,0
SetMouseDelay,10
SetKeyDelay,10,10
SendMode EVENT
hModule := DllCall("LoadLibrary", str, "***.dll")
こんな感じにやってるけど設定になんか問題でもあるのかなー

373 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 18:12:19 ID:bzcOmVnlP]
そもそも>>370の方法で終わらないのがおかしい
#MaxThreadsが1になってるとか、OnExit絡みがおかしくて失敗してるのでは

とは言え、1行目がExitApp等なら割り込まれるから(#MaxThreadsヘルプ参照)、
純粋に>>370のコード例は動くはずなんだけどな

374 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 20:47:52 ID:lEC8MHrV0]
%A_YYYY% %A_MM% %A_DD%

これらの組み込み変数で、
・昨日
・先月

を、うまく呼び出す方法ってないでしょうか。
単純にマイナス1でやると、あたりまえですが1月や毎月1日の時に、
先月や昨日が0月 や 0日になってしまいます。

375 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 21:09:54 ID:1ELefC3x0]
タイムスタンプ形式文字列(YYYYMMDDHH24MISS)にして、負数を加算

dt = 20090101000000
dt += -1, Days
MsgBox, % dt

376 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 21:13:06 ID:lEC8MHrV0]
>>375
ありがとうございます。
これでstringmidで抜き取れば、ゼロ桁揃えもバッチリですね。

377 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/05(日) 21:42:40 ID:TpLw+W1E0]
>>375
横レスだが、こんなことができることに驚いた


378 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/06(月) 11:18:51 ID:+bpunDPa0]
特定アプリケーションの特定クラスで

マウスを1クリックしたときは、そのアプリケーションクラスにキーを送る
マウスをWクリックしたときは、ダブルクリック
マウスを3回連続クリックしたときは、そのアプリケーションを閉じる
マウスを2秒以上押したときは、閉じる

そのほかのアプリケーションでは通常動作。

って設定するにはどうすればいいですか?

379 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/06(月) 11:57:42 ID:D5LcDuIT0]
解説読んでその通りに作ればいい

380 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/06(月) 13:12:35 ID:afPTjDljP]
dt:=DllCall("GetDoubleClickTime")/1000

#IfWinActive hogehoge

LButton::
t:=A_TickCount
KeyWait LButton
KeyWait LButton,D T%dt%
if( ErrorLevel=1 ) {
if( A_TickCount-t > 2000 ) {
ToolTip Press 2sec %A_TickCount%
return
}
ToolTip SingleClick %A_TickCount%
return
}

KeyWait LButton
KeyWait LButton,D T%dt%
if( ErrorLevel=1 ) {
ToolTip DoubleClick %A_TickCount%
return
}

ToolTip,TrippleClick %A_TickCount%
return



381 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/06(月) 16:06:11 ID:+bpunDPa0]
>>380
ありがとうございました。

382 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/10(金) 12:19:20 ID:n1t9ih6R0]
全角英数字→半角英数 と 特定文字列を置き換えたいのですが
どういう手順が一番いいですか?
外部ソフト使ったほうがいいですか?内部で処理できます?

383 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/10(金) 15:00:57 ID:h/ikD8t3P]
それくらいの内容だったら1バイトずつチェックして自分で変換してもいいし、
外部のツールを使ってもどちらでもいいと思う

BREGEXP.DLLのBTransを使えば比較的楽だと思うけど、
流行らせるページのラッパーには無いんだな…
次に貼っておく
BTransの返値には置換された個数が帰ってくるので、
ちょっと変えれば>>360の用途にも使えると思う

384 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/10(金) 15:23:04 ID:h/ikD8t3P]
; 省略してるけど、2, 3番目のパラメータに変換前、後に対応する文字列を指定する。
str:=_BTrans("abc cba AutoHotkey", "[a-z]", "[A-Z]", "k")
str:=_BTrans("ABXYZ", "ABCDEFGXYZ", "abcdefgあいう", "k")

_BTrans(target,pattern,trans,opt="")
{
s:="tr/" . pattern . "/" trans . "/" . opt
t:=target
outendp:=&target+StrLen(target)
pRExp=0
VarSetCapacity(msg,256)
hModule:=DllCall("LoadLibrary", str, "BREGEXP.DLL")
if(DllCall("BREGEXP.DLL\BTrans", Str,s, Str,target, Int,outendp ,IntP,pRExp, Str,msg, "Cdecl int")) {
start:=StructGetInt(pRExp,0)
len:=StructGetInt(pRExp,4)-start
VarSetCapacity(result,len+1)
DllCall("RtlMoveMemory", Str,result, UInt,start, UInt,len+1)
}
else {
result:=target
}
DllCall("BREGEXP.DLL\BRegFree",Int,pRExp)
DllCall("FreeLibrary", UInt, hModule)
return result
}

StructGetInt(pStruct,offset)
{
DllCall("RtlMoveMemory", UIntP,r, UInt,pStruct+offset, Int,4)
return r
}

385 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/10(金) 16:00:26 ID:n1t9ih6R0]
>>383
ありがとうございます。ちょっと試してみます。

386 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/10(金) 16:10:24 ID:UjJB4Kmb0]
>>302のサクラエディタ用のキーワード定義をひろった方がいたら
再upしてもらえないでしょうか?
お願いします。

387 名前:385 mailto:sage [2009/07/10(金) 16:29:10 ID:n1t9ih6R0]
試してみました。
むずかしくて意味がわかりませんでした。
せっかく教えていただいたのでじっくり取り組んでレベル向上するように頑張ります。

388 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/11(土) 14:07:36 ID:cI0LSYAf0]
マウスの左メイン押下&サイドボタンクリックでスクリプト発動したいんですが、
マウス左ボタン押下状態でちょっとでもカーソル動かすとうまく発動できません。
何かうまい方法ないでしょうか?

~LButton & XButton1::
hogehoge
return

389 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/11(土) 14:29:41 ID:xRlAh2IZP]
~XButton1::
if( GetKeyState("LButton", "P") ) {
hogehoge
}
return

ちなみに>>388はウチではうまく動作する。

390 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/11(土) 21:37:47 ID:cI0LSYAf0]
>>389
レスthxです。
教えていただいたスクリプト、ダメでした・・・
何も反応しません。

LButtonとXButtonが逆なのかと思って逆にしてみてもダメでした。

~LButton & XButton1::Send ^tをgoogle chromeで使っているんですが、
XButton1をクリックする前にマウスが動くとうまくいかないんですよね・・・




391 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/11(土) 21:47:30 ID:SAtGLE1R0]
>>390
ふつうにLButton:: でまずスレッドを立てて、その中で
LButtonが離されるまでLoopさせ、そのループ中にXButtonが押されているか検知し、
そこで分岐させればいいんじゃね?


392 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/11(土) 21:50:14 ID:e08r4NpA0]
というか、コンビネーションキーが認識出来ていない段階でおかしい
何らかのマウスユーティリティ入れてたりしないよな?

393 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 09:23:18 ID:PeyC4smHP]
Chromeが原因っぽい
ウチのSRWare Ironで確認したんだけど、他のアプリでは大丈夫だけどIronでだけダメだった

以前からChrome(Iron)は、Sendで取りこぼしがよく発生すると思ってたんだけど
これもそのうちの一つかもしれない
(例えばコンテキストメニュー出して即アクセラレータキーを送っても、それを拾ってくれない場合があったりする)

どうやらLButtonでドラッグしている間はキーを無視してるらしいので、
無理矢理LButton Upを送ってからキーを送ったらうまくいくようになったけど、
ちょっと試しただけなので、副作用があるかもしれないし、Ironでしか確認してないが、
参考にでもなれば

~LButton & XButton1::
Send {LButton Up}
Send ^t
return

394 名前:390 mailto:sage [2009/07/12(日) 18:27:18 ID:sKIcc7dc0]
>>391-393
>>393の方法でうまくいきました。ありがとうございます。
確かにchromeが問題っぽいですね。
試しにドラッグ中にキーボードでCtrl+tを押してみても新タブ開かないですし

ともあれ、これで快適にAHKを活用できそうです。ありがとうございました。

395 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 21:31:22 ID:tYrCWj8c0]
じぐざぐマウス
ttp://lukewarm.s101.xrea.com/up/file/113.zip

396 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 21:41:42 ID:XcNgENWm0]
>>395
なにこれ?
説明もないし、実行しても何も起こらないし、意味が全くわからない

397 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 22:04:43 ID:4APWhaXL0]
DllCallでimm32.dllのImmGetContextを呼んでhIMCを取得したいのですが、0 しか返ってきません
ErrorLevelは 0 になってるので書き方は↓であってるはずなのですが・・・

WinGet,hWnd,ID,A
hIMC := DllCall("imm32\ImmGetContext",Uint,hWnd, Uint)

どなたか解決方法をご教示願えないでしょうか

398 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 22:12:49 ID:tYrCWj8c0]
>>396
すまん、マウスを横にギザギザするだけ。
DExposE2とかと使ってSend, !{tab}を送ったりするといい。

最後らへんは、下手したら多重起動しちゃう。
まだまだ、要変更でしたorz
DExposE2を使うなら最後のReturn前に、KeyWait, LButton, D T1とか。

399 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 22:19:20 ID:XcNgENWm0]
>>398
あぁやっと意味がわかった。ギザギザにカーソルを移動するんじゃなくて、
マウスを縦横に振り回すと、縦横に応じたRunが発動されるってことね。

それなら、名称がギザギザよりもフリフリのほうがいいんじゃないの?

ソースを見ても何をやりたいのか全く理解できなかったコードは、
これが初めてだわw

こういった公共の場にリンクを貼るなら、最低限の説明は書いてくれよ。
だれも俺みたいな暇人じゃないんだから。

400 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 22:43:47 ID:/CYjiatT0]
>>397
無理。対象ウィンドウを生成したプロセスでしか操作出来ない。
AttachThreadInputしても同じ。

>>99とかその辺りの流れで我慢汁



401 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/12(日) 22:44:29 ID:tYrCWj8c0]
>>399
まあそうなんだけどね\(^O^)/
じぐざぐマウスはClockLauncherの機能で、それをパクって、縦横で分け判定を厳しくしただけだから、
名称は統一感があったほうがいいかなと。

ソースはくるくるスクロールをリスペクトw

402 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 03:02:54 ID:9veVwPlv0]
>>395
くるくるじぐざぐマウスに修正(´・ω・`)

403 名前:名無しさん@お腹いっぱい。 [2009/07/13(月) 15:24:53 ID:EfchmhA10]

あるペイントソフトで
デフォルトで画面の拡大・縮小がそれぞれ
num+ nun-と割り当てられている状況で
これをマウスホイールのwheelup,wheeldownにできないかと

#IfWinActive, ahk_class Afx:400000:8:10011:x:xxxxxxxx
WheelUp::send, NumpadAdd
WheelDown::send, NumpadSub
return
としてみたのですが、AU3_Spyで調べた
ウインドウクラス名が起動毎に変わってしまいます
このウインドウクラス名は特定する事はできるのでしょうか?

404 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 15:47:32 ID:L6IuKEblP]
SetTitleMatchMode RegEx
#IfWinActive, ahk_class Afx:400000:8:10011:.*

;ウィンドウのタイトルが Untitled - hogehoge paint だったら、さらに
#IfWinActive, -\shogehoge\spaint$ ahk_class Afx:400000:8:10011:.*

自分の使う環境で誤爆が起きない範囲で調整すればいいと思う


405 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:04:24 ID:9QQrzBKg0]
なんで「あるペイントソフト」とか意味もなく隠すんだろうか。

具体的にソフト名を書いておけば、
別の方法で回避する方法がわかるかもしれないのに

406 名前:名無しさん@お腹いっぱい。 [2009/07/13(月) 17:43:13 ID:EfchmhA10]
403です、間違えましたahk_class Afx:400000:8:10011:0:xxxxxxの
x以下六桁が変動でした。ソフトはpaintgraphic2ですが(スレ違いかなって思って)
続け様で申し上げないのですが
SetTitleMatchMode RegEx
#IfWinActive, ahk_class Afx:400000:8:10011:0:.*
でいいのかなと思って色々弄ってみたけど駄目でした
因みにウインドウクラス名は新規作成(Untitled )を開いても
変化はありませんでした

407 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 17:52:58 ID:Jqm7FBF10]
SetTitleMatchModeコマンドがきちんとAutoexecブロック内にあるかい?

408 名前:名無しさん@お腹いっぱい。 [2009/07/13(月) 19:11:45 ID:EfchmhA10]
何度もすいません
Autoexeもブロック化もしていなかったのでしてみました
{
SetTitleMatchMode RegEx
}

#IfWinActive, ahk_class Afx:400000:8:10011:0:.*
WheelUp::send, NumpadAdd
WheelDown::send, NumpadSub
return
こういう感じでしょうか?(しつこくスイマセン)

409 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 19:14:52 ID:gpgKXs+F0]
SetTitleMatchMode RegEx
#IfWinActive, ahk_class Afx:400000:8:10011:0:.*
return

WheelUp::send, {NumpadAdd}
WheelDown::send, {NumpadSub}
かな?ァァァアアアアア〜アッヒャッヒャ!ヽ(;`・∀)ノ

410 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 20:45:49 ID:6dlsOKO00]
>>400
ahkじゃむりですか・・・
何か他の手を考えてみます、ありがとうございました



411 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/13(月) 21:13:28 ID:nb47aZHk0]
>>408
lukewarm.s101.xrea.com/Scripts.html
の「スクリプトの起動とAuto-executeセクション」を熟読


412 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/14(火) 16:57:18 ID:3/lvv1eT0]
F12::#D

こんな感じのキー変更を行いたいのですがなんか上手く動作しません
キー変更先にWINキーは使えない仕様なのか、それとも環境の問題か…
デスクトップ表示の命令が分かれば解決しそうだけど誰か情報あったらplz!

413 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/14(火) 17:04:03 ID:4gFEIoud0]
大文字のDだとシフト押した扱いになるんじゃないかな

F12::#d

414 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/14(火) 17:05:29 ID:3/lvv1eT0]
えー事故解決しますた。。。あまりスマートな方法じゃないけど
デスクトップ表示のショートカットアイコンを起動する形で実現出来ました

415 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/14(火) 17:07:21 ID:3/lvv1eT0]
>>413
うわっホントでした、なんという恥ずかしい間違いw
ありがとうございました。

416 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/14(火) 18:01:13 ID:tjaNVAHDP]
Run, shell:::{3080F90D-D7AD-11D9-BD98-0000947B0257}

417 名前:名無しさん@お腹いっぱい。 [2009/07/14(火) 19:03:55 ID:rlrvyAbn0]
403です
おかげでなんとか
動くようになりました
ありがとうございます

418 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/14(火) 19:32:35 ID:v50nfNmk0]
質問の際、ソフト名を書かない
解決の際、解決に至った情報を書かない

まさに自分のことしか考えていない。
情報を共有する場所で、あるまじき行為

419 名前:名無しさん@お腹いっぱい。 [2009/07/14(火) 20:48:40 ID:rlrvyAbn0]
嗚呼失礼そういうルールでしたか
直接に解決に至った情報は409の方が提示されていたんですが
スペルチェックというか「,」であったり半角スペースを忘れる
イージーミスだったので
ちゃんと
SetTitleMatchMode, RegEx
#IfWinActive, Paintgraphic2 ahk_class Afx:400000:8:10011:0:.*
return

WheelUp::send, {NumpadAdd}
WheelDown::send, {NumpadSub}
return
で今のところ順調に動くようになりました
ご忠告を含め大変感謝です!

420 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/14(火) 20:59:28 ID:v50nfNmk0]
よし、合格!
これで、同じ悩みを持つ人の糧になる。



421 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/15(水) 04:48:01 ID:ZstWjcqp0]
FavoriteFinder.ahk消えちゃったね(´-ω-`)

422 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/15(水) 09:05:36 ID:0bQiTwD20]
Internet Archiveにも情報が残ってないとか

423 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/15(水) 09:44:47 ID:NhmkqrjQ0]
AutoHotkeyでマルチバイト(全角)文字を文字化けなしで出力する関数 - Knowledge Database IT
it.kndb.jp/entry/show/id/1188

これを使うと、文字が確定した状態で出力されてしまいます。
文字を未確定のまま出力させるにはどうすればいいのでしょうか。

424 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/07/15(水) 10:29:13 ID:eRZrTUyIP]
日本語入力モードにしてローマ字(ひらがな)を送った後、スペース等の変換キーを送るとか、
  IME_Set(1)
  Send mikakuteide{Space}

IMEが再変換に対応してれば>>423で漢字を送った後、再変換させるキー(MS IMEだと変換)を送るとか、
  mb_send("未確定で")
  Send {SC79}
  ※厳密に再変換させるなら、日本語文字数分だけShift+←を送って選択させた後に再変換






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<154KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef