Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Checken welches Fenster im Vordergrund ist... (https://www.delphipraxis.net/127922-checken-welches-fenster-im-vordergrund-ist.html)

TheShunk 21. Jan 2009 10:35


Checken welches Fenster im Vordergrund ist...
 
Hei,

ich suche eine Funktion die mir den Namen des Fensters, welches sich aktuell
im Vordergrund befindet ausgibt. Diese müsste anschließend mit einer gegebenen
Liste abgeglichen werden.

MfG
Shunk

quendolineDD 21. Jan 2009 10:36

Re: Checken welches Fenster im Vordergrund ist...
 
MSDN-Library durchsuchenGetForeGroundWindow() bekommst du das Handle des Fensters, welches sich aktuell im Vordergrund befindet. Darüber kannst du dann alles andere abfragen.

Lg

TheShunk 21. Jan 2009 10:41

Re: Checken welches Fenster im Vordergrund ist...
 
Hei,


danke erstmal, aber so richtig weiter komme ich noch immer nicht :)
Was ist ein "Handle" und wie kann ich das in einen string o.ä. umwandeln?!

DeddyH 21. Jan 2009 10:54

Re: Checken welches Fenster im Vordergrund ist...
 
Nicht groß getestet:
Delphi-Quellcode:
function ActiveWindowTitle: string;
var Wnd: HWnd;
begin
  Wnd := GetForegroundWindow;
  if Wnd <> 0 then
    begin
      SetLength(Result,Succ(GetWindowTextLength(Wnd)));
      GetWindowText(Wnd,@Result[1],Length(Result));
    end;
end;

himitsu 21. Jan 2009 10:59

Re: Checken welches Fenster im Vordergrund ist...
 
Code:
GetWindowText(Wnd, PChar(Result), Length(Result) [color=#ff0000][b]+ 1[/b][/color]);
PChar(Result) ... wirft keine Exception, wenn der Text mal '' (leer) ist

+1 ... GetWindowTextLength gibt die StringLänge ohne abschlißendes #0
und GetWindowText möchte den Speicher inclusive #0

DeddyH 21. Jan 2009 11:03

Re: Checken welches Fenster im Vordergrund ist...
 
Zitat:

Delphi-Quellcode:
Succ(GetWindowTextLength(Wnd))

Deshalb ja das Succ ;)

himitsu 21. Jan 2009 11:16

Re: Checken welches Fenster im Vordergrund ist...
 
ups ... das Succ glatt übersehn :oops:

nja, das ist dann aber etwas falsch, an dieser Stelle ... es sei denn du entfernst das zusätzliche Zeichen wieder, nachdem der Text ausgelesen wurde.

z.B.:
Delphi-Quellcode:
Wnd := GetForegroundWindow;
if Wnd <> 0 then
  begin
    SetLength(Result, Succ(GetWindowTextLength(Wnd)));
    SetLength(Result, GetWindowText(Wnd, PChar(Result), Length(Result)));
  end;

DeddyH 21. Jan 2009 11:18

Re: Checken welches Fenster im Vordergrund ist...
 
OK, das wäre die elegante Lösung, wie gesagt, schnell dahergeschrieben und vielleicht 20 Sekunden ausprobiert, dabei ist mir nichts aufgefallen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz