;================================================================================ ;モジュール input ;ver 1.0 ; インプット ; llmod.asが必要です ;================================================================================ ; inputモジュール命令一覧 ; ; keybd_event キーボード操作 ; mouse_event マウス操作 ; ; 計 2個 ;使い方 ;================================================================================ ; keybd_event n1,n2,n3 キーボード操作 ; ; n1 : キーコード ; n2 : キーを放すフラグ ; n3 : オプション ;================================================================================ ; ;<>説明 ; キーボード操作を行います。 ; n1に押したいキーのキーコードを指定します。 ; n2を0にしてこの命令を実行するとn1を前回実行したときと同じキーコード、 ; n2を1にしてもう一度この命令を実行しないとキーを放したことになりません。 ; n2を-1にすると押して放したことになります。 ; n3のオプションはスクリーンショットキーを押すときに使用します。n3を0に ; するとフルスクリーン、1にするとアクティブなウィンドウがクリップボードに ; コピーされます。 ; ; keybd_eventは他のプログラムのウィンドウがアクティブな場合でも実行されます。 ; ; ;<>キーコード ; キーコードはgetkeyで使用するものと同じです。 ; ほかにも以下のようなものがあります。 ;n1の値 ; 44 スクリーンショット ; 45 INS ; 46 DEL ; 106 テンキーの'*' ; 107 テンキーの'+' ; 108 テンキーの',' ; 109 テンキーの'-' ; 110 テンキーの'.' ; 111 テンキーの'/' ; ;<>例 ; #include "llmod.as" ; #include "input.as" ; ; exec "notepad" ; s="ABCDEFG" : strlen L,s ; ; repeat L ; peek c,s,cnt ; keybd_event c,-1 ; loop ; ; keybd_event 18,-1 ;ALT ; keybd_event 'F',-1 ;ファイル(F) ; keybd_event 'O',-1 ;開く(O) ; ; keybd_event 'N',-1 ;セーブ確認ダイアログのいいえ(N) ; ; s="INPUTnAS" : strlen L,s ;'n'はキーコードで'.'(110)を表す ; ; ;ここのコメントを外すとSHIFTを押したことになり大文字になります ; ;keybd_event 16 ; ; repeat L ; peek c,s,cnt ; keybd_event c,-1 ; loop ; ; ;上のコメントを外したときはここのコメントも外してください ; ;keybd_event 16,1 ; ; keybd_event 13,-1 ;ENTER ; ; stop ; ;================================================================================ ; mouse_event n1,n2,n3 マウス操作 ; ; n1 : 操作タイプ ; n2 : 水平方向の移動量 ; n3 : 垂直方向の移動量 ;================================================================================ ; ;<>説明 ; マウス操作を行います。 ; n1に指定するタイプでマウス操作を行うことができます。 ; 水平方向の移動量は、画面左から右へ移動させるときが正、その逆が負 ; 垂直方向の移動量は、画面上から下へ移動させるときが正、その逆が負 ; であることに注意してください。 ; ; mouse_eventはHSPのプログラムがアクティブでないときでもマウス操作に影響します。 ; ;<>操作タイプ ; n1の値は以下のものを組み合わせて使用することができます。 ; ; n1の値 ; $1 マウス移動 ; $2 左のボタンを押す ; $4 左のボタンを放す ; $8 右のボタンを押す ; $10 右のボタンを放す ; $20 中のボタンを押す ; $40 中のボタンを放す ; ;<>例 ; #include "llmod.as" ; #include "input.as" ; ;*lp ; movx=0 : movy=0 ; getkey k,37 : if k : movx- ;←キー ; getkey k,38 : if k : movy- ;↑キー ; getkey k,39 : if k : movx+ ;→キー ; getkey k,40 : if k : movy+ ;↓キー ; ; ;SHIFTが押されたら左ボタンを押す ; getkey kSHIFT,16 : if kSHIFT : Lbtn=$2 : else Lbtn=0 ; mouse_event $1+Lbtn, movx, movy ; ; ;SHIFTを押すとマウスの左ボタンを押したことになりkが1になる ; getkey k,1 : if k : pset mousex,mousey ; ; ;SHIFTが押されてたら左ボタンを放す ; if kSHIFT : mouse_event $4 ; ; await 1 ; goto lp ; ;module始め>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #module "input" ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;keybd_event ;キーボード操作 ;................................................................................ #deffunc keybd_event int,int,int if func.3=0 { getmjrdll func,D_USER ll_getproc@ func.3,"keybd_event",func if (func=0)|(func.3=0) : return } ;#define KEYEVENTF_EXTENDEDKEY 1 ;#define KEYEVENTF_KEYUP 2 mref v1 : prm=v1 mref v1,2 : prm.1=v1 mref v1,1 : prm.2=v1 prm.3=0 prm.4=0 ;prm.2が正ならKEYEVENTF_KEYUPにする if prm.2 { if prm.2>0 : prm.2=2 : else prm.2=0 : prm.4=1 } ll_callfunc@ prm,4,func.3 if prm.4 : prm.2=2 : ll_callfunc@ prm,4,func.3 return ;^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ;mouse_event ;マウス操作 ;................................................................................ #deffunc mouse_event int,int,int,int if func.1=0 { getmjrdll func,D_USER ll_getproc@ func.1,"GetMessageExtraInfo",func ll_getproc@ func.2,"mouse_event",func if (func=0)|(func.1=0)|(func.2=0) : return } ;#define MOUSEEVENTF_MOVE 1 ;#define MOUSEEVENTF_LEFTDOWN 2 ;#define MOUSEEVENTF_LEFTUP 4 ;#define MOUSEEVENTF_RIGHTDOWN 8 ;#define MOUSEEVENTF_RIGHTUP 16 ;#define MOUSEEVENTF_MIDDLEDOWN 32 ;#define MOUSEEVENTF_MIDDLEUP 64 ;#define MOUSEEVENTF_WHEEL 0x0800 /* wheel button rolled NT only*/ ;#define MOUSEEVENTF_ABSOLUTE 0x8000 /* absolute move */ repeat 4 mref v1,cnt : prm.cnt=v1 loop ll_callfnv@ func.1 prm.4=dllret@ ll_callfunc@ prm,5,func.2 return ;module終わり>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> #global