获取指定标题窗体的句柄应该没什么问题用Findwindow函数就行了,可是问题出来了:如果有多个类名及标题相同的窗体,如何才能获取他们各自的句柄呢?
解决方案 »
- bewteen函数使用疑惑
- 问个菜鸟问题,刚入道
- A question About TImageEn (Delphi Image Processing Package)?
- 谁能在今天六点以前解决这个问题我愿奉献500分
- 软件调用windows下的tracert仅能看到ping多少,我现在想得到丢包率多少应如何处理呢?
- 准有ADO的补丁?我的是DELPHI5。5 用ADO+SQLSERVER 在边接上老是有些
- 高分解决关于SQL左连接的语法问题
- 如何动态建立构件,怎样访问它们?
- Database 连接SQlServer不用别名怎么连?
- 简单问题,如何使得另外一个程序最小化,正常和最大化???
- 分组求和的问题
- adoquery 下移一个记录的问题,帮我解决下别拖到明年啊!
FindWindow,EnumChildWindows两个函数,要找的具体BUTTON在EnumChildWindowsProc回调函数中
function EnumChildWindowsProc(hwd: Hwnd): Boolean; stdcall;
begin
Result := true;
GetClassName(hwd, buffer, 256);
if String(Buffer) <> 'Button' then Exit;
getwindowtext(hwd, buffer, 256);
if String(Buffer) <> '验证全部' then Exit;
h := hwd;
end;procedure TForm1.Timer1Timer(Sender: TObject);
var
hwnd1,hwnd2,hwnd3,hwnd4: DWORD;
begin
h := 0;
hwnd1 := FindWindow(nil, '代理猎手');
if hwnd1 <> 0 then
begin
if EnumChildWindows(hwnd1, @EnumChildWindowsProc, 0) then
if h = 0 then exit;
SendMessage(h, WM_LBUTTONDOWN , 0, 0);
SendMessage(h,WM_LBUTTONUp, 0, 0);
end;
end;
function EnumWindowCallBack(HWND:THandle;lparam:longint):longint;stdcall;
var
Wnd_TEXT:string;
begin
Setlength(Wnd_TEXT,255);
GetWindowText(HWND,PChar(Wnd_TEXT),255);//Wnd_TEXT中保存窗口标题
Result:=1;
end;procedure Button1Click(Sender: TObject);
begin
EnumWindows(@EnumWindowCallBack,0);
end;用EnumWindows即可,但只能枚举顶层窗口。