Vielen Dank, funktioniert großartig!
Chef.ahk ist aber nicht das, was ich letztlich brauche.
Mein Batch-Menü war nur zum Testen gedacht, damit Du nicht jedesmal mühsam die Zeilen in die cmd einklopfen mußt.
Ich benötige das nicht als (AHK)-GUI:
Chef.ahk teile ich auf in Auftraggeber.[wer auch immer] und Laufbursche.ahk
Und Arbeiter.ahk ist im Prinzip fast fertig so, ist aber eher als großes universelles Verarbeitungs-Zentrum.ahk zu verstehen.
Ich beschreib den Vorgang mal so:
Code: Select all
@echo off
goto start_Test
Der Auftraggeber (vormals "Chef.ahk") einer fremden Nation, die der AHK-Landessprache nicht mächtig ist,
beaftragt seine Wünsche über das international anerkannte Übergabeprotokoll "Parameter"
an den Laufburschen.ahk des fremden Landes "AutoHotKey".
Beispielsweise beauftragt das Land "StrokeIt" entsprechend seiner Landessprache so:
Eingabefeld Datei: c:\Programme\AutoHotkey\AutoHotkey.exe
Eingabefeld Argumente: c:\Var-Test\Laufbursche.ahk Ostereier
Das Land "RemoteKeys" würde entsprechend seiner Landessprache so formulieren:
{/APP.OPEN c:\Programme\AutoHotkey\AutoHotkey.exe, c:\Var-Test\Laufbursche.ahk Ostereier gelb Schleife}
Und der Subkontinent DOS/Batch schreibt einfach nur:
c:\Var-Test\Laufbursche.ahk Weihnachtsmann rot
Warum kann es sich DOS/Batch leisten, so einfach zu schreiben?
Weil in diesem Subkontinent das Land "AutoHotKey" installiert, padon: bekannt ist, und deshalb *.ahk dort den Persilschein hat,
während für die vorgenannten Nationen jedes fremde Land nur als *.exe konsultierbar ist.
Testhalber bleiben wir hier bei rot, gelb oder blau als Auftrags-Wünsche, weil das im VZ schon als Arbeitsziele besteht.
Später können es dann "unendlich" viele Aufträge werden, wie es Wünsche und Worte zu formulieren gibt:
Viele bunte Ostereier und Weihnachtsmänner, auch mal mit Ferrari :superhappy:
Und da ich nicht annehme, daß bei euch StrokeIt oder RemoteKeys zum Testen parat ist, …
; https://www.tcbmi.com/strokeit/ oder
; https://www.chip.de/downloads/RemoteKeys_12995935.html
…schlage ich vor, die "Auftragsvergabe" per cmdline zu testen, z.B. damit und so:
:start_Test
c:\Var-Test\Laufbursche.ahk rot
REM Mehere Paameter gleichzeitig:
c:\Var-Test\Laufbursche.ahk rot gelb Tannenzapfen
Der Laufbursche.ahk versteht einerseits das internationale Übergabeprotokoll "Parameter", aber als AHK-Insider kann nur er die Auftrage in der AHK-Landessprache beim Verarbeitungs-Zentrum an der Auftragsannahme "Edit" einreichen. Ausländische Auftraggeber können das nicht direkt tun, deshalb gibt es den Job "Laufbursche".
Code: Select all
; Laufbursche.ahk
#NoEnv
Global Arbeiterfenster := "Verarbeitungs-Zentrum ahk_class AutoHotkeyGUI"
; "Arbeiterfenster" taucht nur hier auf. Wozu? Könnte es auch irgendein anderer Begriff sein, nur damit für "Global" was dasteht?
DetectHiddenWindows, On
MsgBox %1% %1% %2% %3% %4%; vorübergehend zur Kontrolle, ob der Auftrag bei Laufbursche.ahk richtig angekommen ist
ControlSetText, Edit1, %1%, ahk_id %HGUI% ; der Auftrag wird sofort weitergereicht...
; Variante mehrere Parameter:
ControlSetText, Edit1, %1% %2% %3% %4%, ahk_id %HGUI% ; müßte doch gehen, oder?
; ...und der Job von Laufbursche.ahk ist somit komplett beendet - bis zum nächsten Job.
; Aber mit dieser Weitergabe ist das Verarbeitungs-Zentrum noch nicht einverstanden, es kommt nichts an,
; weil ich offensichtlich nicht in der Lage war, "Chef.ahk" erfolgreich zum bloßen "Laufbursche.ahk" zu degradieren.
Im VZ.ahk komm ich mit den 3 GuiControl-Befehlen nicht ganz klar, nur so vage.
Ich hab´s reingeschrieben:
Code: Select all
; VZ.ahk
#NoEnv
Var1 := Var2 := Var3 := "" ; etwas verwirrend hier, sind wohl die VZ-internen Variablen gemeint, die Anfangs leer gemacht werden. Krieg ich dann schon hin...
; wichtiger wären erst mal die zu übergebenden Variablen, sagen wir 4 Stück, siehe oben, die jedoch nicht alle besetzt sein MÜSSEN
; ich würde dann unten die Formulierung bevorzugen:
; if 1= Sonne
; goto Sonne
; if 2= Mond
; goto Mond
; usw... einfach und klar, geht aber sicher auch mit Case und GoSub
Gui, Add, Edit, w600 r1 vEingabe gNeuerBefehl
Gui, Show, Verarbeitungs-Zentrum
Return
NeuerBefehl:
GuiControl, -g, Eingabe ; Entfernt das g-Label des Steuerelements "Eingabe".
; Aber "Eingabe" ist doch ein v-Label? Wieso kommt hier "g" ins Spiel? Was ist hier "g"?
; "gNeuerBefehl" ist ja nur ein Sprungbefehl. Warum sollte der entfernt werden?
GuiControlGet, Eingabe ; ruft den Wert der Variable "Eingabe" ab und verarbeitet ihn unter Switch... OK, versteh ich.
Switch Eingabe {
Case "Rot":
Gosub Rot
Case "Gelb":
Gosub Gelb
Case "Blau":
Gosub Blau
Case "Status":
Gosub Status
Case "Ende":
Gosub Beenden
}
GuiControl, , Eingabe ; bitte erklären
GuiControl, +gNeuerBefehl, Eingabe ; bitte erklären
Return
Beenden:
ExitApp
Rot:
Var1 := "rot"
MsgBox %Var1%
Return
Gelb:
Var2 := "gelb"
MsgBox %Var2%
Return
Blau:
Var3 := "blau"
MsgBox %Var3%
Return
Status:
MsgBox, 0, Status, Aktuell vorhandene Variablen:`n%Var1%, %Var2%, %Var3%
Return
Also Laufbursche.ahk ist nur eine kurze Sache, läuft pro Auftrag 1x durch und fertig.
Soll aber bis zu 4 Parameter handeln können, wie oben bei Auftraggeber schon angedeutet.
Und "Edit" muß dann in der 1-Zeiler-GUI entsprechend 4 Parameter annehmen können.
Der Rest geht klar, kann ich dann selber machen.
Was ich nicht wirklich verstehe, ist bei Chef.ahk der Aktionsteil nach dem GUI-Part. Aber in der Laufbursche.ahk fällt das eh weg. Aber weil ich es nicht verstehe, war ich wohl noch nicht in der Lage, den Laufburschen funktionsfähig zu formulieren, oder auch das Eingabemodul "Edit" entsprechend anzupassen, weil ich dort mit 3x GuiControl nicht klarkomme.
Bitte nochmal helfen.
Danke!