AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Anwendungen in der Taskleiste sichtbar?
Thema durchsuchen
Ansicht
Themen-Optionen

Anwendungen in der Taskleiste sichtbar?

Ein Thema von Tpercon · begonnen am 20. Jun 2003 · letzter Beitrag vom 20. Jun 2003
Antwort Antwort
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#1

Anwendungen in der Taskleiste sichtbar?

  Alt 20. Jun 2003, 12:05
Wie findet man heraus, welche Anwendungen in der Taskleiste als Button sichtbar sind?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2
  Alt 20. Jun 2003, 12:29
IsIconic sagt dir, ob die Anwendung minimiert ist oder nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#3
  Alt 20. Jun 2003, 12:44
IsWindowVisible und IsIconic ist klar, nur wie gehe ich die Handles durch?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4
  Alt 20. Jun 2003, 12:48
Warum sagst du nicht gleich, dass du nicht weißt wie du die Handles bekommst?

Kuck mal in der Code-Library, da solltest du fündig werden.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#5
  Alt 20. Jun 2003, 13:11
Leider nicht wirklich.
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?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6
  Alt 20. Jun 2003, 13:14
Du mußt die Fensterhandle durchgehen und nicht die Prozesse.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#7
  Alt 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;
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8
  Alt 20. Jun 2003, 13:46
Moin TPercon,

such mal nach Beispielen für EnumWindows.
Etwas ganz ähnliches hatten wir vor kurzem erst.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Tpercon

Registriert seit: 7. Jun 2002
638 Beiträge
 
Delphi 5 Professional
 
#9
  Alt 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;
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#10
  Alt 20. Jun 2003, 15:19
Moin Tpercon,

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

Programm beenden über Programm
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:34 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