AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi FindWindow: Alle Handles filtern

FindWindow: Alle Handles filtern

Offene Frage von "gizzy"
Ein Thema von gizzy · begonnen am 20. Feb 2008 · letzter Beitrag vom 21. Feb 2008
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von gizzy
gizzy

Registriert seit: 3. Jun 2007
59 Beiträge
 
Delphi 2007 Enterprise
 
#1

FindWindow: Alle Handles filtern

  Alt 20. Feb 2008, 13:40
Hallöchen,

und zwar suche ich ALLE offenen Handles mit dem Gleichen Fenstertitel! Bei VB gibt es den Parameter "NextWindow" oder so, den man mit übergben kann, dann wird das nächste Handle von dem Fenster mit den bestimmten Titel genommen.

Hier mal um den Arbeitsplatz zu finden, sind aber jetzt mehrere davon offen, möchte ich jedes einzelne Handle haben.

Für 2??
Delphi-Quellcode:
var
handles: Array[1..20] of Integer;
i: IntegeR;
begin
For i:=1 to 20 do begin
  handles[i]:= 0;
end;

handles[1]:= FindWindow(nil, 'Arbeitsplatz');
//.. Da ich keine Hilfe für den Syntax von FindWindow gefunden habe, kann es ja sein, das "nil" falsch ist oder ertwas anderes
// Eingesetzt werden kann

For i:=1 to 20 do begin
   listbox1.Items.Add(InttoStr(handles[i]));
end;
Wäre nett wenn mir da jemand weiterhelfen könnte
David
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.536 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: FindWindow: Alle Handles filtern

  Alt 20. Feb 2008, 13:42
Ich denke, EnumWindows sollte Dir weiterhelfen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: FindWindow: Alle Handles filtern

  Alt 20. Feb 2008, 13:53
Die Hilfe zu den API-Funktionen findest du in der [msdn:f1a4d706a3="FindWindow"]MSDN[/msdn:f1a4d706a3]. Als Lösung für dein Problem würde ich FindWindowEx vorschlagen.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von gizzy
gizzy

Registriert seit: 3. Jun 2007
59 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: FindWindow: Alle Handles filtern

  Alt 20. Feb 2008, 14:03
Danke soweit.
Habe folgende Funktion gefunden, leider verstehe ich sie nicht. Vielleicht könnte mir jemand ein Anwendungs Beispiel zeigen

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@EnumWinProc, 0); //Fehler: Variable erforderlich
end;

function TForm1.EnumWinProc(Wnd: THandle; LParam: LongInt): Boolean; stdcall;
var
 WinCaption : string;
 Len: integer;
begin
 Result := True;
 Len := GetWindowTextLength(Wnd);
 SetLength(WinCaption, Len);
 GetWindowText(Wnd, PChar(WinCaption), Len+1);
 if Trim(WinCaption) <> 'then
   Form1.Listbox1.Items.Add(Format('%.6x : %s', [Wnd, WinCaption]));
end;
Quelle

Viele Grüße
David
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: FindWindow: Alle Handles filtern

  Alt 20. Feb 2008, 14:04
Du darfst nicht einfach aus Funktionen Methoden machen!
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von gizzy
gizzy

Registriert seit: 3. Jun 2007
59 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: FindWindow: Alle Handles filtern

  Alt 20. Feb 2008, 14:59
Bei diesem Tipp muss man ja auch das Handle mit geben, ka was das soll.
Der taugt anscheinend nichts.
Ich komm nicht weiter .
Könntet ihr mir ein Beispiel Code dazu geben, wie ich das am besten um setzte?

Viele Grüße und Danke im voraus
David
  Mit Zitat antworten Zitat
Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: FindWindow: Alle Handles filtern

  Alt 20. Feb 2008, 20:11
Zitat von Apollonius:
Du darfst nicht einfach aus Funktionen Methoden machen!
Genau, du brauchst echt nur noch den Code per Copy und Paste hinzufügen.
Delphi-Quellcode:
function EnumWinProc(Wnd: THandle; Lbx: TListBox): Boolean; stdcall;
var
  WinCaption : string;
  Len: integer;
begin
  Result := True;
  Len := GetWindowTextLength(Wnd);
  SetLength(WinCaption, Len);
  GetWindowText(Wnd, PChar(WinCaption), Len + 1);
  if Trim(WinCaption) <> 'then
    Lbx.Items.Add(Format('%.6x : %s', [Wnd, WinCaption]));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  EnumWindows(@EnumWinProc, DWord(ListBox1));
end;
Gruß bitsetter
"Viele Wege führen nach Rom"
Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
  Mit Zitat antworten Zitat
Benutzerbild von gizzy
gizzy

Registriert seit: 3. Jun 2007
59 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: FindWindow: Alle Handles filtern

  Alt 21. Feb 2008, 10:49
Hi, danke schonmal für eure Mühen.
Da immer noch der Fehler Variable erforderlich auftaucht und ich anscheinend sowas wie eine eine "Funktions-Variable" erstellen muss, frage ich mich ob das überhaubt der Richtige Weg zur Lösung meines Problems ist. Ich suche ja nicht "alle" Fenster sondern nur diese die "Arbeitsplatz" oder sonst wie heißen.
In VB geht das mit:
Zitat:
nhWnd = GetWindow(nhWnd, GW_HWNDNEXT)
Loop
Denke ich mal!
Weiß wer etwas, was mir alle Handles zu einen Fenstertitel liefert?
David
  Mit Zitat antworten Zitat
API

Registriert seit: 18. Apr 2004
637 Beiträge
 
#9

Re: FindWindow: Alle Handles filtern

  Alt 21. Feb 2008, 11:05
Anbei ein Demo (code von bitsetter)
Angehängte Dateien
Dateityp: zip enumwindows_demo_771.zip (1,8 KB, 40x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von gizzy
gizzy

Registriert seit: 3. Jun 2007
59 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: FindWindow: Alle Handles filtern

  Alt 21. Feb 2008, 14:54
Zitat von API:
Anbei ein Demo (code von bitsetter)
Danke! Ich frag mich nur, obwohl ich exakt dies hatte, bei mir dieser Variablen Fehler kam!
Habe jetzt den Filter innerhalb des EnumWindows geändert. Sieht folgendermaßen aus und funktioniert auch Prima

Delphi-Quellcode:
if Trim(WinCaption) = 'Arbeitsplatzthen
    Lbx.Items.Add(InttoStr(wnd));
Dank schön
David
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:06 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