ControlClick Coords

10/23/2010 21:51 omer36#1
hey hey...

kurz und knapp:

wie bekomm ich die "ControlClick Coords" raus, ohne den autoitwindowinfo tool zu benutzen?

hab schon einiges versucht aber klappt iwie nichts....

mfg
10/23/2010 22:10 lolkop#2
Quote:
Originally Posted by omer36 View Post
hey hey...

kurz und knapp:

wie bekomm ich die "ControlClick Coords" raus, ohne den autoitwindowinfo tool zu benutzen?

hab schon einiges versucht aber klappt iwie nichts....

mfg
das sind relative coors zum control...
controlgetpos mit den aktuellen coors in verbindung setzen, und du erhälst coors die immer passen, egal wo sich das fester befindet.
10/23/2010 22:22 omer36#3
hää kapier ich irgentwie nicht :S

kannste ma bitte nen kleinen bsp geben?

controlgetpos gibt mir nur die Position und Size wieder...
wie soll ich daraus und den normalen koordinaten den control entnehmen?
10/23/2010 22:44 PenGuin :O#4
Du hast GUI Position...
Und Controlposition

GUI Left + Control Left = x
GUI Top + Control Top = y

ganz einfache Mathematik, wo ist das Problem?
10/23/2010 23:39 omer36#5
-.-!

PHP Code:
$size WinGetPos("ControlClick Coords - Mozilla Firefox")
MsgBox(0"Active window stats (x,y,width,height):"$size[0] & " " $size[1] & " " $size[2] & " " $size[3])
;= -
,-819361056

$pos 
ControlGetPos("ControlClick Coords - Mozilla Firefox""""MozillaWindowClass2")
MsgBox("",""$pos[0] & ", "$pos[1] & ", "$pos[2] & ", "&$pos[3] )


; = 
Position:    0109
; = Size:    1920887


;normale maus 767359




;suche in dem bsp das -->  767228 
blick grad 0 durch, was ich falsch mache :mad:
10/24/2010 00:17 lolkop#6
die kann man so nicht errechnen -.-
das sind einfach nur relative koordinaten...

nehmen wir mal als beispiel den windows rechner (calc.exe)
das anzeige control hat diese daten:
Code:
Position: 11, 10
Size:      385, 50
wenn ich jetzt das window info tool nutze, und in diesem feld irgendwo hinzeige, bekomme ich für die coors einen wert (x, y) zwischen 0, 0 und 385, 50

ausgehend von diesem control.

lasse ich mir beispielsweise den die controlclick coors vom ersten pixel ganz oben links anzeigen, so erhalte ich 0, 0. das liegt einfach nur daran, das der abstand vom beginn des controls genau 0 beträgt.

ganz unten rechts würde ich dementsprechend als coos die control size etrhalten, da der abstand vom beginn des controls die maximale entfernung beträgt.
10/24/2010 00:41 PenGuin :O#7
Bitte:

Code:
Func _GetControlPos($hWnd, $hControl)
	Local $ControlPos[2]
	$WinPos = WinGetPos($hWnd)
	$CtrlPos = ControlGetPos($hWnd, "", $hControl)
	$ControlPos[0] = $WinPos[0] + ($CtrlPos[0] + ($CtrlPos[2] / 2))
	$ControlPos[1] = $WinPos[1] + ($CtrlPos[1] + ($CtrlPos[3] / 2))
	Return $ControlPos
EndFunc
Gibt die Mitte des Controls zurück, als Array.
0. Index = x
1. index = y

relativ zum ganzen Fenster..
$hWnd = Fensterhandle
$hControl = ControlID
10/24/2010 01:27 maxi39#8
PHP Code:
HotKeySet("{F1}","_a"

While 


    Sleep
(200

WEnd 


Func _a
() 

    While 

$size 
WinGetPos("[active]"
$NMSG=GUIGETMSG() 
$POS=MOUSEGETPOS() 
$Size1 $Size[0
$Size2 $Size[1

TOOLTIP(($POS[0]-$Size1)&" / "&($POS[1]-$Size2)) 


WEnd 

EndFunc 
10/24/2010 01:31 lolkop#9
ich war davon aus gegangen, dass er die aktuellen control coors der maus allgemein anzeigen will. und um das wirklich genau umzusetzen, müsste man jeden windowstyle extra behandeln... desweiteren müsste man auf menüs prüfen, da auch diese den relativen bezugspunkt ändern könnten...

der grundaufbau der funktion würde so aussehen:
Code:
Func GetControlClickCoors()
	Local $return[2], $mouse_pos[2], $win_pos[2], $control_pos[2]
	Local $title, $cid, $style
	$title = WinGetHandle('[ACTIVE]')
	$cid = ControlGetFocus($title)
	$mouse_pos = MouseGetPos()
	$win_pos = WinGetPos($title, '')
	$control_pos = ControlGetPos($title, '', $cid)
	If IsArray($mouse_pos) And IsArray($win_pos) And IsArray($control_pos) Then
		$return[0] = $mouse_pos[0]-($win_pos[0]+$control_pos[0])
		$return[1] = $mouse_pos[1]-($win_pos[1]+$control_pos[1])
	EndIf
	Return $return
EndFunc
in diese rechnung müsste man jetzt natürlich noch die ganzen style parameter aufnehmen, da die position immer relativ zur fenster position gemessen wird... wenn das fenster nun aber noch eine titelbar hat, stimmt das ganze zb schon nichtmehr... dann kommt es natürlich noch auf die kantenbreiten an, ob das fenster sunken edges hat, und so weita....
10/24/2010 01:49 omer36#10
ohh mann... -.-

hätte nicht gedacht, dass es so umständlich wird...

warum kann ich den teil nicht iwie vom au3 infotool rauskopieren... :D


danke trozdem, aber wird wohl nix ^^