Hilfe bei Getpos

03/28/2012 21:08 FreeStylaa#1
Servus!
Ich möchte wenn ich auf einen Button Klicke dass das Script in ein bestimmtes Fenster (Window) wechselt und bei einem Links-Klick in diesem Fenster die x,y Koordinaten unter einer bestimmten Variable ($COORDS01) abgelegt werden. Bei einem erneutem klicken des Buttons soll man die x,y Koordinaten neu definieren können.

Code:
while 1
   	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

Case $Button1 
If Not WinActivate("Window") Then
WinActivate("Window")
If MouseClick("left") Then $COORDS01 = MouseGetPos()
EndSwitch
wend
Bin leider nicht so Erfahren mit Autoit, Danke!
03/28/2012 21:18 Lawliet#2
Quote:
Originally Posted by FreeStylaa View Post
Servus!
Ich möchte wenn ich auf einen Button Klicke dass das Script in ein bestimmtes Fenster (Window) wechselt und bei einem Links-Klick in diesem Fenster die x,y Koordinaten unter einer bestimmten Variable ($COORDS01) abgelegt werden. Bei einem erneutem klicken des Buttons soll man die x,y Koordinaten neu definieren können.

Code:
while 1
   	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit

Case $Button1 
If Not WinActivate("Window") Then
WinActivate("Window")
If MouseClick("left") Then $COORDS01 = MouseGetPos()
EndSwitch
wend
Bin leider nicht so Erfahren mit Autoit, Danke!
Code:
$dll = DllOpen("user32.dll")
If WinActive("Title") = False Then WinActivate("Title")
If _isPressed("01",  $dll) then $COORDS01 = MouseGetPos()
Das sollte dir zumindest die Mausposition speichern.
03/28/2012 21:23 FreeStylaa#3
Code:
$dll = DllOpen("user32.dll")
Darf ich fragen was das genau für eine Funktion hat?
03/28/2012 21:26 Lawliet#4
Braucht die _isPressed Funktion.

Quote:
Falls diese Funktion wiederholt aufgerufen wird, sollte die Datei 'user32.dll' geöffnet werden und durch ein handle übergeben werden.
Es ist noch zu beachten, dass diese am Ende des Scripts geschlossen wird
03/28/2012 21:40 FreeStylaa#5
Code:
$dll = DllOpen("user32.dll")
If WinActive("Window") = False Then WinActivate("Window")
If _isPressed("$Button1 ",  $dll) then $COORD01 = MouseGetPos()
DllClose("user32.dll")
Ist das so richtig?
Gibt es keine "simplere" Lösung, denn das script muss nicht unbedingt "professionell" sein ;)
03/28/2012 22:00 Lawliet#6
Das ist eig. relativ simpel. Am besten packst du
Code:
$dll = DllOpen("user32.dll")
irgendwo ganz oben in dein Script, damit der Teil nicht öfters ausgeführt wird.
DllClose dann ganz am Ende.
04/01/2012 12:28 FreeStylaa#7
Code:
If _isPressed("01",  $dll) then $COORD01 = MouseGetPos()
If ^ ERROR
Diese Fehlermeldung kommt nun..
04/01/2012 12:30 jacky919#8
Code:
#include <Misc.au3>
vergessen?
04/01/2012 12:46 FreeStylaa#9
Funktioniert leider auch nicht.
Ist es normal das _isPressed, DDLOpen und DDlClose bei mir nich highlighted wird?

Code:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>
$dll = DllOpen("user32.dll")
HotKeySet("{F8}", "_01")
HotKeySet("{ESC}", "_exit")
Opt('TrayAutoPause', 0)

$Form1 = GUICreate("Form1", 175, 187, 200, 124)
$Group1 = GUICtrlCreateGroup("Functions", 16, 8, 145, 169)
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
$Label1 = GUICtrlCreateLabel("Func01", 32, 32, 76, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Button1 = GUICtrlCreateButton("SET", 40, 56, 65, 17)
$Label2 = GUICtrlCreateLabel("Func02", 35, 82, 94, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Button2 = GUICtrlCreateButton("SET", 42, 101, 65, 17)
$Label3 = GUICtrlCreateLabel("EXIT", 34, 129, 112, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
$Button3 = GUICtrlCreateButton("EXIT", 42, 146, 65, 17)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)


Func _01()
If Not WinActivate("Window") Then
WinActivate("Window")
EndIf
$pos = MouseGetPos()
Sleep(50)
MouseClick("left", $COORD01[0], $COORD01[1] ,1, 4)
sleep(50)
MouseClick("left", $pos[0], $pos[1] ,1, 4)
EndFunc



Func _exit()
DllClose("user32.dll")
 ToolTip("[Tooltip: OFF in 1 Sec!]", 0, 0)
 	sleep(1000)
    Exit
 EndFunc


while 1
   	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
	sleep(100)
ToolTip("[Tooltip: ON | F7: Func01 | ESC: EXIT]", 0, 0)
EndSwitch
If _isPressed("$Button1 ",  $dll) then
WinActivate("Window")
$COORD01 = MouseGetPos()
EndIf
wend
04/01/2012 13:06 jacky919#10
Quote:
WARNING: $COORD01: possibly used before declaration.
Wie der Fehler schon sagt, du nutzt eine Variable die nirgendswo deklariert wurde.
04/01/2012 13:08 FreeStylaa#11
Das heisst ich muss der Variable, in diesen Fall $COORD01, vorher schon einen Wert zuweisen?
04/02/2012 14:19 aj1987#12
nöö, das heisst das du die Variable, deklarieren sollst, bevor du sie benutzt...
Einfach am Anfang des Scripts Global $COORD01 und fertig...
Ausserdem is die Meldung kein Error sondern eine Warnung, welche es dir erlaubt das Script dennoch aszuführen...