Hab heute eine einfache Möglichkeit entdeckt, wie man einfach Rechtsklicks auf verschiedene Controls auswerten kann.
Spoiler anzeigen
#include <WinAPI.au3>
#include <WindowsConstants.au3>
Opt('GUIOnEventMode', 1)
[/autoit] [autoit][/autoit] [autoit]Global $LV_FirstClick = 0
[/autoit] [autoit][/autoit] [autoit]Global $hGUI = GUICreate("Test Rechtsklick", 210, 300)
GUISetOnEvent(-3, '_Exit')
GUIRegisterMsg($WM_CONTEXTMENU, "WM_RECHTSKLICK")
Global $Btn1 = GUICtrlCreateButton('Testbutton 1', 20,40)
Global $Btn2 = GUICtrlCreateButton('Testbutton 2', 120,40)
Global $Lbl1 = GUICtrlCreateLabel('Testlabel 1', 20,140)
Global $Lbl2 = GUICtrlCreateLabel('Testlabel 2', 120,140)
Global $LV = GUICtrlCreateList('Zeile1', 20, 180, 170, 80)
GUICtrlSetData(-1, "Zeile2")
GUICtrlSetData(-1, "Zeile3")
GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
Sleep(100000)
WEnd
Func _Exit()
Exit
EndFunc
Func WM_RECHTSKLICK($hWnd, $iMsg, $iwParam, $ilParam)
Local $IDCtrl = _WinAPI_GetDlgCtrlID($iwParam)
Local $x = BitAND($ilParam, 0x0000FFFF), $y = BitShift($ilParam, 16)
Switch $IDCtrl
Case $Btn1, $Btn2, $Lbl1, $Lbl2
MsgBox(64, GUICtrlRead($IDCtrl), "Klickposition: " & $x & " / " & $y)
Case $LV
If Not $LV_FirstClick Then
MouseClick('left', $x, $y, 1, 0)
$LV_FirstClick = 1
MouseClick('right', $x, $y, 1, 0)
Else
$LV_FirstClick = 0
MsgBox(64, GUICtrlRead($IDCtrl), "Klickposition: " & $x & " / " & $y)
EndIf
EndSwitch
EndFunc ;==>WM_CONTEXTMENU