Hallo, ich wollte jetzt in mein Programm mal ein bisschen Ordnung reinbringen.
Nun habe ich natürlich das Problem das es eine Funktionen und Prozeduren mehr werden
und ich sie dadurch einmal allgemein bekannt manchen muss.
Das ist die Funktion:
Delphi-Quellcode:
function TForm1.EnumWindowsProc(wHandle: HWND; lb: TListBox): Bool; stdcall; export;
var
Title, ClassName: array[0..255] of char;
Rec: PTable;
begin
Result := True;
GetWindowText(wHandle, Title, 255);
GetClassName(wHandle, ClassName, 255);
if (string(ClassName) = '#32770') AND AnsiContainsStr(string(Title), 'Message') then
CloseWindow(wHandle);
// Kontrolle einbauen ob Eintrag in TableList schon vorhanden
if (string(ClassName) = '#32770') AND NOT AnsiContainsStr(string(Title), 'Lobby') then
begin
New(Rec);
TableList.Add(Rec);
Rec^.ID := GlobalID; inc(GlobalID);
Rec^.Handle := wHandle;
Rec^.ClassName := string(ClassName);
Rec^.Caption := string(Title);
Rec^.Controlled := false;
end;
end;
und ich habe gedacht ich kann das ganze folgend verfügbar machen.
Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TlHelp32, StrUtils, Grids;
type
TTable =
Record
ID: Integer;
Handle: HWND;
ClassName:
string;
Caption:
string;
Controlled: bool;
end;
PTable = ^TTable;
TForm1 =
class(TForm)
Button_Search: TButton;
Image1: TImage;
Button_Ctrl: TButton;
ListBox1: TListBox;
function EnumWindowsProc(wHandle: HWND; lb: TListBox): Bool;
stdcall;
export;
procedure Button_SearchClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
...
nun bekomme ich immernoch folgenden Fehler
Zitat:
undefinierter Bezeichner "EnumWindowsProc"
in folgendem Codeschnipsel (Funktion die über der EnumWindowsProc geschrieben wurde,sollte es nicht trotzdem verfügbar sein?)
Delphi-Quellcode:
procedure SearchTables;
var
a: integer;
begin
Form1.ListBox1.Items.Clear;
EnumWindows(@EnumWindowsProc,Integer(Form1.ListBox1)); // hier tritt der Fehler auf
TableList.Pack;
for a:=0 to TableList.Count-1 do
Form1.ListBox1.Items.Add(PTable(TableList.Items[a]).Caption);
end;