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这个参数是干什么用的?
刚才用你的方法试了一下,也不行... 展开
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这个参数是干什么用的?
刚才用你的方法试了一下,也不行... 展开
3个回答
展开全部
windows程序一般都不会直接接收键盘的消息,键盘消息都是由Windows来处理,由Windows操作系统负责把按键翻译成WM_KEYXXXX,再把WM_KEYXXXX发送给程序.应用程序也只接受系统送来的WM_KEYXXXX,那么也就是说用sendMessage是不可能向一个程序发送按键消息的(字符消息除外).
如果要模拟真正的键盘,必须用keyboard_event,或用字符来映射一个事件.
如果要模拟真正的键盘,必须用keyboard_event,或用字符来映射一个事件.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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);
可以是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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询