设置一个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用于焦点所在的控件不是窗体本身的情况。