var
cn: array[0..255] of Char;
HD: HWND;
T1,T2: DWORD;
begin
(*获得焦点所在窗口句柄,可以是除本身外的所有其他应用程序。
如果焦点所在子窗体中,则获得的是父窗口句柄。*)
HD := GetForegroundWindow;
if HD > 0 then
begin
//通过焦点所在窗口的句柄,获得其线程的标识符
T1 := GetWindowThreadProcessId(HD);
//通过本身的句柄,获得本身的线程的标识符
T2 := GetWindowThreadProcessId(Application.Handle);
//共享焦点
AttachThreadInput(T2,T1,True);
HD := GetFocus;
if (HD > 0) then
begin
GetClassName(HD,cn,Length(cn));
if Trim(cn) = 'Edit' then //类名
begin
SendMessage(HD,WM_SETTEXT,1,LongInt(PChar(str)));
PostMessage(HD,WM_KEYDOWN,VK_RETURN,0); //发回车命令
end;
end;
//撤销连接
AttachThreadInput(T2,T1,False);
end;
//HD := GetFocus; //如果单独用,只能获得当前应用程序的焦点所在控件的句柄。
end;
发送字符串到当前光标所在位置
最新推荐文章于 2021-02-25 03:28:58 发布
这段代码用于获取当前前台窗口的句柄,并检查其是否为编辑框。如果是,它会发送一个字符串到该编辑框并模拟按下回车键。使用了AttachThreadInput来允许两个线程之间的输入交互。
摘要由CSDN通过智能技术生成