基本的な入力はできるようになったのですが、アプリケーションのメニュー操作でつまずいています。
例えばメモ帳でキーボードからAlt+F→Aと押せば「名前をつけて保存」のダイアログが出ますが、
以下のスクリプトを実行して「Alt+F」「A」のボタンを押してもメニューが閉じます。
同様にカーソルキーや「Enter」もうまく動作しません。
どうやらメモ帳のメニューハンドラが「他ウィンドウでのマウスクリック」を検出してメニューを閉じるようです。
これを防ぎメニューを操作する方法はないでしょうか?
<以下スクリプト>
#include "hspdef.as" #uselib "user32.dll" #cfunc GetWindowLongA "GetWindowLongA" int,int #func SetWindowLongA "SetWindowLongA" int,int,int #func keybd_event "keybd_event" int,int,int,int gsel 0,-1 skxs=256:skys=48 skx=0:sky=0 bgscr 2,skxs,skys,0,skx,sky skwh=hwnd exstyle=-20 dwstyle=GetWindowLongA(skwh,exstyle) dwstyle=dwstyle|0x8|0x80|0x08000000 ;Tool80 +Topmost8 + NoActivate8000000 SetWindowLongA skwh,exstyle,dwstyle pos 0,0 button "quit",*quit pos 0,24 button "Alt+F",*altf pos 128,0 button "↑",*up pos 64,24 button "←",*left pos 128,24 button "↓",*down pos 192,24 button "→",*right pos 64,0 button "A",*a pos 192,0 button "Enter",*enter stop *altf keybd_event 18,0,0,0 keybd_event 70,0,0,0 keybd_event 70,0,2,0 keybd_event 18,0,2,0 stop *up keybd_event 38,0,0,0 keybd_event 38,0,2,0 stop *left keybd_event 37,0,0,0 keybd_event 37,0,2,0 stop *down keybd_event 40,0,0,0 keybd_event 40,0,2,0 stop *right keybd_event 39,0,0,0 keybd_event 39,0,2,0 stop *a keybd_event 65,0,0,0 keybd_event 65,0,2,0 stop *enter keybd_event 13,0,0,0 keybd_event 13,0,2,0 stop *quit end