如何象一个窗口发送control+alt这2个按键的模拟消息
时间:2011-12-02
来源:互联网
如何象一个窗口发送control+alt这2个按键的模拟消息
貌似一般的都没问题,但是系统键发不了
::PostMessage(m_hWnd,WM_KEYDOWN,VK_CONTROL,0);
::PostMessage(m_hWnd,WM_KEYDOWN,VK_MENU,0);
Sleep(10);
::PostMessage(m_hWnd,WM_KEYUP,VK_MENU,0);
::PostMessage(m_hWnd,WM_KEYUP,VK_CONTROL,0);
貌似一般的都没问题,但是系统键发不了
::PostMessage(m_hWnd,WM_KEYDOWN,VK_CONTROL,0);
::PostMessage(m_hWnd,WM_KEYDOWN,VK_MENU,0);
Sleep(10);
::PostMessage(m_hWnd,WM_KEYUP,VK_MENU,0);
::PostMessage(m_hWnd,WM_KEYUP,VK_CONTROL,0);
作者: lihongbin33 发布时间: 2011-12-02
VK_MENU按键响应的不是WM_KEYDOWN事件,而是 WM_SYSKEYDOWN 和 WM_SYSKEYUP 事件
The WM_SYSKEYDOWN message is posted to the window with the keyboard focus when the user presses the F10 key (which activates the menu bar) or holds down the alt key and then presses another key.
The WM_SYSKEYDOWN message is posted to the window with the keyboard focus when the user presses the F10 key (which activates the menu bar) or holds down the alt key and then presses another key.
作者: yuucyf 发布时间: 2011-12-03
::PostMessage(m_hWnd,WM_SYSKEYDOWN,VK_MENU,0);
::PostMessage(m_hWnd,WM_SYSKEYDOWN,VK_CONTROL,0);
Sleep(10);
::PostMessage(m_hWnd,WM_SYSKEYUP,VK_CONTROL,0);
::PostMessage(m_hWnd,WM_SYSKEYUP,VK_MENU,0);
貌似依然不行
::PostMessage(m_hWnd,WM_SYSKEYDOWN,VK_CONTROL,0);
Sleep(10);
::PostMessage(m_hWnd,WM_SYSKEYUP,VK_CONTROL,0);
::PostMessage(m_hWnd,WM_SYSKEYUP,VK_MENU,0);
貌似依然不行
作者: lihongbin33 发布时间: 2011-12-03
C/C++ code
HWND hWnd = ::FindWindow(NULL, _T("A")); if(hWnd) { ::AttachThreadInput(::GetWindowThreadProcessId(::GetForegroundWindow(), NULL), GetCurrentThreadId(), TRUE); ::SetForegroundWindow(hWnd); keybd_event(VK_CONTROL, 0, 0, 0); keybd_event(VK_MENU, 0, 0, 0); keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0); keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); ::AttachThreadInput(::GetWindowThreadProcessId(::GetForegroundWindow(), NULL), GetCurrentThreadId(), FALSE); }
作者: VisualEleven 发布时间: 2011-12-03
HWND hWnd = ::FindWindow(NULL, _T("A"));
if(hWnd)
{
::SetForegroundWindow(hWnd);
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(VK_MENU, 0, 0, 0);
keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
}
直接这样就可以,
if(hWnd)
{
::SetForegroundWindow(hWnd);
keybd_event(VK_CONTROL, 0, 0, 0);
keybd_event(VK_MENU, 0, 0, 0);
keybd_event(VK_MENU, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0);
}
直接这样就可以,
作者: VisualEleven 发布时间: 2011-12-03
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28