如何用 sendmessage 发送键盘按键消息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用 sendmessage 发送键盘按键消息相关的知识,希望对你有一定的参考价值。
参考技术A 如果是一个按钮的话,那么直接发送一个点击的消息即可:SendMessage(hWnd, BM_CLICK, 0, 0);
如果一定要发送 Enter 消息,可以这样:
SendMessage(hWnd, WM_KEYDOWN, VK_RETURN, 0);
SendMessage(hWnd, WM_KEYUP, VK_RETURN, 0);
hWnd 代表按钮的句柄。
BCB 如何让Application收到SendMessage发送来的消息
一般,都是通过添加一个ApplicationEvent组件就可以接收到PostMessage发来的消息,那么如何收到SendMessage发来的消息呢?
https://stackoverflow.com/questions/49862883/sendmessage-to-application-handle-not-working
Application有一个Application->HookMainWindow方法
它的参数是这样的事件函数
bool __fastcall CLASSNAME::AppHookMainWindow(Messages::TMessage &Message)
可以在Create事件中将AppHookMainWindow注册到HookMainWindow方法中
如下
Application->HookMainWindow(AppHookMainWindow);
就可以接收SendMessage发来的消息了。
需要注意的是AppHookMainWindow 的返回值,如果你查BCB的帮助 ,它会这么说
the window hook should return true if it processes the message, and false if it does not。
如果你对消息有处理,就返回true,否则返回false,所以你只需要对自定义消息进行处理,然后返回true,其他一律返回false。
以上是关于如何用 sendmessage 发送键盘按键消息的主要内容,如果未能解决你的问题,请参考以下文章
c中如何用SendMessage()向Notepad发送消息? 在执行文件中输入,在指定记事本中显示