SendMessage怎么给其它窗口发送键盘事件

SendMessage(HWNDhWnd,UINTMsg,WPARAMwParam,LPARAMlParam);第一个参数是窗口句柄然后下面三个参数怎么写呢?我试过Msg... SendMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);
第一个参数是窗口句柄
然后下面三个参数怎么写呢?
我试过Msg用Key_Down,然后下面写键值,再来个Key_up
但是一点反应也没有
然后用Key_Char+ASCII码到是能发一些字母,但是不顶用啊
我要的是键盘事件,又不是打字....
比如F10,或者按下键盘大键盘上的0之类的
WM_SYSCHAR,WM_CHAR这两个参数是被排除的,因为F10根本没有所谓的ASCII码啊
keybd_event,这个函数我也知道,但是他是用来本线程发送键盘事件的
我现在的目标是给其它进程/窗体发送键盘事件!
SendMessage(this->m_hWnd, WM_SYSKEYDOWN,VK_F4,0x201E0001);
0x201E0001这个参数是干什么用的?
刚才用你的方法试了一下,也不行...
展开
 我来答
lonatt
推荐于2016-09-25 · 超过25用户采纳过TA的回答
知道答主
回答量:53
采纳率:0%
帮助的人:84.5万
展开全部
如果WM_CHAR可以的话,那你可以试试WM_SYSCHAR
实在不行就换keybd_event函数,也许这个函数才是你真正想要的
----------------------------------------
VK_F10不就是F10的对应码吗?
keybd_event并非用来给自身线程发键盘事件,而是给获得焦点的窗口发键盘事件,用SetFocus指定窗口焦点
alpswolf
2007-12-08 · TA获得超过3520个赞
知道大有可为答主
回答量:1989
采纳率:0%
帮助的人:1400万
展开全部
windows程序一般都不会直接接收键盘的消息,键盘消息都是由Windows来处理,由Windows操作系统负责把按键翻译成WM_KEYXXXX,再把WM_KEYXXXX发送给程序.应用程序也只接受系统送来的WM_KEYXXXX,那么也就是说用sendMessage是不可能向一个程序发送按键消息的(字符消息除外).
如果要模拟真正的键盘,必须用keyboard_event,或用字符来映射一个事件.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
6908270270
2007-12-09 · TA获得超过3427个赞
知道小有建树答主
回答量:1988
采纳率:0%
帮助的人:707万
展开全部
Msg
可以是WM_KEYDOWN//键被按下
WM_SYSKEYDOWN//ctrl alt,f1,f2....
WM_CHAR //a,b....
WM_SYSCHAR
::SendMessage(this->m_hWnd, WM_SYSKEYDOWN,VK_F4,0x201E0001); //按下f4
这一句是让你的程序关掉
::SendMessage(this->m_hWnd, WM_SYSKEYDOWN, 0x11, 0x20380001); //按下ctrl
::SendMessage(this->m_hWnd, WM_SYSKEYDOWN, VK_F4, 0x201E0001); //按下f4

::SendMessage(this->m_hWnd, WM_SYSKEYUP, VK_F4, 0x201E0001); //松开ctrl
::SendMessage(this->m_hWnd, WM_SYSKEYUP, 0x11, 0xC0380001); //松开f4

::SendMessage(this->m_hWnd, WM_SYSKEYDOWN,VK_F10,0x201E0001);

如果这样不行可以试一下这个
::SetForegroundWindow(hWnd);//先激活你窗口
keybd_event(VK_F10, 0, 0, 0); 然后模拟键盘

keybd_event(VK_F10, 0, KEYEVENTF_KEYUP, 0);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式