:
#include <Constants.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
Global Const $HC_ACTION = 0
Global $hStub_MouseProc = DllCallbackRegister("_MouseProc", "long", "int;wparam;lparam")
Global $hmod = _WinAPI_GetModuleHandle(0)
Global $hHook = _WinAPI_SetWindowsHookEx($WH_MOUSE_LL, DllCallbackGetPtr($hStub_MouseProc), $hmod)
HotKeySet('^+!e', '_ende') ; CTRL+SHIFT+ALT+E to exit.
OnAutoItExitRegister('ExitFunc')
While 1
Sleep(100)
WEnd
Func _ende()
Exit
EndFunc ;==>_ende
Func _MouseProc($nCode, $wParam, $lParam)
If $nCode < 0 Then
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndIf
If $nCode = $HC_ACTION Then
Switch $wParam
Case 0x0201
ConsoleWrite('No Click!' & @CRLF)
Return -1
;~ Case $WM_MBUTTONUP
;~ Return _mouse_event($MOUSEEVENTF_RIGHTUP) ; Returns -1; mouse click will be ignored.
EndSwitch
EndIf
Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
EndFunc ;==>_MouseProc
Func ExitFunc()
_WinAPI_UnhookWindowsHookEx($hHook)
DllCallbackFree($hStub_MouseProc)
EndFunc ;==>ExitFunc
Func _mouse_event($dwFlags)
DllCall("user32", 'long', 'mouse_event', 'long', $dwFlags, 'long', 0, 'long', 0, 'long', 0, 'long', 0)
Return -1
EndFunc ;==>_mouse_event
대단히 감사합니다. 나는 AutoIt에서 매우 새롭다. 그리고 그 이유에 의해, 2 가지 대답 중 어느 것이 더 나은지를 결정하는 것은 매우 어렵다. 그래서 지금 현재로서는 UDF가 필요없는 대답을 승인했지만 그 대답은 아마도 더 좋을 것이며 앞으로는 다시 인정할 것입니다. –
@ johnc.j. 당신의 질문, 당신의 선택; 두 가지 솔루션 모두 정확히 동일한 방법을 사용하여 동일한 결과를 얻을 수 있습니다 (UDF 없이는 기능 변경 방법을 이해해야합니다). [관련] (https://stackoverflow.com/a/9478844/4157124). – user4157124
매우 유용한 게시물입니다. 다시 감사합니다. –