Hallo
Ich würde gern eine Msg zu GuiGetMsg() hinzufügen also wie $GUI_EVENT_CLOSE
z.b wenn die maus an der position 0,0 ist soll der sagen bin bei 0,0
geht das???
danke im voraus
Hallo
Ich würde gern eine Msg zu GuiGetMsg() hinzufügen also wie $GUI_EVENT_CLOSE
z.b wenn die maus an der position 0,0 ist soll der sagen bin bei 0,0
geht das???
danke im voraus
Mach halt n mousegetpos und ne if in die schleife...
Das war nur ein beispiel
du willst eine eigene WindowsMessage?
Ich fürchte, das geht nicht...
Meinst du z.B. so:
[autoit]
While 1
$nMsg = Msg()
Switch $nMsg
Case $MAUS_IST_LINKSOBEN
Das er dann eine Msg zurück gibt die das dann sagt das die Maus bei 0, 0 ist?
genau das mein ich ![]()
Hallo
Ich würde gern eine Msg zu GuiGetMsg() hinzufügen also wie $GUI_EVENT_CLOSE
z.b wenn die maus an der position 0,0 ist soll der sagen bin bei 0,0
geht das???
danke im voraus
Nein, das geht nicht soweit ich weiß. Jedenfalls nicht wirklich ...
Du kannst es aber so lösen ...
;
Global Const $WM_APP = 0x8000
Global Const $WM_MOUSEUPPERLEFT = $WM_APP + 1
Opt("MouseCoordMode", 2)
[/autoit] [autoit][/autoit] [autoit]$hwnd = GUICreate ("WM_APP Test")
[/autoit] [autoit][/autoit] [autoit]; Erste Möglichkeit
$MAUS_IST_LINKSOBEN = GUICtrlCreateDummy ( )
; Zweite Möglichkeit
GUIRegisterMsg ($WM_MOUSEUPPERLEFT, "WM_MOUSEUPPERLEFT")
GUISetState (@SW_SHOW, $hwnd)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While (True)
Switch (GUIGetMsg (False))
Case $GUI_EVENT_CLOSE
ExitLoop
Case $MAUS_IST_LINKSOBEN
ConsoleWrite ("+> Maus ist links-oben." & @crlf)
Case Else
CheckMousePos ( )
EndSwitch
WEnd
Func CheckMousePos ( )
[/autoit] [autoit][/autoit] [autoit]Local $aPos = MouseGetPos ( )
; Wenn Maus in der linken-oberen Ecke des Anwendungsbereichs
If ($aPos[0] == 0 and $aPos[1] == 0) Then
; Eine Nachricht an das Fenster senden.
SendMessage ($hwnd, $WM_MOUSEUPPERLEFT, 0, 0)
; Eine Nachricht an das Dummy-Steuerelement senden.
GUICtrlSendToDummy ($MAUS_IST_LINKSOBEN)
EndIf
EndFunc
[/autoit] [autoit][/autoit] [autoit]Func WM_MOUSEUPPERLEFT ( )
[/autoit] [autoit][/autoit] [autoit]Local $sMsgTitle = "WM_MOUSEUPPERLEFT"
Local $sMsgText = "Die Maus befindet sich links-oben im Anwendungsbereich."
MsgBox (266304, $sMsgTitle, $sMsgText)
Return 0
EndFunc
[/autoit] [autoit][/autoit] [autoit]Func SendMessage ($hWnd, $Msg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]Local $aRes = DllCall ('user32.dll', 'ulong', 'SendMessage', _
'hwnd', $hWnd, _
'uint', $Msg, _
'wparam', $wParam, _
'lparam', $lParam)
If @error Then _
Return @error
Return $aRes[0]
[/autoit] [autoit][/autoit] [autoit]EndFunc
;
1) Über ein "Dummy-Steuerelement" kannst Du Nachrichten per GUIGetMsg erhalten.
2) Eine eigene Nachricht definieren ($WM_APP + X) und diese dann an das betreffende Fenster senden.
Gruß
Greenhorn