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 geöffnete programme auflisten (https://www.delphipraxis.net/92125-geoeffnete-programme-auflisten.html)

ghost007 14. Mai 2007 23:33


geöffnete programme auflisten
 
Hallo,
ich such nach der möglichkeit alle programme, die man per [Alt]+[Tab] aufgelistet bekommt, und auswählen kann, zu ermitteln.
Wie kann ich da vor gehen?

MfG - Ghost007

_frank_ 15. Mai 2007 00:38

Re: geöffnete programme auflisten
 
ich denke mal post#10 aus folgenden Thread sollte weiterhelfen:
http://www.delphipraxis.net/internal...t.php?t=107364

wer suchet, der findet ;)

Gruß Frank

ghost007 15. Mai 2007 12:44

Re: geöffnete programme auflisten
 
hm, aber so wie ich das seh, bringt mir der code nur was, wenn ich die titel der fenster/programme weiß, und das tu ich ja nicht.
Ich will nur eine liste mit den momentan sichtbar aktiven programmen. Keine prozesse oder ähnliches.

MfG - Ghost007

Luckie 15. Mai 2007 13:02

Re: geöffnete programme auflisten
 
Hast du die Funktion mal auprobiert?

bitsetter 15. Mai 2007 13:10

Re: geöffnete programme auflisten
 
Hi,

mit [Alt]+[Tab] habe ich mich gerade beschäftigt, mit der Taskleiste hat das anscheinend nicht viel zu tun. In dem Fenster erscheinen auch aktive Programme die nicht in der Taskleiste sind.
Folgenden Code habe ich gerade ausprobiert,

Delphi-Quellcode:
function EnumWin(hWnd: THandle; FirstWnd: PCardinal): Boolean; stdcall;
var
  WinText: AnsiString;
  ProcId : cardinal;
begin
  Result := True;
  if IsWindowVisible(hwnd) then
  begin
    if (GetWindowLong(hwnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW) <> 0 then
      hwnd:= GetWindowLong(hWnd, GWL_HWNDPARENT);
    ProcId := GetWindowThreadProcessID(hWnd, nil);
    SetLength(WinText, SendMessage(hWnd, WM_GETTEXTLENGTH, 0, 0));
    SendMessage(hWnd, WM_GETTEXT, Length(WinText) + 1, integer(WinText));
    if (length(WinText) > 0) and (FirstWnd^ <> ProcId) then
      Form1.ListBox1.Items.Add(WinText);
   FirstWnd^ := ProcId;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  FirstWnd : cardinal;
begin
  ListBox1.Clear;
  EnumWindows(@EnumWin, cardinal(@FirstWnd));
end;
bei den Fenster die ich getestet habe ging es, eventuell muss der Code jedoch noch erweitert werden. Auch die angezeigte Reihenfolge stimmte bei mir überein.

ghost007 15. Mai 2007 13:27

Re: geöffnete programme auflisten
 
Zitat:

Zitat von Luckie
Hast du die Funktion mal auprobiert?

Ja, hatte aber nen schreibfehler drin ... nun funktioniert se einwandfrei :)
sehr schön, danke :)

MfG - Ghost007


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

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