Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > AutoIt
You last visited: Today at 08:31

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



[FRAGE] AutoIT startbutton

Discussion on [FRAGE] AutoIT startbutton within the AutoIt forum part of the Coders Den category.

Reply
 
Old   #1
 
Stamm1994's Avatar
 
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?
Stamm1994 is offline  
Thanks
1 User
Old 01/26/2012, 20:55   #2


 
Lawliet's Avatar
 
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
Lawliet is offline  
Old 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.
KDeluxe is offline  
Old 01/28/2012, 16:16   #4



 
xShizoidx's Avatar
 
elite*gold: 0
The Black Market: 283/0/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.
xShizoidx is offline  
Old 01/28/2012, 18:55   #5

 
FichteFoll's Avatar
 
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().
FichteFoll is offline  
Old 01/29/2012, 00:08   #6
 
lolkop's Avatar
 
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.
lolkop is offline  
Old 01/29/2012, 00:16   #7
 
Buffmebuffyou's Avatar
 
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. :/
Buffmebuffyou is offline  
Old 01/29/2012, 00:46   #8
 
lolkop's Avatar
 
elite*gold: 280
Join Date: May 2007
Posts: 2,818
Received Thanks: 3,483
Quote:
Originally Posted by Buffmebuffyou View Post
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...
lolkop is offline  
Old 01/29/2012, 15:25   #9

 
FichteFoll's Avatar
 
elite*gold: 237
Join Date: Sep 2008
Posts: 4,476
Received Thanks: 4,587
Quote:
Originally Posted by Buffmebuffyou View Post
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 View Post
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.
FichteFoll is offline  
Old 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
Everything™ is offline  
Reply




All times are GMT +1. The time now is 08:32.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.