keybd_event,mouse_event 模拟产生键盘事件、鼠标事件的使用

模拟鼠标产生鼠标事件、键盘事件有时候非常有用,比如在自动化测试中。源程序在:http://download.csdn.net/detail/dijkstar/4035890

关键程序:

比如一个应用:自动关闭弹出的Messagox对话框(http://blog.csdn.net/dijkstar/article/details/8761481)(2013-04-05编辑)

void CSimulateMouseView::OnLdbclick() 
{
	//将鼠标的位置放在窗口的标题条上
	POINT lpPoint;
	CRect rc;
	CWnd* pParent = AfxGetApp()->GetMainWnd();
	pParent->GetWindowRect(&rc);
	lpPoint.x = rc.left+50;
	lpPoint.y = rc.top+10;
	SetCursorPos(lpPoint.x, lpPoint.y);

	//双击该标题条
	mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
	mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
	mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
	mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
}

void CSimulateMouseView::OnLclick() 
{
	//将鼠标的位置放在窗口的关闭按钮上
	POINT lpPoint;
	CRect rc;
	CWnd* pParent = AfxGetApp()->GetMainWnd();
	pParent->GetWindowRect(&rc);
	lpPoint.x = rc.right-5;
	lpPoint.y = rc.top +5;
	SetCursorPos(lpPoint.x, lpPoint.y);

	//单击
	mouse_event(MOUSEEVENTF_LEFTDOWN |MOUSEEVENTF_ABSOLUTE,0,0,0,0);
	mouse_event(MOUSEEVENTF_LEFTUP|MOUSEEVENTF_ABSOLUTE,0,0,0,0);
}


BOOL CSimulateMouseView::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
	if (pMsg->message==WM_KEYDOWN && pMsg->wParam==0x41)
	{
		::MessageBox(NULL, "A 键按下", "提示", MB_ICONQUESTION);
		return FALSE;    //不翻译消息,直接将消息传递下去。具体可查MSDN。
	}
	if (pMsg->message==WM_KEYUP && pMsg->wParam==0x41)
	{
		::MessageBox(NULL, "A 键提起", "提示", MB_ICONQUESTION);
		return FALSE;    //不翻译消息,直接将消息传递下去。具体可查MSDN。
	}


	return CFormView::PreTranslateMessage(pMsg);
}

//模拟键盘事件
void CSimulateMouseView::OnLclick2() 
{
	//【A】键按下
	keybd_event(0x41, 0, 0, 0); 

	//【A】键抬起
	keybd_event(0x41, 0, KEYEVENTF_KEYUP, 0);
}


顺便把虚拟键值表列出:

Virtual-Key Codes

The following table shows the symbolic constant names, hexadecimal values, and mouse or keyboard equivalents for the virtual-key codes used by the system. The codes are listed in numeric order.

Symbolic constant nameValue
(hexadecimal)
Mouse or keyboard equivalent
VK_LBUTTON01Left mouse button
VK_RBUTTON02Right mouse button
VK_CANCEL03Control-break processing
VK_MBUTTON04Middle mouse button (three-button mouse)
VK_XBUTTON105Windows 2000/XP: X1 mouse button
VK_XBUTTON206Windows 2000/XP: X2 mouse button
07Undefined
VK_BACK08BACKSPACE key
VK_TAB09TAB key
0A–0BReserved
VK_CLEAR0CCLEAR key
VK_RETURN0DENTER key
0E–0FUndefined
VK_SHIFT10SHIFT key
VK_CONTROL11CTRL key
VK_MENU12ALT key
VK_PAUSE13PAUSE key
VK_CAPITAL14CAPS LOCK key
VK_KANA15IME Kana mode
VK_HANGUEL15IME Hanguel mode (maintained for compatibility; use VK_HANGUL)
VK_HANGUL15IME Hangul mode
16Undefined
VK_JUNJA17IME Junja mode
VK_FINAL18IME final mode
VK_HANJA19IME Hanja mode
VK_KANJI19IME Kanji mode
1AUndefined
VK_ESCAPE1BESC key
VK_CONVERT1CIME convert
VK_NONCONVERT1DIME nonconvert
VK_ACCEPT1EIME accept
VK_MODECHANGE1FIME mode change request
VK_SPACE20SPACEBAR
VK_PRIOR21PAGE UP key
VK_NEXT22PAGE DOWN key
VK_END23END key
VK_HOME24HOME key
VK_LEFT25LEFT ARROW key
VK_UP26UP ARROW key
VK_RIGHT27RIGHT ARROW key
VK_DOWN28DOWN ARROW key
VK_SELECT29SELECT key
VK_PRINT2APRINT key
VK_EXECUTE2BEXECUTE key
VK_SNAPSHOT2CPRINT SCREEN key
VK_INSERT2DINS key
VK_DELETE2EDEL key
VK_HELP2FHELP key
 300 key
 311 key
 322 key
 333 key
 344 key
 355 key
 366 key
 377 key
 388 key
 399 key
3A–40Undefined
 41A key
 42B key
 43C key
 44D key
 45E key
 46F key
 47G key
 48H key
 49I key
 4AJ key
 4BK key
 4CL key
 4DM key
 4EN key
 4FO key
 50P key
 51Q key
 52R key
 53S key
 54T key
 55U key
 56V key
 57W key
 58X key
 59Y key
 5AZ key
VK_LWIN5BLeft Windows key (Microsoft® Natural® keyboard)
VK_RWIN5CRight Windows key (Natural keyboard)
VK_APPS5DApplications key (Natural keyboard)
5EReserved
VK_SLEEP5FComputer Sleep key
VK_NUMPAD060Numeric keypad 0 key
VK_NUMPAD161Numeric keypad 1 key
VK_NUMPAD262Numeric keypad 2 key
VK_NUMPAD363Numeric keypad 3 key
VK_NUMPAD464Numeric keypad 4 key
VK_NUMPAD565Numeric keypad 5 key
VK_NUMPAD666Numeric keypad 6 key
VK_NUMPAD767Numeric keypad 7 key
VK_NUMPAD868Numeric keypad 8 key
VK_NUMPAD969Numeric keypad 9 key
VK_MULTIPLY6AMultiply key
VK_ADD6BAdd key
VK_SEPARATOR6CSeparator key
VK_SUBTRACT6DSubtract key
VK_DECIMAL6EDecimal key
VK_DIVIDE6FDivide key
VK_F170F1 key
VK_F271F2 key
VK_F372F3 key
VK_F473F4 key
VK_F574F5 key
VK_F675F6 key
VK_F776F7 key
VK_F877F8 key
VK_F978F9 key
VK_F1079F10 key
VK_F117AF11 key
VK_F127BF12 key
VK_F137CF13 key
VK_F147DF14 key
VK_F157EF15 key
VK_F167FF16 key
VK_F1780HF17 key
VK_F1881HF18 key
VK_F1982HF19 key
VK_F2083HF20 key
VK_F2184HF21 key
VK_F2285HF22 key
VK_F2386HF23 key
VK_F2487HF24 key
88–8FUnassigned
VK_NUMLOCK90NUM LOCK key
VK_SCROLL91SCROLL LOCK key
 92–96OEM specific
97–9FUnassigned
VK_LSHIFTA0Left SHIFT key
VK_RSHIFTA1Right SHIFT key
VK_LCONTROLA2Left CONTROL key
VK_RCONTROLA3Right CONTROL key
VK_LMENUA4Left MENU key
VK_RMENUA5Right MENU key
VK_BROWSER_BACKA6Windows 2000/XP: Browser Back key
VK_BROWSER_FORWARDA7Windows 2000/XP: Browser Forward key
VK_BROWSER_REFRESHA8Windows 2000/XP: Browser Refresh key
VK_BROWSER_STOPA9Windows 2000/XP: Browser Stop key
VK_BROWSER_SEARCHAAWindows 2000/XP: Browser Search key
VK_BROWSER_FAVORITESABWindows 2000/XP: Browser Favorites key
VK_BROWSER_HOMEACWindows 2000/XP: Browser Start and Home key
VK_VOLUME_MUTEADWindows 2000/XP: Volume Mute key
VK_VOLUME_DOWNAEWindows 2000/XP: Volume Down key
VK_VOLUME_UPAFWindows 2000/XP: Volume Up key
VK_MEDIA_NEXT_TRACKB0Windows 2000/XP: Next Track key
VK_MEDIA_PREV_TRACKB1Windows 2000/XP: Previous Track key
VK_MEDIA_STOPB2Windows 2000/XP: Stop Media key
VK_MEDIA_PLAY_PAUSEB3Windows 2000/XP: Play/Pause Media key
VK_LAUNCH_MAILB4Windows 2000/XP: Start Mail key
VK_LAUNCH_MEDIA_SELECTB5Windows 2000/XP: Select Media key
VK_LAUNCH_APP1B6Windows 2000/XP: Start Application 1 key
VK_LAUNCH_APP2B7Windows 2000/XP: Start Application 2 key
B8-B9Reserved
VK_OEM_1BAUsed for miscellaneous characters; it can vary by keyboard.

Windows 2000/XP: For the US standard keyboard, the ';:' key

VK_OEM_PLUSBBWindows 2000/XP: For any country/region, the '+' key
VK_OEM_COMMABCWindows 2000/XP: For any country/region, the ',' key
VK_OEM_MINUSBDWindows 2000/XP: For any country/region, the '-' key
VK_OEM_PERIODBEWindows 2000/XP: For any country/region, the '.' key
VK_OEM_2BFUsed for miscellaneous characters; it can vary by keyboard.

Windows 2000/XP: For the US standard keyboard, the '/?' key

VK_OEM_3C0Used for miscellaneous characters; it can vary by keyboard.

Windows 2000/XP: For the US standard keyboard, the '`~' key

C1–D7Reserved
D8–DAUnassigned
VK_OEM_4DBUsed for miscellaneous characters; it can vary by keyboard.

Windows 2000/XP: For the US standard keyboard, the '[{' key

VK_OEM_5DCUsed for miscellaneous characters; it can vary by keyboard.

Windows 2000/XP: For the US standard keyboard, the '\|' key

VK_OEM_6DDUsed for miscellaneous characters; it can vary by keyboard.

Windows 2000/XP: For the US standard keyboard, the ']}' key

VK_OEM_7DEUsed for miscellaneous characters; it can vary by keyboard.

Windows 2000/XP: For the US standard keyboard, the 'single-quote/double-quote' key

VK_OEM_8DFUsed for miscellaneous characters; it can vary by keyboard.
E0Reserved
 E1OEM specific
VK_OEM_102E2Windows 2000/XP: Either the angle bracket key or the backslash key on the RT 102-key keyboard
 E3–E4OEM specific
VK_PROCESSKEYE5Windows 95/98/Me, Windows NT 4.0, Windows 2000/XP: IME PROCESS key
 E6OEM specific
VK_PACKETE7Windows 2000/XP: Used to pass Unicode characters as if they were keystrokes. The VK_PACKET key is the low word of a 32-bit Virtual Key value used for non-keyboard input methods. For more information, see Remark inKEYBDINPUT, SendInput,WM_KEYDOWN, and WM_KEYUP
E8Unassigned
 E9–F5OEM specific
VK_ATTNF6Attn key
VK_CRSELF7CrSel key
VK_EXSELF8ExSel key
VK_EREOFF9Erase EOF key
VK_PLAYFAPlay key
VK_ZOOMFBZoom key
VK_NONAMEFCReserved for future use
VK_PA1FDPA1 key
VK_OEM_CLEARFEClear key


  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值