c语言模拟鼠标键盘控制电脑

转自:(直接负责的源码,可能格式混乱,只是用来防丢失)
https://blog.csdn.net/liu_kan/article/details/83077355
https://blog.csdn.net/nanfeibuyi/article/details/85119726

模拟键盘我们用Keybd_event这个api函数,模拟鼠标按键用mouse_event函数。大家不用担心,在delphi里调用api函数是很方便的事。

先介绍一下Keybd_event函数。Keybd_event能触发一个按键事件,也就是说回产生一个WM_KEYDOWN或WM_KEYUP消息。当然也可以用产生这两个消息来模拟按键,但是没有直接用这个函数方便。Keybd_event共有四个参数,第一个为按键的虚拟键值,如回车键为vk_return, tab键为vk_tab。第二个参数为扫描码,一般不用设置,用0代替就行。第三个参数为选项标志,如果为keydown则置0即可,如果为keyup则设成“KEYEVENTF_KEYUP”,第四个参数一般也是置0即可。用如下代码即可实现模拟按下i键,其中的$49表示i键的虚拟键值:
keybd_event(VK_F11,0,0,0); keybd_event(VK_F11,0,KEYEVENTF_KEYUP,0); …   
  
mouse_event最好配合setcursorpos(x,y)函数一起使用,与Keybd_event类似,mouse_event有五个参数,第一个为选项标志,为MOUSEEVENTF_LEFTDOWN时表示左键按下,为MOUSEEVENTF_LEFTUP表示左键松开,向系统发送相应消息。第二三个参数分别表示x,y相对位置,一般可设为0,0,第四五个参数并不重要,一般也可设为0,0。若要得到Keybd_event和mouse_event函数的更详细的用法,可以查阅msdn或delphi帮助。


C语言 在程序中打开网页,模拟鼠标点击、键盘输入

一、简述

        记--使用C语言 打开指定网页,并模拟鼠标点击、键盘输入。实现半自动填写账号密码,并登录网站(当然现在的大部分网站都有验证码,或有检测"非人为"操作,以防止恶意注册、登录)。

       例子打包:链接: https://pan.baidu.com/s/1eStV0lAcmr8kmEA0n3LRcg 提取码: 7kvj 

二、效果  (程序填写账号密码,实现半自动登录)

三、工程结构

四、源文件

       main.c文件


  
  
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <Windows.h> //ShellExecuteA()
  4. //打开某个网址:website (使用默认浏览器)
  5. void open_web(char *website)
  6. {
  7. ShellExecuteA( 0, "open", website, 0, 0, 1);
  8. }
  9. //模拟鼠标点击 (x,y)是要点击的位置
  10. void click(int x, int y)
  11. {
  12. //将鼠标光标移动到 指定的位置 例子中屏幕分辨率1600x900 在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元
  13. mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE, x* 65535/ 1600, y* 65535/ 900, 0, 0);
  14. Sleep( 50); //稍微延时50ms
  15. mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //鼠标左键按下
  16. mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //鼠标左键抬起
  17. }
  18. //模拟键盘输入 keybd_event(要按下的字符,0,动作,0);动作为0是按下,动作为2是抬起
  19. void input()
  20. {
  21. char user[]= "1234567890123"; //账号
  22. char pwd[]= "1234567890"; //密码
  23. click( 823, 392); //点击"用户名输入框"的位置
  24. int i;
  25. //输入账号
  26. for(i= 0;i< sizeof(user);i++)
  27. {
  28. keybd_event(user[i], 0, 0, 0);
  29. keybd_event(user[i], 0, 2, 0);
  30. Sleep( 30);
  31. }
  32. //tab键 对应的编号是0x09 让密码输入框 获取焦点
  33. keybd_event( 0x09, 0, 0, 0); //按下
  34. keybd_event( 0x09, 0, 2, 0); //松开
  35. Sleep( 30);
  36. //输入密码
  37. for(i= 0;i< sizeof(pwd);i++)
  38. {
  39. keybd_event(pwd[i], 0, 0, 0);
  40. keybd_event(pwd[i], 0, 2, 0);
  41. Sleep( 30);
  42. }
  43. //模拟按下tab键 让登录按钮获取焦点
  44. click( 824, 530); //点击"登录按钮"
  45. Sleep( 30);
  46. }
  47. //将chrome.exe进程杀掉,在例子中尚未使用
  48. void close()
  49. {
  50. system( "taskkill /f /im chrome.exe");
  51. }
  52. int main(int argc,char *argv[])
  53. {
  54. open_web( "https://www.baidu.com/"); //打开某个网址
  55. Sleep( 4000); //延时4秒,等待网页打开完毕,再进行其它操作。根据实际情况(浏览器打开速度,网速)
  56. click( 1454, 126); //点击"登录"(1454,126)
  57. Sleep( 150);
  58. click( 712, 658); //点击"用户名登录"
  59. Sleep( 150);
  60. input(); //模拟鼠标动作,键盘输入
  61. return 0;
  62. }

五、总结

      5.1 ShellExecute()函数 

ShellExecute()函数
功能 对指定的文件执行操作。(可以实现调用第三方程序)
头文件 Windows.h   
原型 HINSTANCE ShellExecuteA( HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd );
参数 hwnd 父窗口的句柄。如果操作与窗口不关联,则此值可以为空
lpOperation

指定要执行的操作(谓词)

		<p><strong>edit</strong>:启动编辑器并打开文档进行编辑。要打开的文档文件由lpFile指定</p>

		<p><strong>explore</strong>:浏览由参数lpFile指定的文件夹</p>

		<p><strong>find:</strong>搜索由参数lpDirectory指定的目录</p>

		<p><strong>open</strong>:打开lpFile参数指定的项。可以是文件或文件夹,或者是网页。</p>

		<p><strong>print</strong>:打印由lpFile指定的文件。</p>

		<p><strong>NULL</strong>:默认操作。如果没有,则使用“<strong>open</strong>”动词。如果“open”不可用,系统将使用注册表中列出的第一个谓词。</p>
		</td>
	</tr><tr><td style="width:155px;">lpFile</td>
		<td style="width:521px;">操作对象(文件等。。。)</td>
	</tr><tr><td style="width:155px;">lpParameters</td>
		<td style="width:521px;">如果lpFile指定可执行文件,则此参数是指向以-结束的字符串的指针,该字符串指定要传递给应用程序的参数。此字符串的格式由要调用的谓词决定。如果lpFile指定文档文件,则lpParameters应为空。</td>
	</tr><tr><td style="width:155px;">lpDirectory</td>
		<td style="width:521px;">指定操作的默认(工作)目录。如果此值为NULL,则使用当前工作目录。</td>
	</tr><tr><td style="width:155px;">nShowCmd</td>
		<td style="width:521px;">
		<p>指定打开应用程序时如何显示的标志。如果lpFile指定文档文件,则只需将标志传递给关联的应用程序。应该由应用程序来决定如何处理它。这些值是定义的。</p>

		<p>SW_HIDE:隐藏</p>

		<p>SW_MAXIMIZE :最大化</p>

		<p>SW_MINIMIZE :最小化</p>

		<p>。。。</p>
		</td>
	</tr><tr><td style="width:77px;">返回值</td>
		<td colspan="2" style="width:676px;">如果函数成功,则返回大于32的值。如果函数失败,它将返回一个错误值</td>
	</tr><tr><td style="width:77px;">备注</td>
		<td colspan="2" style="width:676px;">
		<p>更多详见:<a href="https://docs.microsoft.com/en-us/windows/desktop/api/Shellapi/nf-shellapi-shellexecutea" rel="nofollow">https://docs.microsoft.com/en-us/windows/desktop/api/Shellapi/nf-shellapi-shellexecutea</a></p>

		<p><img alt="" class="has" height="237" src="https://img-blog.csdnimg.cn/20181222124744388.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbmZlaWJ1eWk=,size_16,color_FFFFFF,t_70" width="665"></p>
		</td>
	</tr></tbody></table></div><p>&nbsp;</p>

       打开指定网页:

ShellExecute(0, "open", "https://www.baidu.com/",0, 0, 1);//最后的参数是控制最大化、最小化,隐藏
  
  

       打开某个可执行文件:


  
  
  1. #include <stdio.h>
  2. #include <windows.h> //ShellExecute()
  3. int main(int argc, char *argv[])
  4. {
  5. ShellExecute( 0, "open", "C:\\Users\\newuser\\Desktop\\串口助手.exe", 0, 0, 1); //最后的参数是控制最大化、最小化
  6. printf( "Hello World!\n");
  7. return 0;
  8. }

 

        

     5.2 mouse_event()函数 

 mouse_event()函数
功能 合成鼠标运动和按钮单击。(模拟鼠标动作)
头文件 Windows.h   
原型 void mouse_event(
  DWORD     dwFlags,
  DWORD     dx,
  DWORD     dy,
  DWORD     dwData,
  ULONG_PTR dwExtraInfo
);
参数 dwFlags

控制鼠标运动和按钮点击的各个方面(鼠标动作类型)

		<p><strong>MOUSEEVENTF_LEFTDOWN:鼠标左键按下</strong></p>

		<p><strong>MOUSEEVENTF_LEFTUP:鼠标左键抬起</strong></p>

		<p><strong>MOUSEEVENTF_RIGHTDOWN:鼠标右键按下</strong></p>

		<p><strong>MOUSEEVENTF_RIGHTUP:鼠标右键抬起</strong></p>

		<p><strong>MOUSEEVENTF_WHEEL:鼠标滚轮,数值由参数</strong><em>dwData指定</em></p>

		<p><strong>MOUSEEVENTF_ABSOLUTE:鼠标光标位置,由参数dx,dy指定。</strong></p>
		</td>
	</tr><tr><td style="width:121px;">dx</td>
		<td style="width:488px;">x坐标</td>
	</tr><tr><td style="width:121px;">dy</td>
		<td style="width:488px;">y坐标</td>
	</tr><tr><td style="width:121px;">dwData</td>
		<td style="width:488px;">滚轮滚动值</td>
	</tr><tr><td style="width:121px;">dwExtraInfo</td>
		<td style="width:488px;">与鼠标事件关联的附加值。调用GetMessageExtraInfo()以获取此额外信息</td>
	</tr><tr><td style="width:99px;">返回值</td>
		<td colspan="2" style="width:600px;">无返回值</td>
	</tr><tr><td style="width:99px;">备注</td>
		<td colspan="2" style="width:600px;">
		<p>详见:<a href="https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-mouse_event" rel="nofollow">https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-mouse_event</a></p>

		<div class="table-box"><table border="1" cellpadding="1" cellspacing="1" style="width:500px;"><tbody><tr><td><img alt="" class="has" height="256" src="https://img-blog.csdnimg.cn/20181222113103600.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbmZlaWJ1eWk=,size_16,color_FFFFFF,t_70" width="743"></td>
				</tr></tbody></table></div><p>&nbsp;</p>
		</td>
	</tr></tbody></table></div><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 将鼠标移动到指定位置(x,y)</p>

  
  
  1. //例子中屏幕分辨率1600x900 在鼠标坐标系统中,屏幕在水平和垂直方向上均匀分割成65535×65535个单元
  2. mouse_event(MOUSEEVENTF_ABSOLUTE|MOUSEEVENTF_MOVE, x* 65535/ 1600, y* 65535/ 900, 0, 0);

            按下鼠标左键,然后抬起


  
  
  1. mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); //鼠标左键按下
  2. mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); //鼠标左键抬起

     5.3 keybd_event()函数

keybd_event()函数
功能 合成击键。(模拟键盘输入)
头文件 Windows.h   
原型 void keybd_event( BYTE bVk, BYTE bScan, DWORD dwFlags, ULONG_PTR dwExtraInfo );
参数 bVk 虚拟按键代码编号
bScan 按键的的硬件扫描代码
dwFlags

控制功能操作的各个方面

		<p><strong>KEYEVENTF_EXTENDEDKEY:</strong>如果指定,扫描代码前面有一个前缀字节,其值为0xE0</p>

		<p><strong>KEYEVENTF_KEYUP:</strong>如果指定,则抬起按键。</p>
		</td>
	</tr><tr><td style="width:106px;">dwExtraInfo</td>
		<td style="width:585px;">按键动作的附加信息</td>
	</tr><tr><td style="width:84px;">返回值</td>
		<td colspan="2" style="width:691px;">无返回值</td>
	</tr><tr><td style="width:84px;">备注</td>
		<td colspan="2" style="width:691px;">
		<p>详见:<a href="https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-keybd_event" rel="nofollow">https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-keybd_event</a></p>

		<div class="table-box"><table border="1" cellpadding="1" cellspacing="1" style="width:500px;"><tbody><tr><td><img alt="" class="has" height="266" src="https://img-blog.csdnimg.cn/20181222125833663.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L25hbmZlaWJ1eWk=,size_16,color_FFFFFF,t_70" width="724"></td>
				</tr></tbody></table></div><p>&nbsp;</p>
		</td>
	</tr></tbody></table></div><p>&nbsp;</p>

           模拟按下数字按键"9":       (‘9’的和0x39都表示数字按键9)


  
  
  1. keybd_event( '9', 0, 0, 0); //按下按键 ‘9’
  2. keybd_event( '9', 0, 2, 0); //抬起按键 ‘9’
  3. 0x39
  4. keybd_event( 0x39, 0, 0, 0); //按下按键 ‘9’
  5. keybd_event( 0x39, 0, 2, 0); //抬起按键 ‘9’

          

          虚拟按键 代码列表:https://docs.microsoft.com/zh-cn/windows/desktop/inputdev/virtual-key-codes

          

虚拟按键代码 Description

VK_LBUTTON

		<p>0x01</p>
		</td>
		<td>Left mouse button (鼠标左键)</td>
	</tr><tr><td>
		<p><strong>VK_RBUTTON</strong></p>

		<p>0x02</p>
		</td>
		<td>Right mouse button (鼠标右键)</td>
	</tr><tr><td>
		<p><strong>VK_CANCEL</strong></p>

		<p>0x03</p>
		</td>
		<td>Control-break processing</td>
	</tr><tr><td>
		<p><strong>VK_MBUTTON</strong></p>

		<p>0x04</p>
		</td>
		<td>Middle mouse button (three-button mouse)</td>
	</tr><tr><td>
		<p><strong>VK_XBUTTON1</strong></p>

		<p>0x05</p>
		</td>
		<td>X1 mouse button</td>
	</tr><tr><td>
		<p><strong>VK_XBUTTON2</strong></p>

		<p>0x06</p>
		</td>
		<td>X2 mouse button</td>
	</tr><tr><td>
		<p><strong>-</strong></p>

		<p>0x07</p>
		</td>
		<td>Undefined</td>
	</tr><tr><td>
		<p><strong>VK_BACK</strong></p>

		<p>0x08</p>
		</td>
		<td>BACKSPACE key(退格键)</td>
	</tr><tr><td>
		<p><strong>VK_TAB</strong></p>

		<p>0x09</p>
		</td>
		<td>TAB key (Tab键)</td>
	</tr><tr><td>
		<p><strong>-</strong></p>

		<p>0x0A-0B</p>
		</td>
		<td>Reserved</td>
	</tr><tr><td>
		<p><strong>VK_CLEAR</strong></p>

		<p>0x0C</p>
		</td>
		<td>CLEAR key</td>
	</tr><tr><td>
		<p><strong>VK_RETURN</strong></p>

		<p>0x0D</p>
		</td>
		<td>ENTER key(回车键)</td>
	</tr><tr><td>
		<p><strong>-</strong></p>

		<p>0x0E-0F</p>
		</td>
		<td>Undefined</td>
	</tr><tr><td>
		<p><strong>VK_SHIFT</strong></p>

		<p>0x10</p>
		</td>
		<td>SHIFT key</td>
	</tr><tr><td>
		<p><strong>VK_CONTROL</strong></p>

		<p>0x11</p>
		</td>
		<td>CTRL key</td>
	</tr><tr><td>
		<p><strong>VK_MENU</strong></p>

		<p>0x12</p>
		</td>
		<td>ALT key</td>
	</tr><tr><td>
		<p><strong>VK_PAUSE</strong></p>

		<p>0x13</p>
		</td>
		<td>PAUSE key</td>
	</tr><tr><td>
		<p><strong>VK_CAPITAL</strong></p>

		<p>0x14</p>
		</td>
		<td>CAPS LOCK key</td>
	</tr><tr><td>
		<p><strong>VK_KANA</strong></p>

		<p>0x15</p>
		</td>
		<td>IME Kana mode</td>
	</tr><tr><td>
		<p><strong>VK_HANGUEL</strong></p>

		<p>0x15</p>
		</td>
		<td>IME Hanguel mode (maintained for compatibility; use&nbsp;<strong>VK_HANGUL</strong>)</td>
	</tr><tr><td>
		<p><strong>VK_HANGUL</strong></p>

		<p>0x15</p>
		</td>
		<td>IME Hangul mode</td>
	</tr><tr><td>
		<p><strong>-</strong></p>

		<p>0x16</p>
		</td>
		<td>Undefined</td>
	</tr><tr><td>
		<p><strong>VK_JUNJA</strong></p>

		<p>0x17</p>
		</td>
		<td>IME Junja mode</td>
	</tr><tr><td>
		<p><strong>VK_FINAL</strong></p>

		<p>0x18</p>
		</td>
		<td>IME final mode</td>
	</tr><tr><td>
		<p><strong>VK_HANJA</strong></p>

		<p>0x19</p>
		</td>
		<td>IME Hanja mode</td>
	</tr><tr><td>
		<p><strong>VK_KANJI</strong></p>

		<p>0x19</p>
		</td>
		<td>IME Kanji mode</td>
	</tr><tr><td>
		<p><strong>-</strong></p>

		<p>0x1A</p>
		</td>
		<td>Undefined</td>
	</tr><tr><td>
		<p><strong>VK_ESCAPE</strong></p>

		<p>0x1B</p>
		</td>
		<td>ESC key</td>
	</tr><tr><td>
		<p><strong>VK_CONVERT</strong></p>

		<p>0x1C</p>
		</td>
		<td>IME convert</td>
	</tr><tr><td>
		<p><strong>VK_NONCONVERT</strong></p>

		<p>0x1D</p>
		</td>
		<td>IME nonconvert</td>
	</tr><tr><td>
		<p><strong>VK_ACCEPT</strong></p>

		<p>0x1E</p>
		</td>
		<td>IME accept</td>
	</tr><tr><td>
		<p><strong>VK_MODECHANGE</strong></p>

		<p>0x1F</p>
		</td>
		<td>IME mode change request</td>
	</tr><tr><td>
		<p><strong>VK_SPACE</strong></p>

		<p>0x20</p>
		</td>
		<td>SPACEBAR</td>
	</tr><tr><td>
		<p><strong>VK_PRIOR</strong></p>

		<p>0x21</p>
		</td>
		<td>PAGE UP key</td>
	</tr><tr><td>
		<p><strong>VK_NEXT</strong></p>

		<p>0x22</p>
		</td>
		<td>PAGE DOWN key</td>
	</tr><tr><td>
		<p><strong>VK_END</strong></p>

		<p>0x23</p>
		</td>
		<td>END key</td>
	</tr><tr><td>
		<p><strong>VK_HOME</strong></p>

		<p>0x24</p>
		</td>
		<td>HOME key</td>
	</tr><tr><td>
		<p><strong>VK_LEFT</strong></p>

		<p>0x25</p>
		</td>
		<td>LEFT ARROW key</td>
	</tr><tr><td>
		<p><strong>VK_UP</strong></p>

		<p>0x26</p>
		</td>
		<td>UP ARROW key</td>
	</tr><tr><td>
		<p><strong>VK_RIGHT</strong></p>

		<p>0x27</p>
		</td>
		<td>RIGHT ARROW key</td>
	</tr><tr><td>
		<p><strong>VK_DOWN</strong></p>

		<p>0x28</p>
		</td>
		<td>DOWN ARROW key</td>
	</tr><tr><td>
		<p><strong>VK_SELECT</strong></p>

		<p>0x29</p>
		</td>
		<td>SELECT key</td>
	</tr><tr><td>
		<p><strong>VK_PRINT</strong></p>

		<p>0x2A</p>
		</td>
		<td>PRINT key</td>
	</tr><tr><td>
		<p><strong>VK_EXECUTE</strong></p>

		<p>0x2B</p>
		</td>
		<td>EXECUTE key</td>
	</tr><tr><td>
		<p><strong>VK_SNAPSHOT</strong></p>

		<p>0x2C</p>
		</td>
		<td>PRINT SCREEN key</td>
	</tr><tr><td>
		<p><strong>VK_INSERT</strong></p>

		<p>0x2D</p>
		</td>
		<td>INS key</td>
	</tr><tr><td>
		<p><strong>VK_DELETE</strong></p>

		<p>0x2E</p>
		</td>
		<td>DEL key</td>
	</tr><tr><td>
		<p><strong>VK_HELP</strong></p>

		<p>0x2F</p>
		</td>
		<td>HELP key</td>
	</tr><tr><td>
		<p>0x30</p>
		</td>
		<td>0 key (数字1)</td>
	</tr><tr><td>
		<p>0x31</p>
		</td>
		<td>1 key</td>
	</tr><tr><td>
		<p>0x32</p>
		</td>
		<td>2 key</td>
	</tr><tr><td>
		<p>0x33</p>
		</td>
		<td>3 key</td>
	</tr><tr><td>
		<p>0x34</p>
		</td>
		<td>4 key</td>
	</tr><tr><td>
		<p>0x35</p>
		</td>
		<td>5 key</td>
	</tr><tr><td>
		<p>0x36</p>
		</td>
		<td>6 key</td>
	</tr><tr><td>
		<p>0x37</p>
		</td>
		<td>7 key</td>
	</tr><tr><td>
		<p>0x38</p>
		</td>
		<td>8 key</td>
	</tr><tr><td>
		<p>0x39</p>
		</td>
		<td>9 key</td>
	</tr><tr><td>
		<p><strong>-</strong></p>

		<p>0x3A-40</p>
		</td>
		<td>Undefined</td>
	</tr><tr><td>
		<p>0x41</p>
		</td>
		<td>A key</td>
	</tr><tr><td>
		<p>0x42</p>
		</td>
		<td>B key</td>
	</tr><tr><td>
		<p>0x43</p>
		</td>
		<td>C key</td>
	</tr><tr><td>
		<p>0x44</p>
		</td>
		<td>D key</td>
	</tr><tr><td>
		<p>0x45</p>
		</td>
		<td>E key</td>
	</tr><tr><td>
		<p>0x46</p>
		</td>
		<td>F key</td>
	</tr><tr><td>
		<p>0x47</p>
		</td>
		<td>G key</td>
	</tr><tr><td>
		<p>0x48</p>
		</td>
		<td>H key</td>
	</tr><tr><td>
		<p>0x49</p>
		</td>
		<td>I key</td>
	</tr><tr><td>
		<p>0x4A</p>
		</td>
		<td>J key</td>
	</tr><tr><td>
		<p>0x4B</p>
		</td>
		<td>K key</td>
	</tr><tr><td>
		<p>0x4C</p>
		</td>
		<td>L key</td>
	</tr><tr><td>
		<p>0x4D</p>
		</td>
		<td>M key</td>
	</tr><tr><td>
		<p>0x4E</p>
		</td>
		<td>N key</td>
	</tr><tr><td>
		<p>0x4F</p>
		</td>
		<td>O key</td>
	</tr><tr><td>
		<p>0x50</p>
		</td>
		<td>P key</td>
	</tr><tr><td>
		<p>0x51</p>
		</td>
		<td>Q key</td>
	</tr><tr><td>
		<p>0x52</p>
		</td>
		<td>R key</td>
	</tr><tr><td>
		<p>0x53</p>
		</td>
		<td>S key</td>
	</tr><tr><td>
		<p>0x54</p>
		</td>
		<td>T key</td>
	</tr><tr><td>
		<p>0x55</p>
		</td>
		<td>U key</td>
	</tr><tr><td>
		<p>0x56</p>
		</td>
		<td>V key</td>
	</tr><tr><td>
		<p>0x57</p>
		</td>
		<td>W key</td>
	</tr><tr><td>
		<p>0x58</p>
		</td>
		<td>X key</td>
	</tr><tr><td>
		<p>0x59</p>
		</td>
		<td>Y key</td>
	</tr><tr><td>
		<p>0x5A</p>
		</td>
		<td>Z key</td>
	</tr><tr><td>
		<p><strong>VK_LWIN</strong></p>

		<p>0x5B</p>
		</td>
		<td>Left Windows key (Natural keyboard)&nbsp;</td>
	</tr><tr><td>
		<p><strong>VK_RWIN</strong></p>

		<p>0x5C</p>
		</td>
		<td>Right Windows key (Natural keyboard)</td>
	</tr><tr><td>
		<p><strong>VK_APPS</strong></p>

		<p>0x5D</p>
		</td>
		<td>Applications key (Natural keyboard)</td>
	</tr><tr><td>
		<p><strong>-</strong></p>

		<p>0x5E</p>
		</td>
		<td>Reserved</td>
	</tr><tr><td>
		<p><strong>VK_SLEEP</strong></p>

		<p>0x5F</p>
		</td>
		<td>Computer Sleep key</td>
	</tr><tr><td>
		<p><strong>VK_NUMPAD0</strong></p>

		<p>0x60</p>
		</td>
		<td>Numeric keypad 0 key</td>
	</tr><tr><td>
		<p><strong>VK_NUMPAD1</strong></p>

		<p>0x61</p>
		</td>
		<td>Numeric keypad 1 key</td>
	</tr><tr><td>
		<p><strong>VK_NUMPAD2</strong></p>

		<p>0x62</p>
		</td>
		<td>Numeric keypad 2 key</td>
	</tr><tr><td>
		<p><strong>VK_NUMPAD3</strong></p>

		<p>0x63</p>
		</td>
		<td>Numeric keypad 3 key</td>
	</tr><tr><td>
		<p><strong>VK_NUMPAD4</strong></p>

		<p>0x64</p>
		</td>
		<td>Numeric keypad 4 key</td>
	</tr><tr><td>
		<p><strong>VK_NUMPAD5</strong></p>

		<p>0x65</p>
		</td>
		<td>Numeric keypad 5 key</td>
	</tr><tr><td>
		<p><strong>VK_NUMPAD6</strong></p>

		<p>0x66</p>
		</td>
		<td>Numeric keypad 6 key</td>
	</tr><tr><td>
		<p><strong>VK_NUMPAD7</strong></p>

		<p>0x67</p>
		</td>
		<td>Numeric keypad 7 key</td>
	</tr><tr><td>
		<p><strong>VK_NUMPAD8</strong></p>

		<p>0x68</p>
		</td>
		<td>Numeric keypad 8 key</td>
	</tr><tr><td>
		<p><strong>VK_NUMPAD9</strong></p>

		<p>0x69</p>
		</td>
		<td>Numeric keypad 9 key</td>
	</tr><tr><td>
		<p><strong>VK_MULTIPLY</strong></p>

		<p>0x6A</p>
		</td>
		<td>Multiply key</td>
	</tr><tr><td>
		<p><strong>VK_ADD</strong></p>

		<p>0x6B</p>
		</td>
		<td>Add key</td>
	</tr><tr><td>
		<p><strong>VK_SEPARATOR</strong></p>

		<p>0x6C</p>
		</td>
		<td>Separator key</td>
	</tr><tr><td>
		<p><strong>VK_SUBTRACT</strong></p>

		<p>0x6D</p>
		</td>
		<td>Subtract key</td>
	</tr><tr><td>
		<p><strong>VK_DECIMAL</strong></p>

		<p>0x6E</p>
		</td>
		<td>Decimal key</td>
	</tr><tr><td>
		<p><strong>VK_DIVIDE</strong></p>

		<p>0x6F</p>
		</td>
		<td>Divide key</td>
	</tr><tr><td>
		<p><strong>VK_F1</strong></p>

		<p>0x70</p>
		</td>
		<td>F1 key</td>
	</tr><tr><td>
		<p><strong>VK_F2</strong></p>

		<p>0x71</p>
		</td>
		<td>F2 key</td>
	</tr><tr><td>
		<p><strong>VK_F3</strong></p>

		<p>0x72</p>
		</td>
		<td>F3 key</td>
	</tr><tr><td>
		<p><strong>VK_F4</strong></p>

		<p>0x73</p>
		</td>
		<td>F4 key</td>
	</tr><tr><td>
		<p><strong>VK_F5</strong></p>

		<p>0x74</p>
		</td>
		<td>F5 key</td>
	</tr><tr><td>
		<p><strong>VK_F6</strong></p>

		<p>0x75</p>
		</td>
		<td>F6 key</td>
	</tr><tr><td>
		<p><strong>VK_F7</strong></p>

		<p>0x76</p>
		</td>
		<td>F7 key</td>
	</tr><tr><td>
		<p><strong>VK_F8</strong></p>

		<p>0x77</p>
		</td>
		<td>F8 key</td>
	</tr><tr><td>
		<p><strong>VK_F9</strong></p>

		<p>0x78</p>
		</td>
		<td>F9 key</td>
	</tr><tr><td>
		<p><strong>VK_F10</strong></p>

		<p>0x79</p>
		</td>
		<td>F10 key</td>
	</tr><tr><td>
		<p><strong>VK_F11</strong></p>

		<p>0x7A</p>
		</td>
		<td>F11 key</td>
	</tr><tr><td>
		<p><strong>VK_F12</strong></p>

		<p>0x7B</p>
		</td>
		<td>F12 key</td>
	</tr><tr><td>
		<p><strong>VK_F13</strong></p>

		<p>0x7C</p>
		</td>
		<td>F13 key</td>
	</tr><tr><td>
		<p><strong>VK_F14</strong></p>

		<p>0x7D</p>
		</td>
		<td>F14 key</td>
	</tr><tr><td>
		<p><strong>VK_F15</strong></p>

		<p>0x7E</p>
		</td>
		<td>F15 key</td>
	</tr><tr><td>
		<p><strong>VK_F16</strong></p>

		<p>0x7F</p>
		</td>
		<td>F16 key</td>
	</tr><tr><td>
		<p><strong>VK_F17</strong></p>

		<p>0x80</p>
		</td>
		<td>F17 key</td>
	</tr><tr><td>
		<p><strong>VK_F18</strong></p>

		<p>0x81</p>
		</td>
		<td>F18 key</td>
	</tr><tr><td>
		<p><strong>VK_F19</strong></p>

		<p>0x82</p>
		</td>
		<td>F19 key</td>
	</tr><tr><td>
		<p><strong>VK_F20</strong></p>

		<p>0x83</p>
		</td>
		<td>F20 key</td>
	</tr><tr><td>
		<p><strong>VK_F21</strong></p>

		<p>0x84</p>
		</td>
		<td>F21 key</td>
	</tr><tr><td>
		<p><strong>VK_F22</strong></p>

		<p>0x85</p>
		</td>
		<td>F22 key</td>
	</tr><tr><td>
		<p><strong>VK_F23</strong></p>

		<p>0x86</p>
		</td>
		<td>F23 key</td>
	</tr><tr><td>
		<p><strong>VK_F24</strong></p>

		<p>0x87</p>
		</td>
		<td>F24 key</td>
	</tr><tr><td>
		<p><strong>-</strong></p>

		<p>0x88-8F</p>
		</td>
		<td>Unassigned</td>
	</tr><tr><td>
		<p><strong>VK_NUMLOCK</strong></p>

		<p>0x90</p>
		</td>
		<td>NUM LOCK key</td>
	</tr><tr><td>
		<p><strong>VK_SCROLL</strong></p>

		<p>0x91</p>
		</td>
		<td>SCROLL LOCK key</td>
	</tr><tr><td>
		<p>0x92-96</p>
		</td>
		<td>OEM specific</td>
	</tr><tr><td>
		<p><strong>-</strong></p>

		<p>0x97-9F</p>
		</td>
		<td>Unassigned</td>
	</tr><tr><td>
		<p><strong>VK_LSHIFT</strong></p>

		<p>0xA0</p>
		</td>
		<td>Left SHIFT key</td>
	</tr><tr><td>
		<p><strong>VK_RSHIFT</strong></p>

		<p>0xA1</p>
		</td>
		<td>Right SHIFT key</td>
	</tr><tr><td>
		<p><strong>VK_LCONTROL</strong></p>

		<p>0xA2</p>
		</td>
		<td>Left CONTROL key</td>
	</tr><tr><td>
		<p><strong>VK_RCONTROL</strong></p>

		<p>0xA3</p>
		</td>
		<td>Right CONTROL key</td>
	</tr><tr><td>
		<p><strong>VK_LMENU</strong></p>

		<p>0xA4</p>
		</td>
		<td>Left MENU key</td>
	</tr><tr><td>
		<p><strong>VK_RMENU</strong></p>

		<p>0xA5</p>
		</td>
		<td>Right MENU key</td>
	</tr><tr><td>
		<p><strong>VK_BROWSER_BACK</strong></p>

		<p>0xA6</p>
		</td>
		<td>Browser Back key</td>
	</tr><tr><td>
		<p><strong>VK_BROWSER_FORWARD</strong></p>

		<p>0xA7</p>
		</td>
		<td>Browser Forward key</td>
	</tr><tr><td>
		<p><strong>VK_BROWSER_REFRESH</strong></p>

		<p>0xA8</p>
		</td>
		<td>Browser Refresh key</td>
	</tr><tr><td>
		<p><strong>VK_BROWSER_STOP</strong></p>

		<p>0xA9</p>
		</td>
		<td>Browser Stop key</td>
	</tr><tr><td>
		<p><strong>VK_BROWSER_SEARCH</strong></p>

		<p>0xAA</p>
		</td>
		<td>Browser Search key&nbsp;</td>
	</tr><tr><td>
		<p><strong>VK_BROWSER_FAVORITES</strong></p>

		<p>0xAB</p>
		</td>
		<td>Browser Favorites key</td>
	</tr><tr><td>
		<p><strong>VK_BROWSER_HOME</strong></p>

		<p>0xAC</p>
		</td>
		<td>Browser Start and Home key</td>
	</tr><tr><td>
		<p><strong>VK_VOLUME_MUTE</strong></p>

		<p>0xAD</p>
		</td>
		<td>Volume Mute key</td>
	</tr><tr><td>
		<p><strong>VK_VOLUME_DOWN</strong></p>

		<p>0xAE</p>
		</td>
		<td>Volume Down key</td>
	</tr><tr><td>
		<p><strong>VK_VOLUME_UP</strong></p>

		<p>0xAF</p>
		</td>
		<td>Volume Up key</td>
	</tr><tr><td>
		<p><strong>VK_MEDIA_NEXT_TRACK</strong></p>

		<p>0xB0</p>
		</td>
		<td>Next Track key</td>
	</tr><tr><td>
		<p><strong>VK_MEDIA_PREV_TRACK</strong></p>

		<p>0xB1</p>
		</td>
		<td>Previous Track key</td>
	</tr><tr><td>
		<p><strong>VK_MEDIA_STOP</strong></p>

		<p>0xB2</p>
		</td>
		<td>Stop Media key</td>
	</tr><tr><td>
		<p><strong>VK_MEDIA_PLAY_PAUSE</strong></p>

		<p>0xB3</p>
		</td>
		<td>Play/Pause Media key</td>
	</tr><tr><td>
		<p><strong>VK_LAUNCH_MAIL</strong></p>

		<p>0xB4</p>
		</td>
		<td>Start Mail key</td>
	</tr><tr><td>
		<p><strong>VK_LAUNCH_MEDIA_SELECT</strong></p>

		<p>0xB5</p>
		</td>
		<td>Select Media key</td>
	</tr><tr><td>
		<p><strong>VK_LAUNCH_APP1</strong></p>

		<p>0xB6</p>
		</td>
		<td>Start Application 1 key</td>
	</tr><tr><td>
		<p><strong>VK_LAUNCH_APP2</strong></p>

		<p>0xB7</p>
		</td>
		<td>Start Application 2 key</td>
	</tr><tr><td>
		<p><strong>-</strong></p>

		<p>0xB8-B9</p>
		</td>
		<td>Reserved</td>
	</tr><tr><td>
		<p><strong>VK_OEM_1</strong></p>

		<p>0xBA</p>
		</td>
		<td>Used for miscellaneous characters; it can vary by keyboard.<br>
		For the US standard keyboard, the ';:' key&nbsp;</td>
	</tr><tr><td>
		<p><strong>VK_OEM_PLUS</strong></p>

		<p>0xBB</p>
		</td>
		<td>For any country/region, the '+' key</td>
	</tr><tr><td>
		<p><strong>VK_OEM_COMMA</strong></p>

		<p>0xBC</p>
		</td>
		<td>For any country/region, the ',' key</td>
	</tr><tr><td>
		<p><strong>VK_OEM_MINUS</strong></p>

		<p>0xBD</p>
		</td>
		<td>For any country/region, the '-' key</td>
	</tr><tr><td>
		<p><strong>VK_OEM_PERIOD</strong></p>

		<p>0xBE</p>
		</td>
		<td>For any country/region, the '.' key</td>
	</tr><tr><td>
		<p><strong>VK_OEM_2</strong></p>

		<p>0xBF</p>
		</td>
		<td>Used for miscellaneous characters; it can vary by keyboard.<br>
		For the US standard keyboard, the '/?' key&nbsp;</td>
	</tr><tr><td>
		<p><strong>VK_OEM_3</strong></p>

		<p>0xC0</p>
		</td>
		<td>Used for miscellaneous characters; it can vary by keyboard.&nbsp;<br>
		For the US standard keyboard, the '`~' key&nbsp;</td>
	</tr><tr><td>
		<p><strong>-</strong></p>

		<p>0xC1-D7</p>
		</td>
		<td>Reserved</td>
	</tr><tr><td>
		<p><strong>-</strong></p>

		<p>0xD8-DA</p>
		</td>
		<td>Unassigned</td>
	</tr><tr><td>
		<p><strong>VK_OEM_4</strong></p>

		<p>0xDB</p>
		</td>
		<td>Used for miscellaneous characters; it can vary by keyboard.&nbsp;<br>
		For the US standard keyboard, the '[{' key</td>
	</tr><tr><td>
		<p><strong>VK_OEM_5</strong></p>

		<p>0xDC</p>
		</td>
		<td>Used for miscellaneous characters; it can vary by keyboard.&nbsp;<br>
		For the US standard keyboard, the '\|' key</td>
	</tr><tr><td>
		<p><strong>VK_OEM_6</strong></p>

		<p>0xDD</p>
		</td>
		<td>Used for miscellaneous characters; it can vary by keyboard.&nbsp;<br>
		For the US standard keyboard, the ']}' key</td>
	</tr><tr><td>
		<p><strong>VK_OEM_7</strong></p>

		<p>0xDE</p>
		</td>
		<td>Used for miscellaneous characters; it can vary by keyboard.&nbsp;<br>
		For the US standard keyboard, the 'single-quote/double-quote' key</td>
	</tr><tr><td>
		<p><strong>VK_OEM_8</strong></p>

		<p>0xDF</p>
		</td>
		<td>Used for miscellaneous characters; it can vary by keyboard.</td>
	</tr><tr><td>
		<p><strong>-</strong></p>

		<p>0xE0</p>
		</td>
		<td>Reserved</td>
	</tr><tr><td>
		<p>0xE1</p>
		</td>
		<td>OEM specific</td>
	</tr><tr><td>
		<p><strong>VK_OEM_102</strong></p>

		<p>0xE2</p>
		</td>
		<td>Either the angle bracket key or the backslash key on the RT 102-key keyboard</td>
	</tr><tr><td>
		<p>0xE3-E4</p>
		</td>
		<td>OEM specific</td>
	</tr><tr><td>
		<p><strong>VK_PROCESSKEY</strong></p>

		<p>0xE5</p>
		</td>
		<td>IME PROCESS key</td>
	</tr><tr><td>
		<p>0xE6</p>
		</td>
		<td>OEM specific</td>
	</tr><tr><td>
		<p><strong>VK_PACKET</strong></p>

		<p>0xE7</p>
		</td>
		<td>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 in&nbsp;<a href="https://msdn.microsoft.com/en-us/library/ms646271(v=VS.85).aspx" rel="nofollow"><strong>KEYBDINPUT</strong></a>,&nbsp;<a href="https://msdn.microsoft.com/en-us/library/ms646310(v=VS.85).aspx" rel="nofollow"><strong>SendInput</strong></a>,&nbsp;<a href="https://docs.microsoft.com/zh-cn/windows/desktop/inputdev/wm-keydown" rel="nofollow"><strong>WM_KEYDOWN</strong></a>, and&nbsp;<a href="https://docs.microsoft.com/zh-cn/windows/desktop/inputdev/wm-keyup" rel="nofollow"><strong>WM_KEYUP</strong></a></td>
	</tr><tr><td>
		<p><strong>-</strong></p>

		<p>0xE8</p>
		</td>
		<td>Unassigned</td>
	</tr><tr><td>
		<p>0xE9-F5</p>
		</td>
		<td>OEM specific</td>
	</tr><tr><td>
		<p><strong>VK_ATTN</strong></p>

		<p>0xF6</p>
		</td>
		<td>Attn key</td>
	</tr><tr><td>
		<p><strong>VK_CRSEL</strong></p>

		<p>0xF7</p>
		</td>
		<td>CrSel key</td>
	</tr><tr><td>
		<p><strong>VK_EXSEL</strong></p>

		<p>0xF8</p>
		</td>
		<td>ExSel key</td>
	</tr><tr><td>
		<p><strong>VK_EREOF</strong></p>

		<p>0xF9</p>
		</td>
		<td>Erase EOF key</td>
	</tr><tr><td>
		<p><strong>VK_PLAY</strong></p>

		<p>0xFA</p>
		</td>
		<td>Play key</td>
	</tr><tr><td>
		<p><strong>VK_ZOOM</strong></p>

		<p>0xFB</p>
		</td>
		<td>Zoom key</td>
	</tr><tr><td>
		<p><strong>VK_NONAME</strong></p>

		<p>0xFC</p>
		</td>
		<td>Reserved&nbsp;</td>
	</tr><tr><td>
		<p><strong>VK_PA1</strong></p>

		<p>0xFD</p>
		</td>
		<td>PA1 key</td>
	</tr><tr><td>
		<p><strong>VK_OEM_CLEAR</strong></p>

		<p>0xFE</p>
		</td>
		<td>Clear key</td>
	</tr><tr><td>&nbsp;</td>
		<td>&nbsp;</td>
	</tr></tbody></table></div><p>&nbsp;</p>                                    

C语言 在程序中打开网页,模拟鼠标点击、键盘输入

猜你喜欢

转载自blog.csdn.net/qq_45467083/article/details/107578779