Hi
Welche Funktion kann man verwenden um die Control Click Cords eines Fensters zu erhalten?
die GetMousePos Funktion klappt hier nicht da es für das ganze Fenster gilt.
eine GetMouseControlPos funktion wäre super = ).
vielelicht hat jemand helfen.
danke
mfg
neo
Control Click Cords
-
- [ offen ]
-
XNeoX -
28. Mai 2009 um 16:12 -
Geschlossen -
Erledigt
-
-
ich weiß nicht ob ich dich richtig verstanden habe aber das könnte mit
[autoit]_WinApi_GetMousePos
[/autoit]
_WinApi_GetMousePosX
_WinApi_GetMousePosY
gehen.Schau dir einfach mal das Beispiel dazu in der Hilfe an. -
sieht gut aus blicks zwar noch nicht ganz aber ok
mal angucken danke
*edit öhm wo genau kann man mit dieser funktion denn das fenster angeben in dem man die coordinaten finden will = O?
*edit2
nein also mit der funktion geht das nciht vergleich mal die gegebenen koordinaten mit den koordinaten des AutoIt v3 Window Infos -
Moin,
sollte gehen ...:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Funktion: ControlGetMousePos
;; Zweck: Prüft, ob sich die Maus innerhalb eines
;; Steuerelements befindet und gibt, falls ja,
;; die Position relativ zum Steuerelement zurück.
;;
Func ControlGetMousePos ($hwnd, $controlID)Local $iMCMold, $aMousePos, $aCtrlPos
[/autoit] [autoit][/autoit] [autoit]; Maus-Koordinaten relativ zum Anwendungsbereich
[/autoit] [autoit][/autoit] [autoit]
$iMCMold = Opt ("MouseCoordMode", 2)$aMousePos = MouseGetPos ( )
[/autoit] [autoit][/autoit] [autoit]$aCtrlPos = ControlGetPos ($hwnd, "", $controlID)
[/autoit] [autoit][/autoit] [autoit]If @error == 1 Then _
[/autoit] [autoit][/autoit] [autoit]
Return False; x-Achse prüfen
[/autoit] [autoit][/autoit] [autoit]
If ($aMousePos[0] >= $aCtrlPos[0] And _
$aMousePos[0] <= $aCtrlPos[0]+$aCtrlPos[2]) Then
; y-Achse prüfen
If ($aMousePos[1] >= $aCtrlPos[1] And _
$aMousePos[1] <= $aCtrlPos[1]+$aCtrlPos[3]) Then
$aMousePos[0] -= $aCtrlPos[0]
$aMousePos[1] -= $aCtrlPos[1]
Opt ("MouseCoordMode", $iMCMold)
Return $aMousePos
EndIf
Else
Opt ("MouseCoordMode", $iMCMold)
Return False
EndIfEndFunc
[/autoit] [autoit][/autoit] [autoit];
[/autoit]Gruß
Greenhorn -
Oder MouseGetPos einfach mit Handle.
-
kleine erklärung vielleicht = s
-
Moin,
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>$iWidth = 300
[/autoit] [autoit][/autoit] [autoit]
$iHeight = 200$hWndMain = GUICreate ("Testfenster", _
[/autoit] [autoit][/autoit] [autoit]
$iWidth, $iHeight, -1, -1, _
BitOR ($WS_BORDER, $WS_CAPTION, $WS_SYSMENU, $WS_MINIMIZEBOX, $WS_CLIPCHILDREN), _
$WS_EX_OVERLAPPEDWINDOW)$idStatic_1 = GUICtrlCreateLabel ("", 10, 10, $iWidth-20, $iHeight-60)
[/autoit] [autoit][/autoit] [autoit]
$idButton_1 = GUICtrlCreateButton ("Fenster-Info", ($iWidth/2)-40, $iHeight-40, 80)GUICtrlSetFont ($idStatic_1, 10, 400, 0, "Lucida Console")
[/autoit] [autoit][/autoit] [autoit]GUISetState (@SW_SHOW, $hWndMain)
[/autoit] [autoit][/autoit] [autoit]While True
[/autoit] [autoit][/autoit] [autoit]
Switch GUIGetMsg ( )
Case -3
ExitLoop
Case $idButton_1
$aPos = ControlGetMousePos ($hWndMain, $idButton_1)
If IsArray ($aPos) Then
GUICtrlSetData ($idStatic_1, _
StringFormat ("xPos = %d\nyPos = %d", _
$aPos[0], _ ; x
$aPos[1] )) ; y
EndIfEndSwitch
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
WEnd;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
[/autoit] [autoit][/autoit] [autoit]
;; Funktion: ControlGetMousePos
;; Zweck: Prüft, ob sich die Maus innerhalb eines
;; Steuerelements befindet und gibt, falls ja,
;; die Position relativ zum Steuerelement zurück.
;;
Func ControlGetMousePos ($hwnd, $controlID)Local $iMCMold, $aMousePos, $aCtrlPos
[/autoit] [autoit][/autoit] [autoit]; Maus-Koordinaten relativ zum Anwendungsbereich
[/autoit] [autoit][/autoit] [autoit]
$iMCMold = Opt ("MouseCoordMode", 2)$aMousePos = MouseGetPos ( )
[/autoit] [autoit][/autoit] [autoit]$aCtrlPos = ControlGetPos ($hwnd, "", $controlID)
[/autoit] [autoit][/autoit] [autoit]If @error == 1 Then _
[/autoit] [autoit][/autoit] [autoit]
Return False; x-Achse prüfen
[/autoit] [autoit][/autoit] [autoit]
If ($aMousePos[0] >= $aCtrlPos[0] And _
$aMousePos[0] <= $aCtrlPos[0]+$aCtrlPos[2]) Then
; y-Achse prüfen
If ($aMousePos[1] >= $aCtrlPos[1] And _
$aMousePos[1] <= $aCtrlPos[1]+$aCtrlPos[3]) Then
$aMousePos[0] -= $aCtrlPos[0]
$aMousePos[1] -= $aCtrlPos[1]
Opt ("MouseCoordMode", $iMCMold)
Return $aMousePos
EndIf
Else
Opt ("MouseCoordMode", $iMCMold)
Return False
EndIfEndFunc
[/autoit] [autoit][/autoit] [autoit]Exit (0)
[/autoit]
;Gruß
Greenhorn -
Und die Kurzversion
[autoit]
#include <WinAPI.au3>
[/autoit]
Func _MouseInCtrl($hWnd)
; Prog@ndy
If Not IsHWnd($hWnd) Then $hWnd = GUICtrlGetHandle($hWnd)
Local $tRECT = _WinAPI_GetWindowRect($hWnd)
Local $tPOINT = _WinAPI_GetMousePos()
If _WinAPI_PtInRect($tPOINT,$tPOINT) Then
Local $aMousePos[2] = [_WinAPI_GetMousePosX(True, $hWnd),_WinAPI_GetMousePosY(True, $hWnd)]
Return $aMousePos
EndIf
Return False
EndFunc