可否向後台程序發送按鍵?

takdick 2005-07-27 05:05:52
請問有沒有辦法在得到程序的句柄後,向它發送ctrl+v的組合鍵,但不需要程序顯示在最前面.
begin
i:=findwindow('notepad',nil);
if i <> 0 then
begin
//SetForegroundWindow(i); 不要這一句
Keybd_event(VK_CONTROL, 0, 0, 0);
Keybd_event(Byte('V'), 0, 0, 0);
Keybd_event(Byte('V'), 0, KEYEVENTF_KEYUP, 0);
Keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
end;
...全文
132 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
takdick 2005-07-28
  • 打赏
  • 举报
回复
想想也好像不太可能做到.....
算了,給你分.
xixuemao 2005-07-27
  • 打赏
  • 举报
回复
处理消息??你说你希望notepad、word、excel处理你发的消息???佩服楼主。

我还是关注吧..........
takdick 2005-07-27
  • 打赏
  • 举报
回复
但如果後台程序是notepad,word,excel這些軟件,不是自己寫的,如何能處理消息?
還有其他方法嗎?
xixuemao 2005-07-27
  • 打赏
  • 举报
回复
因为必须有输入焦点才能接受,所以当后台程序不在最前面没有输入焦点的时候,你执行keybd_event没效果的。。所以不如传递消息,然后在消息处理过程中执行想要的操作,比如设置输入焦点,然后执行keybd_event。

仅个人观点。
xixuemao 2005-07-27
  • 打赏
  • 举报
回复
可以把这个
Keybd_event(VK_CONTROL, 0, 0, 0);
Keybd_event(Byte('V'), 0, 0, 0);
Keybd_event(Byte('V'), 0, KEYEVENTF_KEYUP, 0);
Keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
写到后台程序里,然后主程序获得后台程序的句柄,发送消息给后台,然后后台程序在消息处理过程中执行以上操作。。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧