unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
a:hwnd;
implementation
{$R *.dfm}
function EnumWindowsProc(AHWnd: HWnd;
LPARAM: lParam): boolean; stdcall;
var
WndCaption: array[0..254] of char;
WndClassName: array[0..254] of char;
begin
GetWindowText(AHWnd, @WndCaption, 254);
GetClassName(AHWnd, @WndClassName, 254);
if (pos('fanxiaoy',wndcaption)>0) then //用你已知的窗口标题替换这里
begin
a:=ahwnd;
with Form1.Memo1.Lines do
begin
Add(StrPas(WndCaption));
Add(StrPas(WndClassName));
add('HWND:'+inttostr(ahwnd)); //获得句柄
Add('xxxxxxxx');
end;
end;
Result := True;
end;
function EnumChildWndProc(AhWnd:LongInt;
AlParam:lParam):boolean;stdcall;
var
WndClassName: array[0..254] of Char;
WndCaption: array[0..254] of Char;
begin
GetClassName(AhWnd,wndClassName,254);
GetWindowText(aHwnd,WndCaption,254);
with form1.memo1 do
begin
lines.Add(IntToStr(ahwnd));
lines.add(string(wndClassName));
lines.add(string(wndCaption));
lines.add('-------');
end;
result:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Lines.Clear;
a:=0;
EnumWindows(@EnumWindowsProc, 0); //call back function 调用
if a>0 then
begin
EnumChildWindows(a,@EnumChildWndProc,0);
end
else
ShowMessage('not');
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
EnumChildWindows(4261366,@EnumChildWndProc,0);
end;
end.