取得窗口中带有句柄的控件 var hMain,hChild:HWND; buffer:array[1..200] of char; begin hMain:=FindWindow(nil,'Form1'); hChild:=FindWindowEx(hMain,0,nil,nil); while hChild>0 do begin GetWIndowText(hChild,@buffer,200); ListBox1.Items.Add(StrPas(@Buffer)); hChild:=FindWindowEx(hMain,hChild,nil,nil); end; end;
function EnumWindowsProc(hwnd: HWND; lParam: LPARAM): Boolean; stdcall; var cName: array[0..180] of Char; wName: array[0..32] of Char; tHandle: Longword; begin result := true; GetClassName(hwnd, cName, 32); {类名} GetWindowText(hwnd, wName, 180); {窗口名} tHandle := GetWindowLong(hwnd, GWL_STYLE); {判断窗体是否可见} if (WS_VISIBLE and tHandle) > 1 then Form1.Memo1.Lines.Append(IntToStr(hwnd)+ ' | ' + StrPas(cName) + ' | ' + StrPas(wName)); end;procedure TForm1.Button1Click(Sender: TObject); begin EnumWindows(@EnumWindowsProc, 0); end;
var
hMain,hChild:HWND;
buffer:array[1..200] of char;
begin
hMain:=FindWindow(nil,'Form1');
hChild:=FindWindowEx(hMain,0,nil,nil);
while hChild>0 do
begin
GetWIndowText(hChild,@buffer,200);
ListBox1.Items.Add(StrPas(@Buffer));
hChild:=FindWindowEx(hMain,hChild,nil,nil);
end;
end;
var
cName: array[0..180] of Char;
wName: array[0..32] of Char;
tHandle: Longword;
begin
result := true;
GetClassName(hwnd, cName, 32); {类名}
GetWindowText(hwnd, wName, 180); {窗口名}
tHandle := GetWindowLong(hwnd, GWL_STYLE); {判断窗体是否可见}
if (WS_VISIBLE and tHandle) > 1 then
Form1.Memo1.Lines.Append(IntToStr(hwnd)+ ' | ' + StrPas(cName) + ' | ' + StrPas(wName));
end;procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@EnumWindowsProc, 0);
end;