回 帖 发 新 帖 刷新版面

主题:怎么获得其他程序中拥有输入焦点的控件的句柄?


应该使用哪个API函数?

回复列表 (共3个回复)

沙发

GetFocus只能获取本进程的输入焦点的窗口句柄

好像有个AttachThreadInput可用,不过我以前粗略试过下无效,可能是我使用的方法错了

另外,可用SetWindowsHookEx拦截相应消息,不过要写在DLL里面哦.

板凳

Declare Function AttachThreadInput Lib "user32" Alias "AttachThreadInput" (ByVal idAttach As Long, ByVal idAttachTo As Long, ByVal fAttach As Long) As Long
这些参数都是什么啊,看不懂
手册里的解释也看不懂
idAttach Long,欲连接线程的标识符(ID) 
idAttachTo Long,与idAttach线程连接的另一个线程的标识符 
fAttach Long,TRUE(非零)连接,FALSE撤消连接
有窗口句柄了,怎么得到标志符?是不是第一个参数是本程序的标志符?

3 楼

手册中的解释是:
通常,系统内的每个线程都有自己的输入队列。本函数(既“连接线程输入函数”)允许线程和进程共享输入队列。连接了线程后,输入焦点、窗口激活、鼠标捕获、键盘状态以及输入队列状态都会进入共享状态

那么使用这个函数之后,怎样往指定线程的拥有输入焦点的控件中输入内容

我来回复

您尚未登录,请登录后再回复。点此登录或注册