ich habe ein Script erstellt, um beim PC-Start auswählen zu können, welche Programme gestartet werden sollen. Das erfolgt bisher nach folgendem Aufbau:
Spoiler
Code: Select all
#NoEnv
#SingleInstance force
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
; Programmliste '
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
Proggies =
(
Programm 01
Programm 02
Programm 03
Programm 04
Programm 05
)
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
; Gui erstellen '
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
cb := 0
Loop, Parse, Proggies, `n ; alle Proggies durchlaufen
{
If (A_Loopfield = "") ; wenn keine mehr kommen:
Break ; Schleife beenden
cb := Format("{:02}", A_Index) ; CB-Nr. immer 2-stellig
Gui, Add, CheckBox, gCheck vCB%cb% Checked, %A_LoopField% ; Eintrag hinzufügen
}
Gui, Add, Button, Default, OK ; Button "OK"
Gui, Show, Autosize ; Gui anzeigen
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
; Bei Anklicken einer Checkbox '
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
Check:
GuiControlGet, CBID, Focus ; hole ID der angeklickten CB
GuiControlGet, Status,, %CBID% ; hole Status
Return
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
; Bei Klick auf "OK" '
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
ButtonOK:
Gui, Submit
cb = 0
cb := Format("{:02}", cb += 1)
If CB%cb%
MsgBox, % "Starte Programm " . cb
; Run Programm 01
cb := Format("{:02}", cb += 1)
If CB%cb%
MsgBox, % "Starte Programm " . cb
; Run Programm 02
cb := Format("{:02}", cb += 1)
If CB%cb%
MsgBox, % "Starte Programm " . cb
; Run Programm 03
cb := Format("{:02}", cb += 1)
If CB%cb%
MsgBox, % "Starte Programm " . cb
; Run Programm 04
cb := Format("{:02}", cb += 1)
If CB%cb%
MsgBox, % "Starte Programm " . cb
; Run Programm 05
Goto GuiClose
Return
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
GuiEscape:
GuiClose:
Gui, Destroy
ExitApp
Nun möchte ich den Teil "ButtonOK" etwas verkürzen und das Hochzählen in eine Funktion verlagern. Die Funktion macht auch, was sie soll, aber die Abfrage funktioniert nicht:
Spoiler
Code: Select all
#NoEnv
#SingleInstance force
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
; Programmliste '
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
Proggies =
(
Programm 01
Programm 02
Programm 03
Programm 04
Programm 05
)
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
; Gui erstellen '
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
cb := 0
Loop, Parse, Proggies, `n ; alle Proggies durchlaufen
{
If (A_Loopfield = "") ; wenn keine mehr kommen:
Break ; Schleife beenden
cb := Format("{:02}", A_Index) ; CB-Nr. immer 2-stellig
Gui, Add, CheckBox, gCheck vCB%cb% Checked, %A_LoopField% ; Eintrag hinzufügen
}
Gui, Add, Button, Default, OK ; Button "OK"
Gui, Show, Autosize ; Gui anzeigen
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
; Bei Anklicken einer Checkbox '
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
Check:
GuiControlGet, CBID, Focus ; hole ID der angeklickten CB
GuiControlGet, Status,, %CBID% ; hole Status
Return
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
; Bei Klick auf "OK" '
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
ButtonOK:
Gui, Submit
cb = 0
; Im Folgenden wird 'cb' durch die Funktion "ThisCB" stetig hochgezählt
; MsgBox, % "CB" . ThisCB()
If CB . ThisCB() ; <<<<<<<<<<<<<<<<< ist immer wahr !?!
MsgBox, % "Starte Programm " . cb
; Run Programm 01
If CB . ThisCB() ; <<<<<<<<<<<<<<<<< ist immer wahr !?!
MsgBox, % "Starte Programm " . cb
; Run Programm 02
Goto GuiClose
Return
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
ThisCB() {
Global cb ; Variable wurde bereits ein Wert außerhalb der Funktion zugewiesen
cb := Format("{:02}", cb += 1)
Return cb
}
; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
GuiEscape:
GuiClose:
Gui, Destroy
ExitApp
Wo liegt mein Fehler?
Danke schon mal im Voraus für euer Bemühen.