Diese den Trick tun sollten:
#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
Vielen Dank. Ich bin sehr neu in AutoIt und aus diesem Grund ist es sehr schwer zu entscheiden, welche von 2 Antworten besser ist. Aus diesem Grund habe ich im vorliegenden Moment die Antwort genehmigt, die keine UDF benötigt, aber - Ihre Antwort ist wahrscheinlich besser und ich werde sie in Zukunft noch einmal annehmen. –
@ johnc.j. Deine Frage, deine Wahl; Beide Lösungen erreichen das gleiche Ergebnis mit genau den gleichen Methoden (ohne UDF müssen Sie verstehen, wie es funktioniert, die Funktionalität zu ändern). [Verwandte] (https://Stackoverflow.com/a/9478844/4157124). – user4157124
Sehr nützliche Post. Danke nochmal. –