Seite 1 von 2

Titel des aktiven Fensters auslesen

Verfasst: 13.03.2015 17:08
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?

Re: Titel des aktiven Fensters auslesen

Verfasst: 13.03.2015 17:16
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

Re: Titel des aktiven Fensters auslesen

Verfasst: 13.03.2015 17:39
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.

Re: Titel des aktiven Fensters auslesen

Verfasst: 13.03.2015 17:56
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

Re: Titel des aktiven Fensters auslesen

Verfasst: 13.03.2015 18:15
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.

Re: Titel des aktiven Fensters auslesen

Verfasst: 13.03.2015 18:19
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?

Re: Titel des aktiven Fensters auslesen

Verfasst: 13.03.2015 18:30
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.

Re: Titel des aktiven Fensters auslesen

Verfasst: 13.03.2015 18:31
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.

Re: Titel des aktiven Fensters auslesen

Verfasst: 13.03.2015 18:45
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...

Re: Titel des aktiven Fensters auslesen

Verfasst: 13.03.2015 19:26
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.