Titel des aktiven Fensters auslesen

Anfängerfragen zum Programmieren mit PureBasic.
Angelo
Beiträge: 102
Registriert: 20.02.2010 14:47
Wohnort: Berlin

Titel des aktiven Fensters auslesen

Beitrag von Angelo »

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
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Titel des aktiven Fensters auslesen

Beitrag von RSBasic »

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
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Angelo
Beiträge: 102
Registriert: 20.02.2010 14:47
Wohnort: Berlin

Re: Titel des aktiven Fensters auslesen

Beitrag von Angelo »

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

Code: Alles auswählen

            CurrentWindow = GetForegroundWindow_()
            CurrentWindowLength = GetWindowTextLength_(CurrentWindow)+1
            WindowTitel$ = Space(CurrentWindowLength)
            GetWindowText_(CurrentWindow, @WindowTitel$, CurrentWindowLength)
            MessageRequester("Titel des aktiven Fensters", WindowTitel$)
kompiliert. Aber kein Erfolg.
PB 5.50; Win 7
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Titel des aktiven Fensters auslesen

Beitrag von Andesdaf »

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
Angelo
Beiträge: 102
Registriert: 20.02.2010 14:47
Wohnort: Berlin

Re: Titel des aktiven Fensters auslesen

Beitrag von Angelo »

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
Benutzeravatar
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

Beitrag von NicTheQuick »

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?
Andesdaf
Moderator
Beiträge: 2673
Registriert: 15.06.2008 18:22
Wohnort: Dresden

Re: Titel des aktiven Fensters auslesen

Beitrag von Andesdaf »

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.
Win11 x64 | PB 6.20
Angelo
Beiträge: 102
Registriert: 20.02.2010 14:47
Wohnort: Berlin

Re: Titel des aktiven Fensters auslesen

Beitrag von Angelo »

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
Benutzeravatar
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

Beitrag von NicTheQuick »

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...
Angelo
Beiträge: 102
Registriert: 20.02.2010 14:47
Wohnort: Berlin

Re: Titel des aktiven Fensters auslesen

Beitrag von Angelo »

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
Antworten