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 Anwendungen in der Taskleiste sichtbar? (https://www.delphipraxis.net/5827-anwendungen-der-taskleiste-sichtbar.html)

Tpercon 20. Jun 2003 12:05


Anwendungen in der Taskleiste sichtbar?
 
Wie findet man heraus, welche Anwendungen in der Taskleiste als Button sichtbar sind?

Luckie 20. Jun 2003 12:29

IsIconic sagt dir, ob die Anwendung minimiert ist oder nicht.

Tpercon 20. Jun 2003 12:44

IsWindowVisible und IsIconic ist klar, nur wie gehe ich die Handles durch?

Luckie 20. Jun 2003 12:48

Warum sagst du nicht gleich, dass du nicht weißt wie du die Handles bekommst? :x

Kuck mal in der Code-Library, da solltest du fündig werden.

Tpercon 20. Jun 2003 13:11

Leider nicht wirklich. :cry:
Ich habe mir das jetzt so gedacht, dass ich alle Prozesse durchgehe und abfrage, ob das Handle des Prozesses IsWindowVisible(SnapHandle) or IsIconic(SnapHandle) ist. Vielleicht ist der Weg aber auch total blödsinnig und ich komme daher nicht weiter?!

Wie kann ich denn sonst laufende Anwendungen finden?

Luckie 20. Jun 2003 13:14

Du mußt die Fensterhandle durchgehen und nicht die Prozesse.

Tpercon 20. Jun 2003 13:28

OK, wo ist denn jetzt mein Denkfehler? Dami bekomme ich zu viele Einträge.

Delphi-Quellcode:
var MyHandle: THandle;
begin
MyHandle:=GetWindow(Handle, GW_HWNDFIRST);
If MyHandle > 0
 then
  begin
   postinLV(InttoStr(MyHandle),'Taskleiste');
   while MyHandle > 0 do
    begin
     MyHandle:= GetWindow(MyHandle, GW_HWNDNEXT);
     If (IsWindowVisible(MyHandle))or(IsIconic(MyHandle))
      then postinLV(InttoStr(MyHandle),'Taskleiste');
    end;
  end;

Christian Seehase 20. Jun 2003 13:46

Moin TPercon,

such mal nach Beispielen für EnumWindows.
Etwas ganz ähnliches hatten wir vor kurzem erst.

Tpercon 20. Jun 2003 14:45

Bei EnumWindows komm ich leider mit der CallBack Funktion nicht klar.

Ich benutze jetzt die folgende Methode, die auch funktioniert!
Delphi-Quellcode:
procedure TForm1.GetProgList;

 procedure getTitle(MyHandle:THandle);
 var i:integer;
     s: Array[0..MAX_PATH] of char;
 begin
  i:= GetWindowTextLength(MyHandle);
  If i > 0
   then
    begin
     GetWindowText(MyHandle,s,SizeOf(s));
     ListView3.Items.Add;
     i:=ListView3.Items.Count-1;
     ListView3.Items[i].Caption:=s;
     ListView3.Items[i].SubItems.Add('Status');
    end;
 end;

var MyHandle: THandle;
begin
MyHandle:=GetWindow(Handle, GW_HWNDFIRST);
If MyHandle > 0
 then
  begin
   getTitle(MyHandle);
   while MyHandle > 0 do
    begin
     MyHandle:= GetWindow(MyHandle, GW_HWNDNEXT);
     If ((IsWindowVisible(MyHandle)) or (IsIconic(MyHandle)))
     and((GetWindowLong(MyHandle, GWL_HWNDPARENT) = 0))
      then getTitle(MyHandle);
    end;
  end;
end;

Christian Seehase 20. Jun 2003 15:19

Moin Tpercon,

hier hatte ich mal ein Beispiel dafür gepostet und dokumentiert

Programm beenden über Programm


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 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