ControlGetでスクロールバーのハンドルを取得しようとしたが、うまく取得できなかった。
原因
ControlGetの引数は下記のようになっている。
ControlGet, OutputVar, Cmd [, Value, Control, WinTitle, WinText, ExcludeTitle, ExcludeText]
この、Controlのみを指定した場合は、うまくいかないことがあるみたい。WinTitleにWinGetで取得した、Window Handleを指定すると、うまく動くようになった。
^+b:: WinGet, AWinHWND, ID,A MouseGetPos, msX, msY, msWin, msCtrl ControlGet, curCtrlHwndNG, Hwnd,,%msCtrl% ;これだけだとダメ。 ControlGet, curCtrlHwnd, Hwnd,,%msCtrl%,ahk_id %AWinHWND% ;ウィンドウ指定を付けるとOK msgbox,% "AWinHWND: " AWinHWND "`nmsCtrl: " msCtrl "`ncurCtrlHwndNG: " curCtrlHwndNG "`ncurCtrlHwnd: " curCtrlHwnd Return
また、ウィンドウ指定を付けない場合は、WinExistを実行しておくと、WinExistで取得したウィンドウに対しての操作という扱いになるのか、うまく動くようになった。
^+c:: actWinbyWinExist := WinExist("A") ;これが無いと、ControlGet出来ない。 MouseGetPos, msX, msY, msWin, msCtrl ControlGet, curCtrlHwnd, Hwnd,,%msCtrl% msgbox,% "actWinbyWinExist: " actWinbyWinExist "`nmsCtrl: " msCtrl "`ncurCtrlHwnd: " curCtrlHwnd Return
関連
コメント