您的位置:首页 > 其它

获取其他程序焦点位置句柄的方法

2010-11-23 21:56 239 查看
设置一个TIMER控件,在500ms的时间里执行

var
h,hFocus:HWND;
str:string;

h:=GetWindowThreadProcessId(GetForegroundWindow(),nil);
memo1.Lines.Add(IntToStr(h));
AttachThreadInput(h,GetCurrentThreadId,True);
hFocus:=GetFocus();
AttachThreadInput(h,GetCurrentThreadId,False);
Memo1.Lines.Add(IntToStr(hFocus));
SendMessage(hFocus,WM_SETTEXT,0,LPARAM(str));
PostMessage(hFocus,WM_KEYDOWN,VK_RETURN,0);

使用AttachThreadInput将两个进程的输入连接起来,才可以获取其他进程的焦点句柄,否则只可以获取本程序的。

GetWindowThreadProcessId用于焦点所在的控件不是窗体本身的情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: