Titel des aktiven Fensters auslesen
Titel des aktiven Fensters auslesen
Ich würde mir ganz gerne eine exe-Datei erstellen, die mir den Titel des Fensters ausgibt, das beim Ausführen dieser exe-Datei (die selber kein Window enthält und die mit Shortcut gestartet wird) gerade im Vordergrund ist. Ich habe eine Lösung für den Fall, dass es sich bei dem aktiven Fenster um ein Word-Dokument handelt. Aber gibt es auch eine Variante unabhängig von der Klasse der Anwendung im Vordergrund?
PB 5.50; Win 7
Re: Titel des aktiven Fensters auslesen
Code: Alles auswählen
EnableExplicit
Define CurrentWindow
Define CurrentWindowLength
Define WindowTitel$
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
AddWindowTimer(0, 1, 100)
Repeat
Select WaitWindowEvent()
Case #PB_Event_Timer
Select EventTimer()
Case 1
CurrentWindow = GetForegroundWindow_()
CurrentWindowLength = GetWindowTextLength_(CurrentWindow)+1
WindowTitel$ = Space(CurrentWindowLength)
GetWindowText_(CurrentWindow, @WindowTitel$, CurrentWindowLength)
Debug WindowTitel$
EndSelect
Case #PB_Event_CloseWindow
End
EndSelect
ForEver
EndIf
Re: Titel des aktiven Fensters auslesen
Danke, RSBasic für Deine Antwort. Aber Deinen Code habe ich nicht vernünftig zum Laufen gekriegt. Toll wäre es, wenn nur der Name des aktiven Fensters herauskommen würde.
EDIT:
Jetzt hab ich's: Man muss das Fenster bei laufendem Code wechseln und bekommt dann den Titel. Aber geht es auch statisch? D. h. also, es wird beim Starten des Codes (dann als exe-Datei) geguckt, welches Fenster aktiv ist und dann der Titel ausgegeben?
Ich habe mal
kompiliert. Aber kein Erfolg.
EDIT:
Jetzt hab ich's: Man muss das Fenster bei laufendem Code wechseln und bekommt dann den Titel. Aber geht es auch statisch? D. h. also, es wird beim Starten des Codes (dann als exe-Datei) geguckt, welches Fenster aktiv ist und dann der Titel ausgegeben?
Ich habe mal
Code: Alles auswählen
CurrentWindow = GetForegroundWindow_()
CurrentWindowLength = GetWindowTextLength_(CurrentWindow)+1
WindowTitel$ = Space(CurrentWindowLength)
GetWindowText_(CurrentWindow, @WindowTitel$, CurrentWindowLength)
MessageRequester("Titel des aktiven Fensters", WindowTitel$)
PB 5.50; Win 7
Re: Titel des aktiven Fensters auslesen
So?
Code: Alles auswählen
EnableExplicit
Define CurrentWindow
Define CurrentWindowLength
Define WindowTitel$
Define Result.i
Repeat
CurrentWindow = GetForegroundWindow_()
CurrentWindowLength = GetWindowTextLength_(CurrentWindow)+1
WindowTitel$ = Space(CurrentWindowLength)
GetWindowText_(CurrentWindow, @WindowTitel$, CurrentWindowLength)
Result = MessageRequester("Titel des aktiven Fensters:", WindowTitel$ + #CRLF$ + "Fortfahren?", #PB_MessageRequester_YesNo)
Until Result = #PB_MessageRequester_No
Win11 x64 | PB 6.20
Re: Titel des aktiven Fensters auslesen
Danke, Andesdaf, ich habe es mal so kompiliert, wie du es gepostet hast. Aber die WindowTitel-Variable bleibt leer. Ich fürchte, durch das Starten der exe-Datei gibt es kein aktuell aktives Fenster mehr.
PB 5.50; Win 7
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Titel des aktiven Fensters auslesen
Bei mir schnappt sich die PB-IDE immer das Vordergrundfenster. Wie hast du es denn genau getestet? EXE-Datei erstellt und die unabhängig von der IDE gestartet?
Re: Titel des aktiven Fensters auslesen
Wenn ich die Executable aus einem Dateicommander starte, wird dessen Fenstertitel als
Erstes angezeigt. Bei wiederholten Klicks auf 'Ja' geht es nur, wenn zum Zeitpunkt des
Klicks ein anderes Fenster als der MessageRequester aktiv war.
Aus der IDE heraus ist das erste Fenster bei mir zunächst Daten-Haltepunkte, dann die IDE selbst.
Erstes angezeigt. Bei wiederholten Klicks auf 'Ja' geht es nur, wenn zum Zeitpunkt des
Klicks ein anderes Fenster als der MessageRequester aktiv war.
Aus der IDE heraus ist das erste Fenster bei mir zunächst Daten-Haltepunkte, dann die IDE selbst.
Win11 x64 | PB 6.20
Re: Titel des aktiven Fensters auslesen
Ja, genau so. Also, eine exe-Datei erstellt, Verknüpfung auf Desktop und Shortcut definiert. Dann habe ich beispielsweise ein Word-Dokument geöffnet und die exe-Datei per Shortcut gestartet. Und dabei bleibt WindowTitel leer.
PB 5.50; Win 7
- NicTheQuick
- Ein Admin
- Beiträge: 8809
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Titel des aktiven Fensters auslesen
Vielleicht ist nach dem Klick auf das Icon auf dem Desktop ja der Desktop das aktive Fenster und deswegen ist der Titel leer. Mal so ins Blaue geraten...
Re: Titel des aktiven Fensters auslesen
Na ja, ich starte ja per Shortcut. Unter Windows 7 scheint der Focus auf das aktive Fenster verloren zu gehen, sobald man irgendeine andere Anwendung (auch ohne eigenes Fenster) startet.
PB 5.50; Win 7