+ -
当前位置:首页 → 问答吧 → 怎么用SendMessage 按下虚拟键 F1

怎么用SendMessage 按下虚拟键 F1

时间:2011-12-07

来源:互联网

怎么用SendMessage 按下虚拟键 F1, 不要用keybd_event


::SendMessage(m_XXX,WM_KEYDOWN,VK_F1,0);
::SendMessage(m_XXX,WM_KEYUP,VK_F1,0);//m_XXX 是目标窗口的句柄

这样的代码运行后没有按到F1的效果,没反应,错在哪

作者: a15119303304   发布时间: 2011-12-07

改用PostMessage呢?

作者: VisualEleven   发布时间: 2011-12-07

改用 PostMessage 合适

DWORD dwVKFkeyData;
 WORD dwScanCode =MapVirtualKey(VK_F1,0);//VK_F1

 dwVKFkeyData = 1;
 dwVKFkeyData |= dwScanCode<<16;
 dwVKFkeyData |= 0<<24;
 dwVKFkeyData |= 1<<29;
 //按下
 ::PostMessage((HWND)0x203f0,WM_KEYDOWN,VK_F1,dwVKFkeyData);

 //弹起
 dwVKFkeyData |= 3 << 30;
 ::PostMessage((HWND)0x203f0,WM_KEYUP,VK_F1,dwVKFkeyData);

作者: gameslq   发布时间: 2011-12-07

你发送f1之前,最好让目标窗口有个焦点,俺以前是这样操作的。

发送f8

::SetFocus( eclipse_mainwindow );
::SendMessage( eclipse_mainwindow, WM_KEYDOWN, 0x00000077, 0x00420001 );
::SendMessage( eclipse_mainwindow, WM_KEYUP, 0x00000077, 0xc0420001 );

作者: jennyvenus   发布时间: 2011-12-07