Nach GUI Bestätigung zurück zum richtigen Fenster

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Nach GUI Bestätigung zurück zum richtigen Fenster

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

Post by Rockett » 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

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

Post by Rockett » 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

Nach GUI Bestätigung zurück zum richtigen Fenster

Post by Rockett » 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.

Top