これはトリックを行う必要があります。
#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
非常に便利な投稿です。ありがとうございました。 –