如何获得另外一个应用程序中的控件句柄。 - 日志 - tomore - 问友源码空间
2009-08-03 15:49
363 查看
如何获得另外一个应用程序中的控件句柄。 - 日志 - tomore - 问友源码空间
[ http://www.winu.cn/space-14160-do-blog-id-11305.html ]
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
...
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)));
...
[ http://www.winu.cn/space-14160-do-blog-id-11305.html ]
'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
...
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)));
...
相关文章推荐
- (三十一)工具方法:获得应用程序包名/安装apk/如何获得当前栈顶的Activity/android如何实现点击一个按钮进入指定网页
- VC 如何在一个对话框中获得另一个对话框句柄()
- js如何判断一个控件是否获得焦点
- 在Maximo7中如何使用日志记录应用程序创建一个日志文件?
- 如何获得当前编辑行的句柄(网格控件)
- 如何通过窗口句柄来获得一个程序窗口的大小
- 在一个界面中有一个对话条,其中有几个控件,在另外一个对话条中也有几个控件,现在通过按TAB键希望能使这两个对话条中的控件能顺序获得输入焦点
- 如何移动一个带有lob字段的表到另外一个表空间
- 如何让一个Form显示在另外一个Form上的一个控件上
- 如何安全地跨窗体调用Timer控件 从一个窗体调用控制另外一个窗体的控件
- 如何在 Windows Phone 应用程序的一个 Pivot 控件中使用不同的应用程序栏
- WPF窗口如何获得一个句柄?
- 如何使用asp.net中的控件将一个图片文件从一个目录传到另外一个目录下?
- 一个ASP.NET控件元素如何获得焦点的问题
- mfc如何获得控件句柄
- 如何在一个用户控件内操作另外一个用户控件的中的控件?
- 如何在一个用户控件内操作另外一个用户控件的中的控件? (from LoveCherry)
- 【转载】如何在 Windows Phone 应用程序的一个 Pivot 控件中使用不同的应用程序栏
- 如何本窗口的COMMAND1中调用另外一个窗口中的某一控件的某一个事件
- (论坛答疑点滴)如何在一个用户控件内操作另外一个用户控件的中的控件?