Nach GUI Bestätigung zurück zum richtigen Fenster

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

Rockett
Posts: 9
Joined: 07 May 2024, 02:15

Nach GUI Bestätigung zurück zum richtigen Fenster

13 May 2024, 05:59

Hallo Zusammen,

ich möchte ein GUI anzeigen lassen, welches einige Fragen abfragt und diese dann später ausgibt, nachfolgend der CODE dafür, der erstmal auch funktioniert:

Code: Select all

::Formular::

Gui, New
Gui, Show, w305 h180, GUINAME)
Gui, Add, Text,, Frage1:
Gui, Add, Edit, vFrage1
Gui, Add, Text,, Frage2:
Gui, Add, Edit, vFrage2
Gui, Add, Text,, Frage3:
Gui, Add, Edit, vFrage3
Gui, Add, Button, Default gFrage, OK
Gui, Show
WinSet, AlwaysOnTop, On, GUINAME
SendInput, {TAB} ;damit springe ich zum ersten Edit Feld in meinem GUI
return

Formular:
Gui, Submit

; Den Text für SendInput erstellen und in die Zwischenablage kopieren
FrageText := "Gibt testweise alle Antworten aus" . Frage1 . " und " . Frage2 . " und " . Frage3 . " . "
Clipboard := FrageText

; Umlaute und Sonderzeichen ersetzen
FrageText := StrReplace(FrageText, "ä", "{U+00E4}")
FrageText := StrReplace(FrageText, "Ä", "{U+00C4}")
FrageText := StrReplace(FrageText, "ö", "{U+00F6}")
FrageText := StrReplace(FrageText, "Ö", "{U+00D6}")
FrageText := StrReplace(FrageText, "ü", "{U+00FC}")
FrageText := StrReplace(FrageText, "Ü", "{U+00DC}")
FrageText := StrReplace(FrageText, "ß", "{U+00DF}")

; Den Text senden
SendInput, %FrageText%

return
Ich habe allerdings das Problem, das ich für diese Fragen in mehrere Fenster gehen muss, um diese alle zusammen zu tragen. Nach dem Bestätigen soll dann zu dem Fenster gesprungen werden, aus dem man das GUI aufgerufen hat, um dort dann den Sendinput durchzuführen.

Ich hatte überlegt den Window Handle zu ermitteln, bevor das GUI sich aktiviert, um diesen nach dem GUI dafür zu nutzen, zurück in genau dieses Fenster zu springen. Dabei scheitert es schon...

Code: Select all

F4::

UniqueID := WinActive(WinTitle, WinText, ExcludeTitle, ExcludeText)
MsgBox, % "Die gewuenschte Variable lautet: " . UniqueID
Return
Wenn ich im Notepad bin, bekomme ich den Handle.. aber wenn ich mich in anderen Programmen bewege, bekomme ich nur 0x0 als Ausgabe, damit werde ich wohl nicht weiterarbeiten können. Außerdem suche ich vergeblich danach, wie ich das Handle nutzen kann, um das Fenster wieder aufzurufen.
Rockett
Posts: 9
Joined: 07 May 2024, 02:15

Re: Nach GUI Bestätigung zurück zum richtigen Fenster

13 May 2024, 09:50

Ich verstehe es einfach nicht :)

Als test mache ich jetzt das:

Code: Select all

; Ermittle die ID des Fensters
WinGet, WindowID, ID, A

; Warte 5 Sekunden
Sleep, 5000

; Wechsle zurück zum Fenster mit der ermittelten ID
WinActivate, ahk_id %WindowID%
Das funktioniert, aber baue ich es in mein Script ein, das funktioniert es wieder nicht mehr

Code: Select all

::Formular::

; holt die ID des Fensters, in dem ich das Script auslöse
WinGet, WindowID, ID, A

Gui, New
Gui, Show, w305 h180, GUINAME)
Gui, Add, Text,, Frage1:
Gui, Add, Edit, vFrage1
Gui, Add, Text,, Frage2:
Gui, Add, Edit, vFrage2
Gui, Add, Text,, Frage3:
Gui, Add, Edit, vFrage3
Gui, Add, Button, Default gFrage, OK
Gui, Show
WinSet, AlwaysOnTop, On, GUINAME
SendInput, {TAB} ;damit springe ich zum ersten Edit Feld in meinem GUI
return

Formular:
Gui, Submit

; Den Text für SendInput erstellen und in die Zwischenablage kopieren
FrageText := "Gibt testweise alle Antworten aus" . Frage1 . " und " . Frage2 . " und " . Frage3 . " . "
Clipboard := FrageText

; Umlaute und Sonderzeichen ersetzen
FrageText := StrReplace(FrageText, "ä", "{U+00E4}")
FrageText := StrReplace(FrageText, "Ä", "{U+00C4}")
FrageText := StrReplace(FrageText, "ö", "{U+00F6}")
FrageText := StrReplace(FrageText, "Ö", "{U+00D6}")
FrageText := StrReplace(FrageText, "ü", "{U+00FC}")
FrageText := StrReplace(FrageText, "Ü", "{U+00DC}")
FrageText := StrReplace(FrageText, "ß", "{U+00DF}")

; zurück in das Fenster wechseln, noch vor dem SendInput
WinActivate, ahk_id %WindowID%

; Den Text senden
SendInput, %FrageText%

return
Rockett
Posts: 9
Joined: 07 May 2024, 02:15

Re: Nach GUI Bestätigung zurück zum richtigen Fenster

13 May 2024, 09:59

Es funktioniert doch... Ich hab hier irgendwo nen typo oder syntax fehler. Nachdem ich das in ein anderes Script eingebaut habe, funktioniert alles wie gewünscht! Manchmal muss man nur fragen, um selbst die Antwort zu finden :) Vielleicht hilft es ja zumindest jemand anderem auch noch mal :) Danke

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: gero and 12 guests