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

本文介绍了一种使用Delphi实现跨进程窗口焦点获取及输入的方法。通过AttachThreadInput函数连接不同进程间的输入,使得应用程序能够获取并操作其他进程的窗口焦点。此外还介绍了如何使用GetWindowThreadProcessId来定位非活动窗口的焦点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值