注册 | 登录 忘记密码? 51cto首页 | 博客 | 论坛 | 招聘
热点文章 Exchange服务器系列课程之..
 帮助

多种方法查找窗口句柄


2007-09-03 07:11:03
 标签:delphi   [推送到技术圈]

一种:使用API函数FindWindow
hw:=FindWindow(nil,PChar('窗口的标题名称'));
第二种:通过枚举所有窗口,查询特定条件的窗口
function EnumWindowsProc(Wnd: HWND; Param: Integer): Boolean; stdcall;
var
cn : Array[0..255] of char;
tab : HWND;
tId : DWORD;
begin
 Result := TRUE;
 if GetClassName(wnd, cn, 255) > 0 then
  if cn = '#32770' then
   begin
    if (FindWindowEx(wnd, 0, 'Button','新建窗口') <> 0) and
       (FindWindowEx(wnd, 0, 'Button','拨打电话') <> 0) and
       (FindWindowEx(wnd, 0, 'Button','发送(Enter)') <> 0) then
    begin
     tID := GetWindowThreadProcessID(wnd, nil);
     Form1.Memo1.Lines.Add('对话框句柄:'+IntToStr(Wnd));
     Form1.Memo1.Lines.Add('对话框线程ID:' + IntToSTr(tID));
    end;
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
EnumWindows(@EnumWindowsProc,0);
end;
第三种: 查找字窗口内元素的句柄
FindWindowEx(wnd, 0, 'Button','拨打电话')
第四种: 直接使用类似spy++工具软件查询




    文章评论
 
 

发表评论

昵   称:
验证码:  点击图片可刷新验证码  博客过2级,无需填写验证码
内   容: