GUI - zweite Listbox ? Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Gerd_G

GUI - zweite Listbox ?

10 Jan 2019, 10:58

Hallo,

Aus der AutoHotkey Hilfe v1.1.30.01 habe ich mir folgendes Script leicht abgewandelt erstellt.
In einem bestimmten Verzeichnis befinden sich Batch-Dateien die aufgelistet, und per Doppelklick oder OK Button, ausgeführt werden sollen.
Das klappt auch ganz gut. Aber ich möchte in der GUI eine zweite Box haben, in der der Inhalt der ausgewählten/markierten Batchdatei erscheint.
Und das will mir einfach nicht gelingen. Mir ist nicht klar ob dafür eine zweite Listbox definiert werden muß. Ich weiß das dafür auch ein g-Label verwendet werden kann, aber mein Versuche funktionieren nicht.
Beim zweiten Problem fällt mir gar nix ein.
Wenn denn die Batchdatei in der Ausführung ist, soll die aktuelle GUI geschlossen werden (das bekomme ich hin). Aber es soll eine zweite GUI erscheinen mit einer Checkbox in der ein Shutdown aktiviert werden kann.
Und dieser Shutdown, wenn die Checkbox aktiviert wurde, soll dann ausgeführt werden wenn sich die Batchdatei bzw. das Fenster (cmd) schließt. Und das De/Aktivieren dieser Checkbox, während das cmd Fenster noch läuft, soll jeder Zeit möglich sein.

Wäre nett wenn mir jemand helfen würde.

Code: Select all

Gui, Font, s10, Verdana
Gui, Add, Text,, Ein Profil zum Ausführen auswählen.`nESCAPE oder Fenster schließen, um den Vorgang abzubrechen.
Gui, Font, s12, Verdana
Gui, Add, ListBox, vMeineListBox gMeineListBox w430 r10
Gui, Add, Button, Default, OK
Loop, c:\Program Files\ffmpeg\profiles\*.*  ; Ordner und musterbasierte Suche je nach Bedarf anpassen.
{
    GuiControl,, MeineListBox, %A_LoopFileName%
}
Gui, Show
return
MeineListBox:
if (A_GuiEvent <> "DoubleClick")
GuiControlGet, MeineListBox  ; Ermittelt die aktuelle Auswahl in der ListBox.
    return
; Ansonsten wurde ein Doppelklick auf einen Listeneintrag gemacht, also wie OK-Dr?cken behandeln
; und zum nächsten Label übergehen.
ButtonOK:
GuiControlGet, MeineListBox  ; Ermittelt die aktuelle Auswahl in der ListBox.
MsgBox, 4,, Wollen Sie das folgende Profil wirklich ausführen ?`n`n%MeineListBox%
IfMsgBox, No
    return
; Ansonsten versuchen zu starten:
Run, c:\Program Files\ffmpeg\profiles\%MeineListBox%,, UseErrorLevel
if (ErrorLevel = "ERROR")
    MsgBox Das angegebene Profil konnte nicht ausgeführt werden.

GuiClose:
GuiEscape:
ExitApp
Ahk_fan
Posts: 50
Joined: 31 Aug 2018, 14:34

Re: GUI - zweite Listbox ?

10 Jan 2019, 17:34

Hi,

hier ein Ansatz

Code: Select all

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir c:\Program Files\ffmpeg  ; Ensures a consistent starting directory.
Gui, Font, s10, Verdana
Gui, Add, Text,, Ein Profil zum Ausführen auswählen.`nESCAPE oder Fenster schließen, um den Vorgang abzubrechen.
Gui, Font, s12, Verdana
Gui, Add, ListBox, vMeineListBox gMeineListBox w430 r10
Gui, add, edit, vInhaltDatei x+10 w200 r10
Gui, Add, Button, Default, OK

Loop, c:\Program Files\ffmpeg\profiles\*.*  ; Ordner und musterbasierte Suche je nach Bedarf anpassen.
{
    GuiControl,, MeineListBox, %A_LoopFileName%
}
Gui, Show
return
MeineListBox:
if (A_GuiEvent <> "DoubleClick")
{
	GuiControlGet, MeineListBox  ; Ermittelt die aktuelle Auswahl in der ListBox.
	FileRead, DateiInhalt, c:\Program Files\ffmpeg\profiles\%MeineListBox%
	GuiControl, ,InhaltDatei, %DateiInhalt% 
}
return
; Ansonsten wurde ein Doppelklick auf einen Listeneintrag gemacht, also wie OK-Dr?cken behandeln
; und zum nächsten Label übergehen.
ButtonOK:
Gui, submit, nohide
GuiControlGet, MeineListBox  ; Ermittelt die aktuelle Auswahl in der ListBox.
If  MeineListBox =
	msgbox, Keine Auswahl
MsgBox, 4,, Wollen Sie das folgende Profil wirklich ausführen ?`n`n%MeineListBox%
IfMsgBox, No
    return
; Ansonsten versuchen zu starten:
Run, c:\Program Files\ffmpeg\profiles\%MeineListBox%,, UseErrorLevel
if (ErrorLevel = "ERROR")
{
    MsgBox Das angegebene Profil konnte nicht ausgeführt werden.
	return
}
else
{
	Gui, Destroy
	Gui, new
	Gui, add, checkbox, vShutdown gCheckShutdown, Shutdown?
	gui, add, Text, vShutdownAktiv w140, NICHT aktiv
	gui, Show, w150 h150 ,Shutdown-Auswahl
}

return

CheckShutdown:
gui, submit, nohide
If Shutdown = 1
{
	GuiControl, ,ShutdownAktiv, AKTIV 
	WinWaitClose, C:\WINDOWS\system32\cmd.exe
	; hier den aktivieren
	;Shutdown, 0
}
If Shutdown = 0
{
	GuiControl, ,ShutdownAktiv, NICHT aktiv 
}
return

GuiClose:
GuiEscape:
ExitApp
Gruß
regards,
AHK_fan :)
Gerd_G

Re: GUI - zweite Listbox ?  Topic is solved

11 Jan 2019, 04:20

Vielen Dank für den Code, "Ahk_fan".

Wenn ich an dieser Stelle ...

Code: Select all

; hier den aktivieren
Shutdown –s –f –t 5
... den Shutdown eintrage, wird dieser aber sofort ausgeführt ohne das gewartet wird bis das Fenster "C:\WINDOWS\system32\cmd.exe" geschlossen wurde.
Ahk_fan
Posts: 50
Joined: 31 Aug 2018, 14:34

Re: GUI - zweite Listbox ?

11 Jan 2019, 10:20

schau mal, wie das Konsolenfenster vom Batchaufruf heißt (mit Windows Spy). Ich habe es mir einfach gemacht und mit WinWaitClose, C:\WINDOWS\system32\cmd.exe abgefragt, du muss evtl hier was anderes eintragen...
oder du schreibst in die Batch Datei am Ende sowas echo "Hallo Opa" >> C:\temp\file.txt prüfst mit

Code: Select all

While ! FileExist("c:\temp\file.txt")
{
	FileDelete, file.txt
	Shutdown –s –f –t 5
}
ob Datei da und löscht sie und löst dann shutdown aus. C:\tempß muss natürlich existieren, und am besten beim Start vom Script immer C:\temp\file.txt löschen
regards,
AHK_fan :)
Gerd_G

Re: GUI - zweite Listbox ?

11 Jan 2019, 10:40

Super, der Shutdown funktioniert. Ich hatte einen Fehler gemacht.

Vielen Dank noch mal.
Ahk_fan
Posts: 50
Joined: 31 Aug 2018, 14:34

Re: GUI - zweite Listbox ?

11 Jan 2019, 15:17

:thumbup:

Wochenende :dance:
regards,
AHK_fan :)

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 19 guests