|
You last visited: Today at 23:12
Advertisement
Hilfe im Code
Discussion on Hilfe im Code within the AutoIt forum part of the Coders Den category.
10/09/2011, 20:35
|
#1
|
elite*gold: 0
Join Date: Aug 2010
Posts: 4
Received Thanks: 0
|
Hilfe im Code
Hi Leute !
Ich hab ein kleines Problem:
Ich hab mal in AutoIT ein bischen mit GUI gespielt;funzt aber nicht
Hier mal der Code
Code:
GuiCreate("Click!",200,220,399,140)
$button2=GuiCtrlCreateButton("Stop",117,57,52,101)
$button1=GuiCtrlCreateButton("Start",20,57,52,101)
$button3=GuiCtrlCreateButton("beenden" ,20,160,150,40)
$input1=GuiCtrlCreateInput("Time in sec.",20,35,150,20)
$msg=GuiGetMsg()
If $msg=-3 Then Exit
If $msg=$button1 Then button1()
If $msg=$button2 Then button2()
GuiSetState()
While 1
$msg=GuiGetMsg()
IF $msg=$button3 Then button3()
WEnd
$time = GUICtrlRead($input1) * 1000
;;;;;
Func button1()
While 1
MouseClick("left")
sleep ("$time")
WEnd
EndFunc
;;;;;
Func button2()
exit func button1()
EndFunc
;;;;;
Func button3()
Exit
EndFunc
Eigendlich sollte es alle "eingestellte Zeit" einmal auf den linken Maus-Button klicken,tuts aber leider nicht ! ?
Vielen Dank schonmal im Vorraus,
Philipp
|
|
|
10/09/2011, 20:44
|
#2
|
elite*gold: 52
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
|
Entfern mal mal bei Sleep die "".
Ansonsten ergibt dein Script wenig sinn.
Erstell mal in Koda, einem Tool um GUIs zu erstellen eine GUI und kugg dir an, was es ausspuckt.
Eine Abfrage wie If $msg=$button2 Then button2() sollte in einer While schleife stehen, da das script dort sonst nur einmal drüberläuft. In der While wird die Abfrage immer wiederholt.
In deinem Fall sollte nur der Button 3 funktionieren, weil er in der ersten While schleife bleibt und dort nur dieser abgefragt wird.
Aus diesem Grund sollte dein Script auch nie an die Stelle kommen, an der $time deklariert wird. Das deklarierst du dann am Anfang der Funktion.
|
|
|
10/09/2011, 23:33
|
#3
|
elite*gold: 0
Join Date: Oct 2010
Posts: 51
Received Thanks: 12
|
mal von oben nach unten:
GuiGetMsg + Auswertung macht erst Sinn, wenn der Nutzer überhaupt etwas an dem Gui machen kann, was ja erst nach dem GuiSetState kommt, also sind deine auswertungen davor sinnlos, außerdem kommen sie ja danach nochmal und erst in der While schleife machen sie sinn.
Außerdem kann man in der While schleife mit einem Switch arbeiten, ich denke so wie es Koda macht ist es am effektivsten. Dadurch dass du nur für fall Button3 eine Reaktion eingebaut hast, wird dein Program sich nicht schließen wenn du oben rechts das rote kreuz drückst oder iwas anderes machen außer auf Button 3 reagieren^^
Die Zeile mit $time = ist vollkommen sinnlos, da die ja garnicht aufgerufen wird, du musst dir mal den Ablauf des Programmes von Augen führen.
so, und daher kommt auch ein Fehler bei dem Sleep. Erstens wie schon gesagt müssen die "" weg und zweitens gibt es die Variable $time zu diesem Zeitpunkt nicht (bzw sie wurde vorher nicht deklariert)
Außerdem wird ja in dieser Funktion nur ein rechtsklick simuliert - ohne jegliche Koordinatenangabe oder ähnliches, ich weiß nicht, ob du das so willst.
dann bei dem
exit func Button1
machst du ja ein exit nachdem die Funktion button1 noch einmal aufgerufen wird - nur hat diese eine endlosschleife und der exit wird nicht ausgeführt.
Ich weiß, ich hab einiges Wiederholt - BlackHybrid, bitte sei mir nicht böse
|
|
|
10/10/2011, 06:00
|
#4
|
elite*gold: 52
Join Date: Oct 2010
Posts: 1,998
Received Thanks: 389
|
Deswegen hab ich ja gesagt, dass er sich erstmal ankuggen soll, was Koda ausspuckt :P
|
|
|
10/10/2011, 15:05
|
#5
|
elite*gold: 0
Join Date: Aug 2010
Posts: 4
Received Thanks: 0
|
Hi,
Danke Leute für eure Hilfe!
Hab mir mal Koda angeschaut und den Code überarbeitet:
Code:
#include <GUIConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Dialog", 240, 100, 349, 252)
GUISetIcon("D:\003.ico")
$Button1 = GUICtrlCreateButton("&Start", 1, 43, 75, 25, 0)
$Button2 = GUICtrlCreateButton("&Stop", 162, 43, 75, 25, 0)
$Button3 = GUICtrlCreateButton("beenden", 80, 48, 75, 33, 0)
$Time = GUICtrlCreateInput("Time in sec.", 64, 16, 121, 21)
GUICtrlSetCursor (-1, 2)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
case $Button3
Exit
EndSwitch
WEnd
;Ab hier funktionierts nicht mehr !?
;;;;;
Func button1()
While 1
MouseClick("left")
sleep ($time)
WEnd
EndFunc
;;;;;
Func button2()
exit func button1()
EndFunc
Aber die eigendliche Funktion geht immer noch nicht
viele Grüße und Danke
Philipp
|
|
|
10/10/2011, 15:49
|
#6
|
elite*gold: 0
Join Date: Mar 2009
Posts: 2,317
Received Thanks: 1,255
|
PHP Code:
#include <GUIConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Dialog", 240, 100, 349, 252)
GUISetIcon("D:\003.ico")
$Button1 = GUICtrlCreateButton("&Start", 1, 43, 75, 25, 0)
$Button2 = GUICtrlCreateButton("&Stop", 162, 43, 75, 25, 0)
$Button3 = GUICtrlCreateButton("beenden", 80, 48, 75, 33, 0)
$Time = GUICtrlCreateInput("Time in sec.", 64, 16, 121, 21)
GUICtrlSetCursor (-1, 2)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
Global $start = False
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE ;wenn das rote X oben rechts gedrückt wird
Exit ;beendet sich das programm
case $Button1 ;wenn $button1 gedrückt wird,
_start() ;passiert das (hier wird dann die funktion aufgerufen)
Case $Button2 ;wenn $button2 gedrückt wird,
_stop() ;passiert dies
Case $Button3 ;und bei $button3
Exit ;beendet sich das programm
EndSwitch
WEnd
Func _start() ;$button1 wurde gedrückt
;;;;hierhin was passieren soll
EndFunc
Func _stop() ;$button2 wurde gedrückt
;;;;hierhin was passieren soll
EndFunc
und wenn du den inhalt aus einem gui-/objekt auslesen willst, musst du den GuiCtrlRead() befehl nutzen
bei deinem Sleep() befehl, würde es zb so aussehen:
Sleep(GuiCtrlRead($Time)*1000)
*1000 weil du es sonnst in millisec eingeben musst
|
|
|
 |
Similar Threads
|
BB code hilfe
01/22/2011 - WarRock - 10 Replies
#Closerequest Problem gelöst
|
BB code hilfe
01/22/2011 - Main - 1 Replies
hallo,
Ich möchte in meine signatur einen spoiler machen und in dem spoiler soll iene tabelle sein in der meine kontacktmöglichkeiten stehen kann mir da einer helfen hab das bei einem anderen user gesehen und möchte dies auch haben
|
Hilfe für Code
11/29/2010 - AutoIt - 10 Replies
hi ich wollte ein programm machen, dass wenn ich eine taste drücke (z.b. f) dass es dann von selbst 7mal die linke maustaste drückt. Und das ganze in dem prozess: engine.exe . Ich habe schon im help file usw gesucht aber ich finde keinen passenden befehl dazu, könnt ihr mir bitte helfen bin noch noob in autoit :D
|
Hilfe bei Hex?Code
07/19/2009 - Flyff - 3 Replies
Hallo,
hat jmd von euch ne Idee, wozu heiordas gehört?
It was '00 00 2a 00 ff ff ff ff 00 00 00 00 00 00 80 bf
MfG DT
|
Hilfe bei Bat code
03/04/2008 - General Coding - 14 Replies
Hallo ich habe diesen bat code und er funktioniert gut.
aber das ding ist
ich würde ihn gerne umschreiben das er sich auch in die autostart datei einschriebt so das jedesmal wenn der pc neugestartet wird es immer wieder erscheint.
Ist das möglich?
wenn ja bitte den code von mir verändern.
Hier der code
|
All times are GMT +1. The time now is 23:12.
|
|