delphi 中怎么向一个非活动窗口发送组合键

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi 中怎么向一个非活动窗口发送组合键相关的知识,希望对你有一定的参考价值。

在delphi编程中怎么向一个非活动的窗口发送CTRL+1,是非活动的窗口不是当前窗口,也不要把它激活成当前窗口,所以要用keybd_event来实现的就不要发了

参考技术A 这个简单饿楼上的方法正确, 但是没有取目标窗口句柄我不知道你是什么窗口思路是用FindWindow来取窗口句柄然后对目标窗口发送按键消息如果是目标窗口的子窗口在取得目标窗口句柄以后再用FindWindowEx取子窗口句柄方法一样我举个计算器的例子吧procedure TForm1.Button1Click(Sender: TObject);
var
TargetHandle: HWND; 目标句柄
begin
TargetHandle := FindWindow(nil, PChar('Calculator')); 取计算器窗口句柄
if TargetHandle > 0 then 如果句柄有效
PostMessage(TargetHandle, WM_KEYDOWN, Ord('1'), 0); 发送消息
end;
参考技术B 装一个键盘钩子,可以监视到键盘动作。可以参见《labview深入windows编程》这本书 参考技术C 可以用Windows API函数来实现。

SendMessage();具体请查阅api资料。

怎样用postMessage向一个窗口发送Alt+D组合键

怎样用postMessage向一个窗口发送Alt+D组合键

参考技术A postmessage(Hwnd,WM_KEYDOWN,VK_Alt,0);
postmessage(Hwnd,WM_KEYDOWN,VK_D,0);
postmessage(Hwnd,WM_KEYUP,VK_D,0);
postmessage(Hwnd,WM_KEYUP,VK_Alt,0);本回答被提问者采纳

以上是关于delphi 中怎么向一个非活动窗口发送组合键的主要内容,如果未能解决你的问题,请参考以下文章

delphi 模拟键盘法对当前窗口鼠标左键单击最小化怎么做?

如何用delphi获取键盘扫描码及模拟键盘组合键

怎样用postMessage向一个窗口发送Alt+D组合键

如何在VB中用PostMessage向指定窗口发送带有修饰键的组合键?

在Delphi中 如何在字符串中表示 CTRL+ENTER 组合键?

PostMessage如何发送Ctrl组合键