模拟键盘输入 keybd_event()
找到需要的窗口,显示这个窗口到最顶层,把焦点给这个窗口,模拟键盘消息输入,隐藏这个窗口
附上虚拟键码值的网页 Virtual-Key 代码
以防累死也找不到某个符号的虚拟键值是多少,列一个函数
int a = VkKeyScan('A');
作用是得到一个字符的虚拟键值
//找新的窗口 CString strWindowTitle; strWindowTitle.Format(_T("xxxx"));
HWND hCmdWnd; hCmdWnd = ::FindWindow(NULL, strWindowTitle); if (hCmdWnd == NULL) { AfxMessageBox(_T("can't fine window")); return; }
//默认的显示窗口 ::ShowWindow(hCmdWnd, SW_NORMAL); //前端显示 ::SetForegroundWindow(hCmdWnd); //窗口置顶 ::SetWindowPos(hCmdWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); Sleep(100); //键盘输入 CString strCmd = _T("dsfsddsfderft"); SendCmdKeyMessage(strCmd);
void SendCmdKeyMessage(CString sMsg) { char cOldChar = 0; char cSendChar; for (int i = 0; i < sMsg.GetLength(); i++) { if (sMsg[i] == cOldChar) { Sleep(50); } if (sMsg[i] == '.') { keybd_event(110, 0, 0, 0); Sleep(10); } else if (sMsg[i] == '[') { keybd_event(219, 0, 0, 0); Sleep(10); } else if (sMsg[i] == ']') { keybd_event(221, 0, 0, 0); Sleep(10); } else if (sMsg[i] == '\\') { keybd_event(VK_OEM_5, 0, 0, 0); Sleep(10); } else if (sMsg[i] == ':') { keybd_event(16, 0x2A, 0, 0);//shift按下 keybd_event(VK_OEM_1, 0, 0, 0); keybd_event(16, 0x2A, KEYEVENTF_KEYUP, 0);//shift抬起 Sleep(10); } else if (sMsg[i] == '_') { keybd_event(16, 0x2A, 0, 0);//shift按下 keybd_event(VK_OEM_MINUS, 0, 0, 0); keybd_event(16, 0x2A, KEYEVENTF_KEYUP, 0);//shift抬起 Sleep(10); } else if (sMsg[i] == '-') { keybd_event(VK_OEM_MINUS, 0, 0, 0); Sleep(10); } else if (sMsg[i] >= 'a' && sMsg[i] <= 'z') { cSendChar = sMsg[i] - 'a' + 65; keybd_event(cSendChar, 0, 0, 0); Sleep(10); } else if ((sMsg[i] >= 'A' && sMsg[i] <= 'Z')) { keybd_event(20, 0, 0, 0); keybd_event(20, 0, KEYEVENTF_KEYUP, 0); cSendChar = (BYTE)sMsg[i]; keybd_event(cSendChar, 0, 0, 0); keybd_event(20, 0, 0, 0); keybd_event(20, 0, KEYEVENTF_KEYUP, 0); Sleep(10); } else { cSendChar = (BYTE)sMsg[i]; keybd_event((BYTE)sMsg[i], 0, 0, 0); Sleep(10); } } Sleep(100); keybd_event(VK_RETURN, 0, 0, 0); }
::ShowWindow(hCmdWnd, SW_HIDE);//隐藏窗口
alt+tab
keybd_event(VK_MENU, 0xb8, 0, 0); //Alt Press keybd_event(VK_TAB, 0x8f, 0, 0); // Tab Press keybd_event(VK_TAB, 0x8f, KEYEVENTF_KEYUP, 0); // Tab Release keybd_event(VK_MENU, 0xb8, KEYEVENTF_KEYUP, 0); // Alt Release