AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Fenster Listen

Ein Thema von Sir K · begonnen am 4. Feb 2009 · letzter Beitrag vom 4. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2      
Sir K

Registriert seit: 30. Nov 2008
75 Beiträge
 
RAD-Studio 2009 Arc
 
#1

Fenster Listen

  Alt 4. Feb 2009, 11:04
Hallo,
ich benutze den folgenden Code um mir in einer ListBOx alle aktiven Fenster anzeigen zu lassen...
der Code ist hier aus dem Forum und müsste eig funktionieren... nur ich bekomme beim Funktionsaufru die Meldung Inkompatibble Typen 'HWND' und 'Pointer'.

Kann mir da einer helfen?
Delphi-Quellcode:
function EnumWindowsProc (Wnd: HWND; LParam: LPARAM): BOOL; stdcall;
var Bezeichnung : Array[0..200] of Char;
begin
  if (IsWindowVisible(Wnd) or IsIconic(wnd)) and
     ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or
     (GetWindowLong(Wnd, GWL_HWNDPARENT) = GetDesktopWindow)) and
     (GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then begin
      GetWindowText(Wnd, Bezeichnung, 256);
    Form1.listbox1.Items.Add(Bezeichnung);
  end;
end;


procedure TForm1.aktualisieren1Click(Sender: TObject);
begin
ListBox1.Clear;
EnumWindows(@EnumWindowsProc, 1);
end;
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#2

Re: Fenster Listen

  Alt 4. Feb 2009, 11:51
Schau dir mal die HIlfe genauer an !!

Code:
Return Value

To continue enumeration, the callback function must return TRUE; to stop enumeration, it must return FALSE.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#3

Re: Fenster Listen

  Alt 4. Feb 2009, 11:58
Wo (in welcher Zeile) bekommst du denn diese Fehlermeldung?


PS:
Delphi-Quellcode:
var Bezeichnung : Array[0..200] of Char;

GetWindowText(Wnd, Bezeichnung, 256);
Length(Bezeichnung) = 210
MaxLength für GetWindowText = 256

fällt dir da was auf?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Sir K

Registriert seit: 30. Nov 2008
75 Beiträge
 
RAD-Studio 2009 Arc
 
#4

Re: Fenster Listen

  Alt 4. Feb 2009, 12:21
Zitat von himitsu:
Wo (in welcher Zeile) bekommst du denn diese Fehlermeldung?


PS:
Delphi-Quellcode:
var Bezeichnung : Array[0..200] of Char;

GetWindowText(Wnd, Bezeichnung, 256);
Length(Bezeichnung) = 210
MaxLength für GetWindowText = 256

fällt dir da was auf?
beim Funktionsaufruf:
EnumWindows(@EnumWindowsProc, 1);
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Fenster Listen

  Alt 4. Feb 2009, 12:28
Wo kommt denn die eins beim Funktionsaufruf her?

Guck dir das mal an: http://www.michael-puff.de/Developer...mWindows.shtml
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#6

Re: Fenster Listen

  Alt 4. Feb 2009, 12:47
grad getestet und ich bekomm keine Fehlermeldung

und wie gesagt:
Delphi-Quellcode:
GetWindowText(Wnd, Bezeichnung, 201);
// bzw.
GetWindowText(Wnd, Bezeichnung, Length(Bezeichnung));
@Luckie: die "1" ist doch egal ... da er LParam eh nicht verwendet


[add]
Delphi-Quellcode:
function EnumWindowsProc (Wnd: HWND; LParam: LPARAM): BOOL; stdcall;
var Bezeichnung : Array[0..200] of Char;
begin
  if (IsWindowVisible(Wnd) or IsIconic(wnd)) and
      ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or
      (GetWindowLong(Wnd, GWL_HWNDPARENT) = GetDesktopWindow)) and
      (GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then begin
    GetWindowText(Wnd, Bezeichnung, Length(Bezeichnung));
    TListBox(LParam).Items.Add(Bezeichnung);
  end;
  Result := True;
end;


procedure TForm1.aktualisieren1Click(Sender: TObject);
begin
  ListBox1.Clear;
  EnumWindows(@EnumWindowsProc, LPARAM(ListBox1));
end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Sir K

Registriert seit: 30. Nov 2008
75 Beiträge
 
RAD-Studio 2009 Arc
 
#7

Re: Fenster Listen

  Alt 4. Feb 2009, 12:54
Zitat von Luckie:
Wo kommt denn die eins beim Funktionsaufruf her?

Guck dir das mal an: http://www.michael-puff.de/Developer...mWindows.shtml
Delphi-Quellcode:
type
  PMyEnumParam = ^TMyEnumParam;
  TMyEnumParam = record
    lb: TListbox;
  end;
Wie muss ich diesen abschnitt eintragen? wenn cih den einfach hinzufüge bekomm ich erst mal die meldungen:
-"Feld Form1.Form1 besitzt keine entsprechende Komponente. Soll d. Deklaration entfert werden?"
-"Die Methode Button1Click, auf die Button1Click verweist, existiert nicht soll der Verweis entfernt werden?"

bei verneinung kommen dann folgende compiler meldungen:

; oder : erwartet aber = gefunden
Published-Feld 'PMyEnumParam' ist weder vom Typ class noch interface
PMyEnumParam = ^TMyEnumParam; und das gleiche mit der nächsten Zeile..
  Mit Zitat antworten Zitat
Sir K

Registriert seit: 30. Nov 2008
75 Beiträge
 
RAD-Studio 2009 Arc
 
#8

Re: Fenster Listen

  Alt 4. Feb 2009, 12:58
Zitat von himitsu:
grad getestet und ich bekomm keine Fehlermeldung

und wie gesagt:
Delphi-Quellcode:
GetWindowText(Wnd, Bezeichnung, 201);
// bzw.
GetWindowText(Wnd, Bezeichnung, Length(Bezeichnung));
@Luckie: die "1" ist doch egal ... da er LParam eh nicht verwendet


[add]
Delphi-Quellcode:
function EnumWindowsProc (Wnd: HWND; LParam: LPARAM): BOOL; stdcall;
var Bezeichnung : Array[0..200] of Char;
begin
  if (IsWindowVisible(Wnd) or IsIconic(wnd)) and
      ((GetWindowLong(Wnd, GWL_HWNDPARENT) = 0) or
      (GetWindowLong(Wnd, GWL_HWNDPARENT) = GetDesktopWindow)) and
      (GetWindowLong(Wnd, GWL_EXSTYLE) and WS_EX_TOOLWINDOW = 0) then begin
    GetWindowText(Wnd, Bezeichnung, Length(Bezeichnung));
    TListBox(LParam).Items.Add(Bezeichnung);
  end;
end;


procedure TForm1.aktualisieren1Click(Sender: TObject);
begin
  ListBox1.Clear;
  EnumWindows(@EnumWindowsProc, LPARAM(ListBox1));
end;
habs mal enstprechend abgeändert aber es bleibt bei dem Fehler... also wenn du die Meldung nicht bekommst kann das ja nur heißen dass es an der delphi version liegt^^ welche hast du denn?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#9

Re: Fenster Listen

  Alt 4. Feb 2009, 13:16
in D7 und D2009 getestet
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
mr_emre_d
(Gast)

n/a Beiträge
 
#10

Re: Fenster Listen

  Alt 4. Feb 2009, 13:21
Ich werde natürlich wieder ignoriert ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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