|
You last visited: Today at 21:06
Advertisement
[GUI|Problem] Maus bewegen auf Knopfdruck
Discussion on [GUI|Problem] Maus bewegen auf Knopfdruck within the AutoIt forum part of the Coders Den category.
05/30/2012, 08:50
|
#1
|
elite*gold: 0
Join Date: Mar 2010
Posts: 91
Received Thanks: 3
|
[GUI|Problem] Maus bewegen auf Knopfdruck
Hey, ich wollte meine Maus zu den Koordinaten bewegen lassen, die in die Inputs eingegeben wurden. Das funktioniert aber iwie nicht. Ich weiß nicht, was ich falsch gemacht habe, ich hoffe jmd. von euch weiß es =)
Code:
Code:
#RequireAdmin
Dim $xy
Global $xread=0,$yread=0
$Gui = GUICreate("NosBot", 250, 250, 500, 250)
$leer = GUICtrlCreateCheckbox("Am Mauszeiger anzeigen",10,120,130,20)
$label = GUICtrlCreateLabel("x: ",50, 10, 70, 35)
GUICTRLSETFONT(-1,15,800,5)
$label2 = GUICtrlCreateLabel("y: ",140, 10, 70, 35)
GUICTRLSETFONT(-1,15,800,5)
$input = GUICtrlCreateInput("",50,50,58,25)
$input2 = GUICtrlCreateInput("",140,50,58,25)
GUICtrlCreateLabel("x: ",38, 53, 10, 20)
GUICTRLSETFONT(-1,10,800)
GUICtrlCreateLabel("y: ",128, 53, 10, 20)
GUICTRLSETFONT(-1,10,800)
$but=GUICtrlCreateButton("Bewegen!",38,80,162,20)
GUISetState()
While 1
$Mausz = GUICtrlRead($leer)
$msg = GUIGetMsg()
Select
Case $msg = -3
ExitLoop
Case $Mausz = 1
ToolTip("x:" & $xy[0] & " y:" & $xy[1])
Case $Mausz = 4
ToolTip("",0,0)
Case $msg=$but
$xread=GUICtrlRead($input)
$yread=GUICtrlRead($input2)
MouseMove($xread,$yread,900)
EndSelect
$xy = MouseGetPos()
GUICtrlSetData($label, "x: " & $xy[0])
GUICtrlSetData($label2, "y: " & $xy[1])
WEnd
|
|
|
05/30/2012, 09:48
|
#2
|
elite*gold: 6
Join Date: Mar 2010
Posts: 584
Received Thanks: 81
|
So funktioniert es:
Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Dim $xy
Global $xread=0,$yread=0
$Gui = GUICreate("NosBot", 250, 250, 500, 250)
$leer = GUICtrlCreateCheckbox("Am Mauszeiger anzeigen",10,120,130,20)
$label = GUICtrlCreateLabel("x: ",50, 10, 70, 35)
GUICTRLSETFONT(-1,15,800,5)
$label2 = GUICtrlCreateLabel("y: ",140, 10, 70, 35)
GUICTRLSETFONT(-1,15,800,5)
$input = GUICtrlCreateInput("",50,50,58,25)
$input2 = GUICtrlCreateInput("",140,50,58,25)
GUICtrlCreateLabel("x: ",38, 53, 10, 20)
GUICTRLSETFONT(-1,10,800)
GUICtrlCreateLabel("y: ",128, 53, 10, 20)
GUICTRLSETFONT(-1,10,800)
$but = GUICtrlCreateButton("Bewegen!",38,80,162,20)
GUISetState(@SW_SHOW)
While 1
$Mausz = GUICtrlRead($leer)
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $but
$xread=GUICtrlRead($input)
$yread=GUICtrlRead($input2)
MouseMove($xread,$yread,900)
EndSwitch
$xy = MouseGetPos()
GUICtrlSetData($label, "x: " & $xy[0])
GUICtrlSetData($label2, "y: " & $xy[1])
If $Mausz = 1 then
ToolTip("x:" & $xy[0] & " y:" & $xy[1])
EndIf
If $Mausz = 4 then
ToolTip("",0,0)
EndIf
WEnd
Nur verstehe ich nicht , was willst du damit bezwecken?
|
|
|
05/30/2012, 14:49
|
#3
|
elite*gold: 0
Join Date: Mar 2010
Posts: 91
Received Thanks: 3
|
Naja.. Wenn man Das mit dem Tooltip an hatte und den Haken dann bei der Checkbox weg macht, bleibt der einfach stehn und zeigt die letzten Werte an.
Damit wird der halt weg gemacht...
Wusste nicht, wie ich es anders Lösen sollte, klappt aber..
Danke Erstmal.. ich versuch zu verstehn wo der Fehler war =P
|
|
|
05/30/2012, 17:19
|
#4
|
elite*gold: 6
Join Date: Mar 2010
Posts: 584
Received Thanks: 81
|
Edit: KDeluxe hat die richtige Lösung!
|
|
|
05/30/2012, 18:52
|
#5
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Quote:
Originally Posted by Shrezz
Nur verstehe ich nicht , was willst du damit bezwecken?
|
4 entspricht $GUI_UNCHECKED, der zurückgegebene Status/Wert von GUICtrlRead(), wenn eine Checkbox nicht ausgewählt wurde. Warum er das macht hat er ja schon geschrieben.
Kommen wir mal zur einfachen Lösung:
Code:
#RequireAdmin
Dim $xy
Global $xread=0,$yread=0
$Gui = GUICreate("NosBot", 250, 250, 500, 250)
$leer = GUICtrlCreateCheckbox("Am Mauszeiger anzeigen",10,120,130,20)
$label = GUICtrlCreateLabel("x: ",50, 10, 70, 35)
GUICTRLSETFONT(-1,15,800,5)
$label2 = GUICtrlCreateLabel("y: ",140, 10, 70, 35)
GUICTRLSETFONT(-1,15,800,5)
$input = GUICtrlCreateInput("",50,50,58,25)
$input2 = GUICtrlCreateInput("",140,50,58,25)
GUICtrlCreateLabel("x: ",38, 53, 10, 20)
GUICTRLSETFONT(-1,10,800)
GUICtrlCreateLabel("y: ",128, 53, 10, 20)
GUICTRLSETFONT(-1,10,800)
$but=GUICtrlCreateButton("Bewegen!",38,80,162,20)
GUISetState()
While 1
$Mausz = GUICtrlRead($leer)
$msg = GUIGetMsg()
Select
Case $msg = -3
ExitLoop
Case $msg=$but
$xread=GUICtrlRead($input)
$yread=GUICtrlRead($input2)
MouseMove($xread,$yread,900)
Case $Mausz = 1
ToolTip("x:" & $xy[0] & " y:" & $xy[1])
Case $Mausz = 4
ToolTip("",0,0)
EndSelect
$xy = MouseGetPos()
GUICtrlSetData($label, "x: " & $xy[0])
GUICtrlSetData($label2, "y: " & $xy[1])
WEnd
Alles geändert werden musste war die Positionierung der Abfrage, ob $msg gleich $but ist.
Der Fehler bestand darin, dass die Abfrage, ob $msg gleich $but ist, nach der Überprüfung der Checkbox kam. Die Checkbox kann in diesem Fall 2 Werte annehmen, einmal $GUI_CHECKED (1) und $GUI_UNCHECKED (4). Da einer dieser beiden Bedingungen immer erfüllt wird, werden unten folgende Case-Statements "ignoriert".
Auf diesen Teil aus Shrezzs Script sollte man auf jeden Fall verzichten. Hier wird abgefragt, ob die Checkbox den Wert "True" annimmt. "False" entspricht 0, "True" entspricht allen Zahlen mit Ausnahme von 0. Da die Checkbox den Wert 0 nie annimmt, wird das Tooltip nach dem erstellen gleich wieder gelöscht.
Außerdem müsstest du das Flimmern/Flackern der Label schon bemerkt haben. Deshalb solltest du immer ein beachten: Ändere nie etwas unnötig.
Zur CPU Entlastung solltest du außerdem ein kleines Sleep von 10 bis 50 ms Verwenden. Höhere Werte verursachen nur verzögerte Reaktionen der GUI-Elemente.
Hier mal ein Beispiel, wie es besser gemacht ist:
Code:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
GUICreate("", 100, 125)
$lbl_CursorX = GUICtrlCreateLabel("X", 5, 5, 90)
$lbl_CursorY = GUICtrlCreateLabel("Y", 5, 25, 90)
$inp_PointX = GUICtrlCreateInput("0", 5, 45, 90, 21, $ES_NUMBER)
$inp_PointY = GUICtrlCreateInput("0", 5, 70, 90, 21, $ES_NUMBER)
$btn_MoveCursor = GUICtrlCreateButton("Bewegen", 5, 95, 90)
GUISetState()
Do
$nMsg = GUIGetMsg()
If $nMsg == $btn_MoveCursor Then
$nPointX = GUICtrlRead($inp_PointX)
$nPointY = GUICtrlRead($inp_PointY)
;~ If (($nPointX >= 0) And ($nPointX <= @DesktopWidth)) Then
;~ If (($nPointY >= 0) And ($nPointY <= @DesktopHeight)) Then
MouseMove($nPointX, $nPointY)
;~ EndIf
;~ EndIf
EndIf
$nCursorPos = MouseGetPos()
$nCursorX = GUICtrlRead($lbl_CursorX)
$nCursorY = GUICtrlRead($lbl_CursorY)
If Not ($nCursorX == $nCursorPos[0]) Then _
GUICtrlSetData($lbl_CursorX, $nCursorPos[0])
If Not ($nCursorY == $nCursorPos[1]) Then _
GUICtrlSetData($lbl_CursorY, $nCursorPos[1])
Sleep(50)
Until $nMsg == $GUI_EVENT_CLOSE
Bei Unklarheiten kannst du dich ja rühren (PNs an mich ignoriere ich übrigens).
|
|
|
05/30/2012, 19:05
|
#6
|
elite*gold: 6
Join Date: Mar 2010
Posts: 584
Received Thanks: 81
|
Quote:
Originally Posted by KDeluxe
4 entspricht $GUI_UNCHECKED, der zurückgegebene Status/Wert von GUICtrlRead(), wenn eine Checkbox nicht ausgewählt wurde. Warum er das macht hat er ja schon geschrieben.
Kommen wir mal zur einfachen Lösung:
Code:
#RequireAdmin
Dim $xy
Global $xread=0,$yread=0
$Gui = GUICreate("NosBot", 250, 250, 500, 250)
$leer = GUICtrlCreateCheckbox("Am Mauszeiger anzeigen",10,120,130,20)
$label = GUICtrlCreateLabel("x: ",50, 10, 70, 35)
GUICTRLSETFONT(-1,15,800,5)
$label2 = GUICtrlCreateLabel("y: ",140, 10, 70, 35)
GUICTRLSETFONT(-1,15,800,5)
$input = GUICtrlCreateInput("",50,50,58,25)
$input2 = GUICtrlCreateInput("",140,50,58,25)
GUICtrlCreateLabel("x: ",38, 53, 10, 20)
GUICTRLSETFONT(-1,10,800)
GUICtrlCreateLabel("y: ",128, 53, 10, 20)
GUICTRLSETFONT(-1,10,800)
$but=GUICtrlCreateButton("Bewegen!",38,80,162,20)
GUISetState()
While 1
$Mausz = GUICtrlRead($leer)
$msg = GUIGetMsg()
Select
Case $msg = -3
ExitLoop
Case $msg=$but
$xread=GUICtrlRead($input)
$yread=GUICtrlRead($input2)
MouseMove($xread,$yread,900)
Case $Mausz = 1
ToolTip("x:" & $xy[0] & " y:" & $xy[1])
Case $Mausz = 4
ToolTip("",0,0)
EndSelect
$xy = MouseGetPos()
GUICtrlSetData($label, "x: " & $xy[0])
GUICtrlSetData($label2, "y: " & $xy[1])
WEnd
Alles geändert werden musste war die Positionierung der Abfrage, ob $msg gleich $but ist.
Der Fehler bestand darin, dass die Abfrage, ob $msg gleich $but ist, nach der Überprüfung der Checkbox kam. Die Checkbox kann in diesem Fall 2 Werte annehmen, einmal $GUI_CHECKED (1) und $GUI_UNCHECKED (4). Da einer dieser beiden Bedingungen immer erfüllt wird, werden unten folgende Case-Statements "ignoriert".
Auf diesen Teil aus Shrezzs Script sollte man auf jeden Fall verzichten. Hier wird abgefragt, ob die Checkbox den Wert "True" annimmt. "False" entspricht 0, "True" entspricht allen Zahlen mit Ausnahme von 0. Da die Checkbox den Wert 0 nie annimmt, wird das Tooltip nach dem erstellen gleich wieder gelöscht.
Außerdem müsstest du das Flimmern/Flackern der Label schon bemerkt haben. Deshalb solltest du immer ein beachten: Ändere nie etwas unnötig.
Zur CPU Entlastung solltest du außerdem ein kleines Sleep von 10 bis 50 ms Verwenden. Höhere Werte verursachen nur verzögerte Reaktionen der GUI-Elemente.
Hier mal ein Beispiel, wie es besser gemacht ist:
Code:
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
GUICreate("", 100, 125)
$lbl_CursorX = GUICtrlCreateLabel("X", 5, 5, 90)
$lbl_CursorY = GUICtrlCreateLabel("Y", 5, 25, 90)
$inp_PointX = GUICtrlCreateInput("0", 5, 45, 90, 21, $ES_NUMBER)
$inp_PointY = GUICtrlCreateInput("0", 5, 70, 90, 21, $ES_NUMBER)
$btn_MoveCursor = GUICtrlCreateButton("Bewegen", 5, 95, 90)
GUISetState()
Do
$nMsg = GUIGetMsg()
If $nMsg == $btn_MoveCursor Then
$nPointX = GUICtrlRead($inp_PointX)
$nPointY = GUICtrlRead($inp_PointY)
;~ If (($nPointX >= 0) And ($nPointX <= @DesktopWidth)) Then
;~ If (($nPointY >= 0) And ($nPointY <= @DesktopHeight)) Then
MouseMove($nPointX, $nPointY)
;~ EndIf
;~ EndIf
EndIf
$nCursorPos = MouseGetPos()
$nCursorX = GUICtrlRead($lbl_CursorX)
$nCursorY = GUICtrlRead($lbl_CursorY)
If Not ($nCursorX == $nCursorPos[0]) Then _
GUICtrlSetData($lbl_CursorX, $nCursorPos[0])
If Not ($nCursorY == $nCursorPos[1]) Then _
GUICtrlSetData($lbl_CursorY, $nCursorPos[1])
Sleep(50)
Until $nMsg == $GUI_EVENT_CLOSE
Bei Unklarheiten kannst du dich ja rühren (PNs an mich ignoriere ich übrigens).
|
Ok danke, so hab ich jetzt auch was gelernt(:
|
|
|
 |
Similar Threads
|
Maus bewegen?
11/29/2011 - AutoIt - 2 Replies
Hallo Leute,
ich habe heute zum Ersten mal AutoIt verwendet und zwar um ein winziges Programm zu machen.
Da ich mich erst kurze Zeit mit AutoIt beschäftigt habe, habe ich eine Frage.
Und zwar will ich ein Programm öffnen und in dem Programm muss auf einen bestimmten Button doppelt gedrückt werden. Das Programm öffnen funktioniert bis jetzt, aber wie mache ich, dass AutoIt zu einem Button fährt und doppelt auf ihn drückt?
lg OL!VER
|
Maus aus fenster bewegen
05/06/2011 - League of Legends - 15 Replies
hallo leute kennt jemand ein programm / trick egal was damit ich die maus aus dem LOL fenster bewegen kann ??
kenne 2 möglichkeiten
1. Task manager (dauert zu lange)
2. Alt+tab (aber kann nur die offenen fenster auswählen)
bitte um hilfe nervt total da ich kein lied weiter machen kann oder schnell ein guide nach schauen !
|
vb 8 Maus bewegen lassen?
07/04/2010 - .NET Languages - 4 Replies
Wie schon in der Überschrift kann ich mit Visual Basic 2008 meine Maus bewegen lassen?
|
[Problem]Maus nit mehr bewegen?? wtf?
01/31/2009 - Metin2 - 11 Replies
hi
ich hab den folgenden problem
manchmal wenn ich metin im fenstermodus spiele und ein neues fenster kommt zb letztens hab ich msn aufgemacht gespielt da kam son internet explorer da konnt ich die maus nichtmehr bewegen ES HING FEST
hab auf diesen knopf am rechner gedrück damit ich wieder mein pc benutzen konnte und im vollbild drück ich ausversehen alt + w dann kommt mein desktop und es hängt fest?? ich drück das weil alt = alle namen w = laufen
ich hasse das wenn es kommt ich weiß das...
|
Mal ne Frage: Programme die die Maus bewegen...
08/21/2006 - World of Warcraft - 12 Replies
Es gibt ja programme, die die Maus nach einer bestimmten Zeit auf ne voreingestellte xy pixel Stelle des Bildschirms bewegen und dann klicken. Das wird kann mehrmals wiederholt
Wie leicht kann Blizzard das rausfinden? Und den Acc ggf bannen?
|
All times are GMT +1. The time now is 21:06.
|
|