VC++模拟键盘输入的一些资料

方法1: 

HWND hwnd=::FindWindow(0,"文档1"); //假设你要找的窗口标题为“文档1” 
CWnd::FromHandle(hwnd)->SetForegroundWindow(); 
::PostMessage(hwnd,WM_KEYDOWN, VK_ESCAPE, 0L); //发送ESC按下的键盘消息


方法2:这里以向记事本程序发送Ctrl+s按键消息为例: 

CWnd *pWnd = FindWindow("Notepad", NULL); 
if (pWnd->GetSafeHwnd()) 
{ 
	pWnd->ShowWindow(SW_NORMAL); 
	pWnd->SetForegroundWindow(); 
	keybd_event(VK_CONTROL, 0, 0, 0); 
	keybd_event('S', 0, 0, 0); 
	keybd_event(VK_CONTROL, 0, KEYEVENTF_KEYUP, 0); 
	keybd_event('S', 0, KEYEVENTF_KEYUP, 0); 
}

对于其他程序,关键就是要找到就收消息的窗口句柄。


相关函数及按键标识:
::mouse_event(1) 模拟鼠标动作API函数mouse_event,它可以实现模拟鼠标按下和放开等动作。
    VOID mouse_event(
      DWORD dwFlags, // 鼠标动作标识。
      DWORD dx, // 鼠标水平方向位置。
      DWORD dy, // 鼠标垂直方向位置。
      DWORD dwData, // 鼠标轮子转动的数量。
      DWORD dwExtraInfo // 一个关联鼠标动作辅加信息。
    );
其中,dwFlags表示了各种各样的鼠标动作和点击活动,它的常用取值如下:
   MOUSEEVENTF_MOVE 表示模拟鼠标移动事件。
   MOUSEEVENTF_LEFTDOWN 表示模拟按下鼠标左键。
   MOUSEEVENTF_LEFTUP 表示模拟放开鼠标左键。
   MOUSEEVENTF_RIGHTDOWN 表示模拟按下鼠标右键。
   MOUSEEVENTF_RIGHTUP 表示模拟放开鼠标右键。
   MOUSEEVENTF_MIDDLEDOWN 表示模拟按下鼠标中键。
   MOUSEEVENTF_MIDDLEUP 表示模拟放开鼠标中键。

符号常量		十六进制值	指定的鼠标或键盘按键
VK_LBUTTON		01			鼠标左键
VK_RBUTTON		02			鼠标右键
VK_CANCEL		03			Control-break 过程
VK_MBUTTON		04 			鼠标中键
VK_BACK			08 			BACKSPACE 键
VK_TAB			09 			TAB 键
VK_CLEAR		0C 			CLEAR 键
VK_RETURN		0D 			ENTER 键
VK_SHIFT		10 			SHIFT 键
VK_CONTROL		11 			CTRL 键
VK_MENU			12 			ALT 键
VK_PAUSE		13 			PAUSE 键
VK_CAPITAL		14 			CAPS LOCK 键
VK_ESCAPE		1B 			ESC 键
VK_SPACE		20 			SPACEBAR
VK_PRIOR		21 			PAGE UP 键
VK_NEXT			22 			PAGE DOWN 键
VK_END			23 			END 键
VK_HOME			24 			HOME 键
VK_LEFT			25 			LEFT ARROW 键
VK_UP			26 			UP ARROW 键
VK_RIGHT		27 			RIGHT ARROW 键
VK_DOWN			28 			DOWN ARROW 键
VK_SELECT		29 			SELECT 键
VK_EXECUTE		2B 			EXECUTE 键
VK_SNAPSHOT		2C 			PRINT SCREEN键(用于Windows 3.0及以后版本)
VK_INSERT		2D 			INS 键
VK_DELETE		2E 			DEL 键
VK_HELP			2F 			HELP 键
VK_LWIN 		5B 			Left Windows 键 (Microsoft自然键盘)
VK_RWIN 		5C 			Right Windows 键 (Microsoft自然键盘)
VK_APPS 		5D 			Applications 键 (Microsoft自然键盘)
VK_NUMPAD0 		60 			数字小键盘上的 0 键
VK_NUMPAD1 		61 			数字小键盘上的 1 键
VK_NUMPAD2 		62 			数字小键盘上的 2 键
VK_NUMPAD3 		63 			数字小键盘上的 3 键
VK_NUMPAD4 		64 			数字小键盘上的 4 键
VK_NUMPAD5 		65 			数字小键盘上的 5 键
VK_NUMPAD6 		66 			数字小键盘上的 6 键
VK_NUMPAD7 		67 			数字小键盘上的 7 键
VK_NUMPAD8 		68 			数字小键盘上的 8 键
VK_NUMPAD9 		69 			数字小键盘上的 9 键
VK_MULTIPLY		6A			Multiply 键
VK_ADD			6B			Add 键
VK_SEPARATOR	6C			Separator 键
VK_SUBTRACT		6D			Subtract 键
VK_DECIMAL		6E			Decimal 键
VK_DIVIDE		6F			Divide 键
VK_F1 			70 			F1 键
VK_F2 			71 			F2 键
VK_F3 			72 			F3 键
VK_F4 			73 			F4 键
VK_F5 			74 			F5 键
VK_F6 			75 			F6 键
VK_F7 			76 			F7 键
VK_F8 			77 			F8 键
VK_F9 			78 			F9 键
VK_F10 			79 			F10 键
VK_F11 			7A 			F11 键
VK_F12 			7B 			F12 键
VK_F13 			7C 			F13 键
VK_F14 			7D 			F14 键
VK_F15 			7E 			F15 键
VK_F16 			7F 			F16 键
VK_F17 			80H 		F17 键
VK_F18 			81H 		F18 键
VK_F19 			82H 		F19 键
VK_F20 			83H 		F20 键
VK_F21 			84H 		F21 键
VK_F22 			85H 		F22 键
VK_F23 			86H 		F23 键
VK_F24 			87H 		F24 键
VK_NUMLOCK		90			NUM LOCK 键
VK_SCROLL		91 			SCROLL LOCK 键
VK_ATTN			F6 			Attn 键
VK_CRSEL		F7 			CrSel 键
VK_EXSEL		F8 			ExSel 键
VK_EREOF		F9 			Erase EOF 键
VK_PLAY			FA 			Play 键
VK_ZOOM			FB 			Zoom 键
VK_OEM_CLEAR	FE			Clear 键

///

对于字母键和非小键盘上的数字键,直接在单引号中加入该键就行.
比如: a键:'A'
          1键:'1'

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页