|
You last visited: Today at 08:31
Advertisement
[FRAGE] AutoIT startbutton
Discussion on [FRAGE] AutoIT startbutton within the AutoIt forum part of the Coders Den category.
01/26/2012, 20:07
|
#1
|
elite*gold: 24
Join Date: Jun 2011
Posts: 667
Received Thanks: 782
|
[FRAGE] AutoIT startbutton
hey leute ich hab da mal ne frage ich kenn mich noch nicht so gut aus in autoit
könnt ihr mir sagen wie ich das mache
user startet starter.exe
fenster öffnet sich mit begrüßungstext
"Zum Downloaden Jetzt Starten drücken"
user klickt
fenster geht zu und der downloader startet...
ich hab gesehn wie man eine 2 exe startet
aber wie bekomm cih alles in eine au3?
|
|
|
01/26/2012, 20:55
|
#2
|
elite*gold: 2
Join Date: Jul 2009
Posts: 14,456
Received Thanks: 4,685
|
Code:
Guicreate("Downloader", 100, 100)
$button = Guictrlcreatebutton("Jetzt starten", 0, 0, 100, 25)
Guictrlcreatelabel("Zum Downloaden Jetzt Starten drücken", 10, 0, 100, 25)
guisetstate(@sw_show)
while 1
$msg = guigetmsg()
if $msg = $button then _start()
wend
Func _start()
run(@scriptdir & "\exe2.exe")
exit
endfunc
Koordinaten noch anpassen, ned getestet
|
|
|
01/26/2012, 23:06
|
#3
|
elite*gold: 0
Join Date: Mar 2009
Posts: 7,260
Received Thanks: 33,149
|
Er möchte es aber in einer .au3. Dafür kann man entweder den GUIOnEventMode verwenden, oder den Erweiterungsparameter von GUIGetMsg() benutzen.
Hier mal ein simples Beispiel für Letzteres:
Code:
$GUI1 = GUICreate("Starter", 200, 200)
$B_ShowGUI2 = GUICtrlCreateButton("Download starten!", 0, 0, 200, 200)
$GUI2 = GUICreate("Downloader", 200, 200)
$B_ShowGUI1 = GUICtrlCreateButton("Zurück zum Starter!", 0, 0, 200, 200)
GUISetState(@SW_SHOW, $GUI1)
While Sleep(25)
$Msg = GUIGetMsg(1)
;$Msg[0] = 0, EventID oder ControlID
;$Msg[1] = Windowhandle von dem das Event ausgelöst wurde
If $Msg[1] == $GUI1 Then ;wenn das Event von der 1. GUI stammt
If $Msg[0] == $B_ShowGUI2 Then ;wenn der Betton der 1. GUI betätigt wurde
MsgBox(64, "Info", "Hallo, blablabla...")
GUISetState(@SW_HIDE, $GUI1) ;1. GUI ausblendem
GUISetState(@SW_SHOW, $GUI2) ;2. GUI einblendem
EndIf
ElseIf $Msg[1] == $GUI2 Then ;wenn das Event von der 2. GUI stammt
If $Msg[0] == $B_ShowGUI1 Then ;wenn der Betton der 2. GUI betätigt wurde
GUISetState(@SW_HIDE, $GUI2) ;2. GUI ausblendem
GUISetState(@SW_SHOW, $GUI1) ;1. GUI einblendem
EndIf
EndIf
If $Msg[0] == -3 Then Exit ;Global Const $GUI_EVENT_CLOSE = -3
WEnd
Sieht auf den ersten Blick vielleicht komplizierter aus als es ist. In der Hilfe ist alles genau beschrieben.
|
|
|
01/28/2012, 16:16
|
#4
|
elite*gold: 0
Join Date: Feb 2011
Posts: 1,351
Received Thanks: 410
|
Die einfachste Methode , um eine zweite GUI zu öffnen und die alte zu verstecken, wäre diese hier :
Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
$GUI = GUICreate("Beispiel", 129, 52, 192, 124)
$ButtonWeiter = GUICtrlCreateButton("Weiter", 16, 8, 75, 25)
GUISetState(@SW_SHOW,$GUI)
$GUISecond = GUICreate("Beispiel", 615, 438, 192, 124)
$ButtonBeenden = GUICtrlCreateButton("beenden", 304, 168, 75, 25)
GUISetState(@SW_HIDE,$GUISecond)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $ButtonWeiter
GUISetState(@SW_HIDE,$GUI)
GUISetState(@SW_SHOW,$GUISecond)
Case $ButtonBeenden
Exit
EndSwitch
WEnd
Am Anfang des Skriptes werden einfach 2 GUIs erstellt, wovon eine davon versteckt wird. Nach dem Klicken auf dem Button " Weiter " wird die erste GUI dann versteckt und die zweite GUI, welche am Anfang versteckt wurde, sichtbar.
|
|
|
01/28/2012, 18:55
|
#5
|
elite*gold: 237
Join Date: Sep 2008
Posts: 4,476
Received Thanks: 4,587
|
Ressourcenschonend sind diese Methoden allerdings nicht. Optimalerweise erstellt man ein GUI dann, wenn es benötigt wird, und schließt es auch dann wieder, wenn es nicht mehr benötigt wird.
Für den ersten Teil reicht der schon gepostete Code aus, für den zweiten brauchst du noch GUIDelete().
|
|
|
01/29/2012, 00:08
|
#6
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
was soll denn darann ressourcen schonend sein?
bevor ich x mal ein gui erstelle und es wieder schließe, nutze ich lieber eines, welches ich bei bedarf kurz sichtbar machen kann.
|
|
|
01/29/2012, 00:16
|
#7
|
elite*gold: 1
Join Date: Mar 2008
Posts: 213
Received Thanks: 224
|
Ich würde sagen dass in heutiger PC-Zeit beides völlig egal ist. :/
|
|
|
01/29/2012, 00:46
|
#8
|
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
|
Quote:
Originally Posted by Buffmebuffyou
Ich würde sagen dass in heutiger PC-Zeit beides völlig egal ist. :/
|
das ist nicht richtig....
effizienz ist immer wichtig. man kann sicherlich sagen das es nichtmehr so wichtig ist wie früher speicherschonend zu arbeiten. dh der user kann auch gerne 1-2 grafiken in sein script einbauen. das heist aber nicht, dass wir nun inneffizienten, "dummen" code fabrizieren sollten...
|
|
|
01/29/2012, 15:25
|
#9
|
elite*gold: 237
Join Date: Sep 2008
Posts: 4,476
Received Thanks: 4,587
|
Quote:
Originally Posted by Buffmebuffyou
Ich würde sagen dass in heutiger PC-Zeit beides völlig egal ist. :/
|
Für dieses Beispiel ist es das wohl wahr, dem stimme ich zu.
Aber Ressourcen sollten nicht unnötig verbraucht werden, das ist eine Regel, die ihre Gründe hat. Oder stell dir vor, die Programmierer von Windows hätten auch so etwas gemacht und würden all ihre Dialoge schon "öffen" haben und anschließend nur anzeigen, wenn man z.B. den Explorer öffnet.
Quote:
Originally Posted by lolkop
das ist nicht richtig....
effizienz ist immer wichtig. man kann sicherlich sagen das es nichtmehr so wichtig ist wie früher speicherschonend zu arbeiten. dh der user kann auch gerne 1-2 grafiken in sein script einbauen. das heist aber nicht, dass wir nun inneffizienten, "dummen" code fabrizieren sollten...
|
Es geht um Prinzipien. Das Beispielskript, das der TE haben wollte, benötigt die Dialoge jeweils nur einmal. Warum sollte er sie also die ganze Zeit im Speicher haben?
Wenn er sie immer wieder benötigt, sehe ich kein Problem damit, die Dialoge offen zu lassen und sie nur zu verstecken. Ich würde es sogar bevorzugen, weil deutlich weniger Rechenoperationen ausgeführt werden. Beim Programmieren muss man im Kontext entscheiden, was die angebrachte Methode ist.
|
|
|
01/31/2012, 17:55
|
#10
|
elite*gold: 179
Join Date: May 2010
Posts: 355
Received Thanks: 42
|
I can help you pn me your skype addy
|
|
|
All times are GMT +1. The time now is 08:32.
|
|