用代码模拟键盘鼠标操作,主要用到keybd_event/mouse_event或者SendInput API函数.使用示例如下(附注释):
/*
* 模拟键盘输入,以按窗口键(WIN键)为例
*/
//
keybd_event模拟键盘输入示例
::keybd_event( VK_LWIN,
0
,
0
,
0
);
//
按下WIN键
::keybd_event( VK_LWIN,
0
, KEYEVENTF_KEYUP,
0
);
//
弹起WIN键
//
SendInput模拟键盘输入示例
INPUT keyInput[
2
];
memset( keyInput,
0
,
sizeof
( keyInput ) );
keyInput[
0
].type
=
keyInput[
1
].type
=
INPUT_KEYBOARD;
//
设置为键盘输入
keyInput[
0
].ki.wVk
=
keyInput[
1
].ki.wVk
=
VK_LWIN;
//
操作WIN键
keyInput[
1
].ki.dwFlags
=
KEYEVENTF_KEYUP;
//
弹起
::SendInput( _countof( keyInput ), keyInput,
sizeof
( INPUT ) );
/*
* 模拟鼠标输入,以单击开始菜单为例
* 由于我的机器分辨率为1440*900,因而鼠标位置(0,880)刚好位于开始菜单的位置
*/
//
mouse_event模拟鼠标输入示例
::SetCursorPos(
0
,
880
);
//
将当前鼠标位置设置到开始菜单位置
::mouse_event( MOUSEEVENTF_ABSOLUTE
|
MOUSEEVENTF_LEFTDOWN,
0
,
0
,
0
, NULL );
//
模拟左键按下
::mouse_event( MOUSEEVENTF_ABSOLUTE
|
MOUSEEVENTF_LEFTUP,
0
,
0
,
0
, NULL );
//
模拟左键弹起
//
SendInput模拟鼠标输入示例
::SetCursorPos(
0
,
880
);
//
将当前鼠标位置设置到开始菜单位置
INPUT mouseInput[
2
];
memset( mouseInput,
0
,
sizeof
( mouseInput ) );
mouseInput[
0
].type
=
mouseInput[
1
].type
=
INPUT_MOUSE;
//
设置为鼠标输入
mouseInput[
0
].mi.dwFlags
=
MOUSEEVENTF_ABSOLUTE
|
MOUSEEVENTF_LEFTDOWN;
//
左键按下
mouseInput[
1
].mi.dwFlags
=
MOUSEEVENTF_ABSOLUTE
|
MOUSEEVENTF_LEFTUP;
//
左键弹起
::SendInput( _countof( mouseInput ), mouseInput,
sizeof
( INPUT ) );