标签:style http color 使用 strong os
1. 热键的使用
热键不用了的话一定要卸载,否则下次启动时会被占用。
函数原型
注册函数
BOOL RegisterHotKey( HWND hWnd, // handle to window int id, // hot key identifier UINT fsModifiers, // key-modifier options UINT vk // virtual-key code );
hWnd------窗口句柄;
id------热键的标识;(如果是exe 这个标识的范围就在0-49151之间,如果是DLL 的话,就在49151-65535之间)
fsModifiers-------热键附加选项。(如要设定热键Alt+F5,则Alt在该参数中设置,F5在下面的参数vk中设置)该参数对应四个值:MOD_ALT(Alt键),MOD_CONTROL(Ctrl键),MOD_SHIFT(Shift键),MOD_WIN(Win键)。四个参数可自由组合,如:Alt+Ctrl,可设置为:MOD_ALT|MOD_CONTROL。
vk------虚拟键码。如:F5对应值为VK_F5,Home对应值为VK_HOME。
鼠标和键盘虚拟键码值如下:
Symbolic constant name |
Value(hexadeclmal) |
Mouse or keyboard equivalent |
VK_LBUTTON |
01 |
Left mouse button |
VK_RBUTTON |
02 |
Right mouse button |
VK_CANCEL |
03 |
Control-break processing |
VK_MBUTTON |
04 |
Middle mouse button (three-button mouse) |
VK_XBUTTON1 |
05 |
Windows 2000: X1 mouse button |
VK_XBUTTON2 |
06 |
Windows 2000: X2 mouse button |
VK_BACK |
8 |
BACKSPACE key |
VK_TAB |
9 |
TAB key |
VK_CLEAR |
0C |
CLEAR key |
VK_RETURN |
0D |
ENTER key |
VK_SHIFT |
10 |
SHIFT key |
VK_CONTROL |
11 |
CTRL key |
VK_MENU |
12 |
ALT key |
VK_PAUSE |
13 |
PAUSE key |
VK_CAPITAL |
14 |
CAPS LOCK key |
VK_KANA |
15 |
IME Kana mode |
VK_HANGUEL |
15 |
IME Hanguel mode (maintained for compatibility; use VK_HANGUL) |
VK_HANGUL |
15 |
IME Hangul mode |
— |
16 |
Undefined |
VK_JUNJA |
17 |
IME Junja mode |
VK_FINAL |
18 |
IME final mode |
VK_HANJA |
19 |
IME Hanja mode |
VK_KANJI |
19 |
IME Kanji mode |
— |
1A |
Undefined |
VK_ESCAPE |
1B |
ESC key |
VK_CONVERT |
1C |
IME convert |
VK_NONCONVERT |
1D |
IME nonconvert |
VK_ACCEPT |
1E |
IME accept |
VK_MODECHANGE |
1F |
IME mode change request |
VK_SPACE |
20 |
SPACEBAR |
VK_PRIOR |
21 |
PAGE UP key |
VK_NEXT |
22 |
PAGE DOWN key |
VK_END |
23 |
END key |
VK_HOME |
24 |
HOME key |
VK_LEFT |
25 |
LEFT ARROW key |
VK_UP |
26 |
UP ARROW key |
VK_RIGHT |
27 |
RIGHT ARROW key |
VK_DOWN |
28 |
DOWN ARROW key |
VK_SELECT |
29 |
SELECT key |
VK_PRINT |
2A |
PRINT key |
VK_EXECUTE |
2B |
EXECUTE key |
VK_SNAPSHOT |
2C |
PRINT SCREEN key |
VK_INSERT |
2D |
INS key |
VK_DELETE |
2E |
DEL key |
VK_HELP |
2F |
HELP key |
VK_LWIN |
5B |
Left Windows key (Microsoft® Natural® keyboard) |
VK_RWIN |
5C |
Right Windows key (Natural keyboard) |
VK_APPS |
5D |
Applications key (Natural keyboard) |
— |
5E |
Reserved |
VK_SLEEP |
5F |
Computer Sleep key |
VK_NUMPAD0 |
60 |
Numeric keypad 0 key |
VK_NUMPAD1 |
61 |
Numeric keypad 1 key |
VK_NUMPAD2 |
62 |
Numeric keypad 2 key |
VK_NUMPAD3 |
63 |
Numeric keypad 3 key |
VK_NUMPAD4 |
64 |
Numeric keypad 4 key |
VK_NUMPAD5 |
65 |
Numeric keypad 5 key |
VK_NUMPAD6 |
66 |
Numeric keypad 6 key |
VK_NUMPAD7 |
67 |
Numeric keypad 7 key |
VK_NUMPAD8 |
68 |
Numeric keypad 8 key |
VK_NUMPAD9 |
69 |
Numeric keypad 9 key |
VK_MULTIPLY |
6A |
Multiply key |
VK_ADD |
6B |
Add key |
VK_SEPARATOR |
6C |
Separator key |
VK_SUBTRACT |
6D |
Subtract key |
VK_DECIMAL |
6E |
Decimal key |
VK_DIVIDE |
6F |
Divide key |
VK_F1 |
70 |
F1 key |
VK_F2 |
71 |
F2 key |
VK_F3 |
72 |
F3 key |
VK_F4 |
73 |
F4 key |
VK_F5 |
74 |
F5 key |
VK_F6 |
75 |
F6 key |
VK_F7 |
76 |
F7 key |
VK_F8 |
77 |
F8 key |
VK_F9 |
78 |
F9 key |
VK_F10 |
79 |
F10 key |
VK_F11 |
7A |
F11 key |
VK_F12 |
7B |
F12 key |
VK_F13 |
7C |
F13 key |
VK_F14 |
7D |
F14 key |
VK_F15 |
7E |
F15 key |
VK_F16 |
7F |
F16 key |
VK_F17 |
80H |
F17 key |
VK_F18 |
81H |
F18 key |
VK_F19 |
82H |
F19 key |
VK_F20 |
83H |
F20 key |
VK_F21 |
84H |
F21 key |
VK_F22 |
85H |
F22 key |
VK_F23 |
86H |
F23 key |
VK_F24 |
87H |
F24 key |
— |
88–8F |
Unassigned |
VK_NUMLOCK |
90 |
NUM LOCK key |
VK_SCROLL |
91 |
SCROLL LOCK key |
|
92–96 |
OEM specific |
— |
97–9F |
Unassigned |
VK_LSHIFT |
A0 |
Left SHIFT key |
VK_RSHIFT |
A1 |
Right SHIFT key |
VK_LCONTROL |
A2 |
Left CONTROL key |
VK_RCONTROL |
A3 |
Right CONTROL key |
VK_LMENU |
A4 |
Left MENU key |
VK_RMENU |
A5 |
Right MENU key |
卸载函数
BOOL UnregisterHotKey( HWND hWnd, // handle to window int id // hot key identifier );
应用实例:
1. 新建MFC工程,创建一个对话框,并添加两个按钮,分别设置Caption为:RegisterHotKey和UnRegisterHotKey;
2. 双击[RegisterHotKey]按钮,添加回调函数;
void CMfcDialogDlg::OnBnClickedBntRegister() { RegisterHotKey(this->m_hWnd,100,MOD_CONTROL,VK_HOME); //注册热键,设置热键为:Ctrl+Home }
3. 双击[UnRegisterHotKey] 按钮,添加回调函数;
void CMfcDialogDlg::OnBnClickedBntUnregister() { UnregisterHotKey(this->m_hWnd,100); //卸载热键 }
4. 响应对话框WM_HOTKEY消息;
void CMfcDialogDlg::OnHotKey(UINT nHotKeyId, UINT nKey1, UINT nKey2) { AfxMessageBox("HotKey:Ctrl+Home"); CDialogEx::OnHotKey(nHotKeyId, nKey1, nKey2); }
5. 运行程序,点击[RegisterHotKey]注册热键,然后按下热键:Ctrl+Home,即可弹出提示对话框。
6. 点击[UnRegisterHotKey]卸载热键。
2. 模拟键盘
Windows提供了一个模拟键盘的函数:Keybd_event,该函数产生一个键盘事件发送给当前获得输入焦点的程序。
注:该函数产生的键盘事件只对应用程序有效,不针对系统,如:模拟Ctrl+Alt+Del来调用任务管理器是无效的。
函数原型
VOID keybd_event( BYTE bVk, //虚拟键码,见上面“鼠标和键盘虚拟键码值表” BYTE bScan, // 硬件扫描码。一般不用 DWORD dwFlags, // 函数选项标识 ULONG_PTR dwExtraInfo //一般不用 );
应用实例
1. 在OnOk函数中添加函数。
void CMfcDialogDlg::OnBnClickedOk() { keybd_event(VK_LWIN,0,0,0); //按下Win键 keybd_event(‘F‘,0,0,0); //按下F键 keybd_event(VK_LWIN,0,2,0); //松开Win键 keybd_event(‘F‘,0,2,0); //松开F键 }
2. 运行程序,点击[确定]按钮,运行结果如下,弹出“搜索”界面。
3. 模拟鼠标
通用Windows也提供了模拟鼠标函数:mouse_event。
函数原型
VOID mouse_event( DWORD dwFlags, // 鼠标的单击和移动选项 DWORD dx, // 横坐标 DWORD dy, // 纵坐标 DWORD dwData, // 齿轮的滚动 ULONG_PTR dwExtraInfo // 应用程序定义信息 );dwFlags------ 选项标识。
鼠标单击和移动选项对应表
Value |
Meaning |
MOUSEEVENTF_ABSOLUTE |
当指定这个值时,dx 和dy 将表示屏幕坐标点绝对坐标的映射。 |
MOUSEEVENTF_MOVE |
表示鼠标移动 |
MOUSEEVENTF_LEFTDOWN |
表示鼠标左键按下 |
MOUSEEVENTF_LEFTUP |
表示鼠标左键弹起 |
MOUSEEVENTF_RIGHTDOWN |
表示鼠标右键按下 |
MOUSEEVENTF_RIGHTUP |
表示鼠标右键弹起 |
MOUSEEVENTF_MIDDLEDOWN |
表示鼠标中间按键按下 |
MOUSEEVENTF_MIDDLEUP |
表示鼠标中间按键弹起 |
应用实例
1. 在OnOk函数中添加函数。
void CMfcDialogDlg::OnBnClickedOk() { SetCursorPos(44,752); //将鼠标移动到“开始”按钮上 mouse_event(MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP ,0,0,0,0); //模拟单击左键 }
2. 运行程序,点击[确定]按钮,运行结果如下,弹出“开始”界面。
MFC中热键&模拟键盘&模拟鼠标的使用,布布扣,bubuko.com
标签:style http color 使用 strong os
原文地址:http://my.oschina.net/871120/blog/288145