[Frage]Per Klick auf Button mehrere Scripts starten?

02/27/2011 12:49 Nonilol#1
Huhu EPVPler!!!
Ich habe gestern und heute viele verschiedene Scripts geschrieben.
Jedoch ist es sehr umständlich alle einzeln zu öffnen.

Meine Frage:
Kann ich einen Script schreiben, der ,wenn ich auf einen Button mit "Start" klicke, alle meine Scripts startet die ich bisher geschrieben habe?
>>> Von mir aus kanns auch ohne Button sein.


So ungefähr sollte es sein:
  • User klickt auf starter.exe
  • Ein Fenster öffnet sich mit Button "Start" in der Mitte
  • User klickt auf den Button "Start"
  • Die Scripte "sc1.exe" und "sc2.exe" werden durch den Klick gestartet (ausgeführt)


Oder:
  • User klickt auf starter.exe
  • Die Scripte "sc1.exe" und "sc2.exe" werden sofort ausgeführt ohne dass sich ein Fenster öffnet.



Ich hoffe ihr helft mir!
Vllt kriegt ihr dann auch ein fettes [Only registered and activated users can see links. Click Here To Register...] ;)
02/27/2011 13:08 omer36#2
ShellExecute(@ScriptDir & "\sc1.exe")
ShellExecute(@ScriptDir & "\sc2.exe")
02/27/2011 13:16 derpo#3
Mit einem Button :
PHP Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 GUICreate("Starter"20033)
$Start GUICtrlCreateButton("Starten"0020033$WS_GROUP)
GUISetState(@SW_SHOW)

While 
1
    $nMsg 
GUIGetMsg()
    If 
$nMsg $GUI_EVENT_CLOSE Then
        
Exit
    ElseIf 
$nMsg $Start Then
        Run
("sc1.exe")
        
Run("sc2.exe")
        Exit
    EndIf

WEnd 
02/27/2011 14:00 PenGuin :O#4
Quote:
Originally Posted by derpo View Post
Mit einem Button :
PHP Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$Form1 GUICreate("Starter"20033)
$Start GUICtrlCreateButton("Starten"0020033$WS_GROUP)
GUISetState(@SW_SHOW)

While 
1
    $nMsg 
GUIGetMsg()
    If 
$nMsg $GUI_EVENT_CLOSE Then
        
Exit
    ElseIf 
$nMsg $Start Then
        Run
("sc1.exe")
        
Run("sc2.exe")
        Exit
    EndIf

WEnd 
Wieso änderst du das Switch...EndSwitch zu If...ElseIf..EndIf ab, wenn du sowieso Koda benutzt und es das Switch schon vorgibt?

Switch ist performanter als If...ElseIf...EndIf und auch schneller, deshalb versteh ich nicht, warum du das änderst.
02/27/2011 15:14 derpo#5
Quote:
Originally Posted by PenGuin :O View Post
Wieso änderst du das Switch...EndSwitch zu If...ElseIf..EndIf ab, wenn du sowieso Koda benutzt und es das Switch schon vorgibt?

Switch ist performanter als If...ElseIf...EndIf und auch schneller, deshalb versteh ich nicht, warum du das änderst.
Wer sagt, dass ich Koda benutze O.o
Außerdem erkennt man den Geschwindigkeitsunterschied nicht.

Edit :
Ich habe einen kleinen Test dürchführen lassen.
Case hat 9.97902207222059 Millisekunden gebraucht und If 9.99028584730553.
Der Unterschied ist so klein, dass es eigentlich egal ist.
02/27/2011 15:43 Nonilol#6
Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("noniQ 2  $ Final $", 300, 200)
$Start = GUICtrlCreateButton("Starten", 50, 40, 200, 33, $WS_GROUP)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    If $nMsg = $GUI_EVENT_CLOSE Then
        Exit
    ElseIf $nMsg = $Start Then
        Run("C:\Programme\noniQ2\scripta.exe")
		Run("C:\Programme\noniQ2\scriptb.exe")
        Run("C:\Programme\noniQ2\full.exe")				
        Exit
    EndIf

WEnd
Das hier habe ich bisher aber wenn ich "Starten" klicke, passiert überhaupt nichts (es schließt nur das Fenster). Hab ich die Pfade oder so falsch eingegeben??

Quote:
ShellExecute(@ScriptDir & "\sc1.exe")
ShellExecute(@ScriptDir & "\sc2.exe")
Funktioniert so wie es da steht nicht. Muss ich ScriptDir durch irgendwas ersetzen?
EDIT: funzt ja doch ;)
02/27/2011 15:47 derpo#7
Manchmal ist es so, dass C:\Programme\ im Explorer in Wirklichkeit C:\Program Files\ ist.
02/27/2011 18:00 PenGuin :O#8
Quote:
Originally Posted by derpo View Post
Wer sagt, dass ich Koda benutze O.o
Das erkennt man daran, dass du beim Button den Style $WS_GROUP verwendest, der von Koda gegeben wird, aber unnötig ist, dass du unnötige Includes verwendest und man könnte es daran erkennen, dass du GUISetState(@SW_SHOW) schreibst, wobei man das @SW_SHOW weglassen könnte.

Quote:
Originally Posted by derpo View Post
Außerdem erkennt man den Geschwindigkeitsunterschied nicht.

Edit :
Ich habe einen kleinen Test dürchführen lassen.
Case hat 9.97902207222059 Millisekunden gebraucht und If 9.99028584730553.
Der Unterschied ist so klein, dass es eigentlich egal ist.
Nein es ist nicht egal, Switch ist performanter und sollte immer einem mehrzweigigem If vorgezogen werden.

1. Switch
2. Select
3. If

If ist halt das Schlechteste was man machen kann, und damit das alle direkt lernen, sollte man den Leuten bei mehrzweigigen Abfragen immer Switch zuerst erklären, anstatt If..ElseIf. 1. Zu Besseren Lesbarkeit, 2. weil es bei größeren Abfragen einfach die Performance unglaublich erhöht.
02/27/2011 18:57 Nonilol#9
Lassen sich auch diese beiden Möglichkeiten miteinander verbinden?
Also dass man auf einen Button drücken muss und das mit Shellexecute macht?

Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("noniQ 2  $ Final $", 300, 200)
$Start = GUICtrlCreateButton("Starten", 50, 40, 200, 33, $WS_GROUP)
GUISetState(@SW_SHOW)

While 1
    $nMsg = GUIGetMsg()
    If $nMsg = $GUI_EVENT_CLOSE Then
        Exit
    ElseIf $nMsg = $Start Then
        Run("C:\Programme\noniQ2\scripta.exe")
		Run("C:\Programme\noniQ2\scriptb.exe")
        Run("C:\Programme\noniQ2\full.exe")				
        Exit
    EndIf

WEnd

Code:
ShellExecute(@ScriptDir & "\sc1.exe")
ShellExecute(@ScriptDir & "\sc2.exe")
02/27/2011 19:00 derpo#10
1. Was ist daran schwer?
2. So wie es aussieht, hast du Programme nicht zu Program Files geändert
PHP Code:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 GUICreate("noniQ 2  $ Final $"300200)
$Start GUICtrlCreateButton("Starten"504020033$WS_GROUP)
GUISetState(@SW_SHOW)

While 
1
    $nMsg 
GUIGetMsg()
    If 
$nMsg $GUI_EVENT_CLOSE Then
        
Exit
    ElseIf 
$nMsg $Start Then
        Run
("C:\Program Files\noniQ2\scripta.exe")
    
Run("C:\Program Files\noniQ2\scriptb.exe")
        
Run("C:\Program Files\noniQ2\full.exe")            
        Exit
    EndIf

WEnd 

@PenGuin :O

Mit 38 Möglichkeiten (11x hintereinander durchlaufen lassen, die Richtige Abfrage ist am Ende der Schleife und das letzte Ergebnis zählt) :
Case 10.0131547239931
If 9.99267513292961

Noch einmal durchlaufen lassen :
Case 10.014520030064
If 13.0434515483595

Und nochmal :
Case 10.0022322754259
If 9.66841494109046

Das scheint ganz schön zu schwanken. Manchmal ist auch If 3 Ms niedriger.
Mit der Übersichtlichkeit hast du Recht.
02/27/2011 19:03 PenGuin :O#11
@ProgramFilesDir

...
02/27/2011 20:16 Nonilol#12
Quote:
Originally Posted by derpo View Post
1. Was ist daran schwer?
2. So wie es aussieht, hast du Programme nicht zu Program Files geändert
Ich hatte es mit Program Files ausprobiert, aber daran lags net.
Ich hatte nur einen Tippfehler in meiner Version drin.
Die ich hier reingestellt habe waren blöder weise richtig :D


Vielen Dank für eure Hilfe

PROBLEM GELÖST!!!