板 1- 前 次 新 レス
旧雑記サルベージ
[101]管理人 ★:06/09/06 17:44 ID:???
2006年02月08日
■AutoHotkeyでGUIウィンドウの空いている番号を検索
AutoHotkeyのGUIでは、複数のウィンドウを番号で区別し、99個までのウィンドウを生成できる。
特に指定がなければ、1番のウィンドウが使われる。
複数のスクリプトを組み合わせて使う場合には、番号が衝突しないように修正しなければならない。
いちいち修正しなくていいように、空いている番号で新たにGUIウィンドウを作れるような仕組みを作ることに。
「その番号のウィンドウが存在しなければ、その番号は空いている」とみなすことを考えたが、GUIウィンドウが生成されているかを調べる機能はないし、「Gui,+LastFound」等を行うと、その時点でウィンドウが生成されてしまう。
そこで、あらかじめ自分のプロセスのGUIウィンドウのハンドルを列挙しておき、取得したGUIウィンドウのハンドルがその一覧に無ければ、そのウィンドウは新たに作られたものであると判断するようにした。
newGui(){
Process,Exist
mypid:=ErrorLevel
DetectHiddenWindows,On
WinGet,h,list,ahk_pid %mypid% ahk_class AutoHotkeyGUI
DetectHiddenWindows,Off
Loop,99{
found=0
Gui,%A_Index%:+LastFound
WinGet,hwnd,id
Loop,%h%{
if(h%A_Index%=hwnd){
found=1
break
}
}
if(found=0){
return A_Index
}
}
return 0
}
Gui,Add,text,,MyGUI
Gui,Show
w1:=newGui()
Gui,%w1%:Default
Gui,add,text,,DynamicGUI 1
Gui,Show
w2:=newGui()
Gui,%w2%:Default
Gui,add,text,,DynamicGUI 2
Gui,Show
前 次