如何获得另外一个应用程序中的控件句柄。 - 日志 - tomore - 问友源码空间

如何获得另外一个应用程序中的控件句柄。 - 日志 - tomore - 问友源码空间 [ http://www.winu.cn/space-14160-do-blog-id-11305.html ] ... function GetComponentHandle(hwnd: Integer; lparam: Longint):Boolean; stdcall;varbuffer: array[0..255] of Char;beginResult := True;//得到目标窗口的控件{GetClassName(hwnd, buffer, 256);//找到目标窗口的TButton类目标控件if StrPas(Buffer)='TButton' thenbeginPInteger(lparam)^ := hwnd; //得到目标控件的Hwnd(句柄)Result:=False; //终止循环end;}//找到目标窗口的目标控件(按标题)GetWindowText(hwnd, buffer, 100);if StrPas(Buffer)='Button1' thenbeginPInteger(lparam)^ := hwnd; //得到目标控件的Hwnd(句柄)Result:=False; //终止循环end;end;procedure TForm1.Button1Click(Sender: TObject);varAHandle, BHandle: Integer;begin//取句柄AHandle := FindWindow(nil, '计算器'); //就是窗口的Caption// AHandle := GetActiveWindow; //或GetForeGroundWindow;获得当前激活窗体的句柄if AHandle<>0 thenbegin//在这里循环取到想要的句柄为止EnumChildWindows(AHandle, @GetComponentHandle, Integer(@BHandle));//此时,BHandle就是你要的句柄PostMessage(BHandle, BM_Click, 0, 0); //向这个按钮发一个点击消息end;end;当需要获取另外一个应用程序中的所有控件句柄时:因为回调函数只能返回一个句柄,所以需要全局变量在回调函数获取。例:var MyHandle :TStringList;MyHandle :=TStringList.Create;function GetComponentHandle(hwnd: Integer; lparam: Longint):Boolean; stdcall;varbuffer: array[0..255] of Char;beginResult := True;//得到目标窗口的控件MyHandle.add(IntToStr(hwnd));//找到目标窗口的句柄// GetClassName(hwnd, buffer, 256);// MyHandle.add(StrPas(Buffer));//找到目标窗口的T类名// 等end;发送文本S:='你好吗?OK吗?';SendMessage(BHandle, WM_SETTEXT, 0, LongInt(lpstr(S))); ...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值