- 500 名前:名無しさん@お腹いっぱい。 mailto:sage [2009/03/21(土) 09:41:42 ID:mEL9l3Hw0]
- ダブルクリック検出の件だが、何とかなったので張ってみる。コードのインデントに全角空白使ってるので注意。
; IsDoubleClicked関数 ; ダブルクリックを判定する関数、L,R,M,X1,X2の各ボタンに対応 ; システムからダブルクリック時間、範囲を取得して判定、AutoHotkey_Lの#ifでの使用を想定 IsDoubleClicked(){ Static dcTime=0,LastTime,tx,ty,LastMouseKey=0,lx=-256,ly=-256,lr=0 if(!dcTime){ dcTime:=DllCall("GetDoubleClickTime") SysGet,tx,36 SysGet,ty,37 LastTime:=A_TickCount-dcTime*2 } if(A_TickCount=LastTime) Return lr NowMouseKey:=(GetKeyState("LButton","P") | GetKeyState("RButton","P")<<1 | GetKeyState("MButton","P")<<2 | GetKeyState("XButton1","P")<<3 | GetKeyState("XButton2","P")<<4) VarSetCapacity(Point,8) DllCall("GetCursorPos","uint",&point) if((LastMouseKey!=NowMouseKey)||((A_TickCount-LastTime)>dcTime) ||(abs((NumGet(Point,0)-lx))>tx)||(abs((NumGet(Point,4)-ly))>ty)){ lx:=NumGet(Point,0),ly:=NumGet(Point,4) LastTime:=A_TickCount,LastMouseKey:=NowMouseKey Return lr:=0 } else{ LastTime:=A_TickCount-dcTime Return lr:=1 } }
|

|