一、准备工作:

安装pywin32,后面开发需要pywin32的支持,否则无法完成与windows层面相关的操作。

pywin32的具体安装及注意事项:

1、整体开发环境:

  基于windows7操作系统;

  提前安装python(因为篇幅问题,在此不详细讲解python环境的安装,大家可以自备楼梯);

  大家可以在cmd中测试下python环境是否安装好:

大家可以看到我电脑上已经安装好了Python,并显示版本与是V 3.6.2。

注:自己电脑上的Python版本号一定要知道,后面安装pywin32是要与python的版本相对应才行。

2、具体安装方法及详细的步骤:

首先下载pywin32安装包

①.访问pywin32下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/

②.务必要下载与自己电脑上已安装的python版本对应的pywin32安装包,例如python3.6.2   64位对应的安装包为pywin32-221.win-amd64-py3.6.exe

点击第一项:Build 221进入(pywin32-221.win-amd64-py3.6.exe在这里面下面)

选择pywin32-221.win-amd64-py3.6.exe文件下载到本地,大小是9.5M,不是很大,下载很快的。

3.安装刚下载好的pywin32-221.win-amd64-py3.6.exe安装包,双击运行,之后就是一路的点下一步就可以安装完成。

需要注意的是:安装目录是不能自己乱改变的,系统会根据你电脑上的python安装路径自动填写,

我的电脑上的python安装在C:\Users\lenovo\AppData\Local\Programs\Python\Python36;

所以系统会自动根据我安装的Python安装目录将pywin32安装在C:\Users\lenovo\AppData\Local\Programs\Python\Python36\Lib\site-packages\目录中。

如果说你安装过程中系统没有自动给你填写pywin32的安装目录,说明你的python安装有问题,请检查自己的python安装那里出问题。(提示下:安装完Python后注意配置环境变量)

  如果你一切还胜利的话,那么恭喜你可以继续往后看。

④为了确定安装pywin32成功,你一定要检查下安装结果,可以在python命令行输入import win32api。

也可以在python shell中测试下pywin32是否成功。

成功的话,在开始菜单中的python3.6目录下会有PythonWin这项。

如果上面测试没有报错,开始菜单也有PythonWin,则说明安装Pywin32成功了。

如果报错的话说明PYTHONPATH环境变量没有配置好。

⑤如何配置PYTHONPATH环境变量,这时你需要将python安装目录下lib目录中的site-packages路径添加到PYTHONPATH环境变量中。

注意:PYTHONPATH是用户变量。如果没有这项可以新建。

可以在CMD中查看下path。

⑥大家一定要保证pywin32版本和python版本一致,对32位和64位的支持也要和python一致,64位的系统就安装64位的pywin32,32位的就安装32位的pywin32。

如果有问题的话,请重复步骤⑤再次检验安装配置结果再检查测试下。

二、开始开发:

1、从开始菜单打开pythonwin

2、在pythonWin中新建.py文件:

新建文件时,在弹出窗中选择Python Script,再点击OK就行了。

3、开始编码:直接上代码了。

  1. ## _*_ coding:UTF-8 _*_
  2. import win32api
  3. import win32con
  4. import win32gui
  5. from ctypes import *
  6. import time

在Python程序中导入win32api,win32con,win32gui,其次引入ctypes模块,载入动态链接库(后面会用到C函数)。

大家想要对Python调用ctypes如何使用C函数想更多了解的,可以去看看Python调用ctypes使用C函数printf

  1. VK_CODE = {
  2. 'backspace':0x08,
  3. 'tab':0x09,
  4. 'clear':0x0C,
  5. 'enter':0x0D,
  6. 'shift':0x10,
  7. 'ctrl':0x11,
  8. 'alt':0x12,
  9. 'pause':0x13,
  10. 'caps_lock':0x14,
  11. 'esc':0x1B,
  12. 'spacebar':0x20,
  13. 'page_up':0x21,
  14. 'page_down':0x22,
  15. 'end':0x23,
  16. 'home':0x24,
  17. 'left_arrow':0x25,
  18. 'up_arrow':0x26,
  19. 'right_arrow':0x27,
  20. 'down_arrow':0x28,
  21. 'select':0x29,
  22. 'print':0x2A,
  23. 'execute':0x2B,
  24. 'print_screen':0x2C,
  25. 'ins':0x2D,
  26. 'del':0x2E,
  27. 'help':0x2F,
  28. '':0x30,
  29. '':0x31,
  30. '':0x32,
  31. '':0x33,
  32. '':0x34,
  33. '':0x35,
  34. '':0x36,
  35. '':0x37,
  36. '':0x38,
  37. '':0x39,
  38. 'a':0x41,
  39. 'b':0x42,
  40. 'c':0x43,
  41. 'd':0x44,
  42. 'e':0x45,
  43. 'f':0x46,
  44. 'g':0x47,
  45. 'h':0x48,
  46. 'i':0x49,
  47. 'j':0x4A,
  48. 'k':0x4B,
  49. 'l':0x4C,
  50. 'm':0x4D,
  51. 'n':0x4E,
  52. 'o':0x4F,
  53. 'p':0x50,
  54. 'q':0x51,
  55. 'r':0x52,
  56. 's':0x53,
  57. 't':0x54,
  58. 'u':0x55,
  59. 'v':0x56,
  60. 'w':0x57,
  61. 'x':0x58,
  62. 'y':0x59,
  63. 'z':0x5A,
  64. 'numpad_0':0x60,
  65. 'numpad_1':0x61,
  66. 'numpad_2':0x62,
  67. 'numpad_3':0x63,
  68. 'numpad_4':0x64,
  69. 'numpad_5':0x65,
  70. 'numpad_6':0x66,
  71. 'numpad_7':0x67,
  72. 'numpad_8':0x68,
  73. 'numpad_9':0x69,
  74. 'multiply_key':0x6A,
  75. 'add_key':0x6B,
  76. 'separator_key':0x6C,
  77. 'subtract_key':0x6D,
  78. 'decimal_key':0x6E,
  79. 'divide_key':0x6F,
  80. 'F1':0x70,
  81. 'F2':0x71,
  82. 'F3':0x72,
  83. 'F4':0x73,
  84. 'F5':0x74,
  85. 'F6':0x75,
  86. 'F7':0x76,
  87. 'F8':0x77,
  88. 'F9':0x78,
  89. 'F10':0x79,
  90. 'F11':0x7A,
  91. 'F12':0x7B,
  92. 'F13':0x7C,
  93. 'F14':0x7D,
  94. 'F15':0x7E,
  95. 'F16':0x7F,
  96. 'F17':0x80,
  97. 'F18':0x81,
  98. 'F19':0x82,
  99. 'F20':0x83,
  100. 'F21':0x84,
  101. 'F22':0x85,
  102. 'F23':0x86,
  103. 'F24':0x87,
  104. 'num_lock':0x90,
  105. 'scroll_lock':0x91,
  106. 'left_shift':0xA0,
  107. 'right_shift ':0xA1,
  108. 'left_control':0xA2,
  109. 'right_control':0xA3,
  110. 'left_menu':0xA4,
  111. 'right_menu':0xA5,
  112. 'browser_back':0xA6,
  113. 'browser_forward':0xA7,
  114. 'browser_refresh':0xA8,
  115. 'browser_stop':0xA9,
  116. 'browser_search':0xAA,
  117. 'browser_favorites':0xAB,
  118. 'browser_start_and_home':0xAC,
  119. 'volume_mute':0xAD,
  120. 'volume_Down':0xAE,
  121. 'volume_up':0xAF,
  122. 'next_track':0xB0,
  123. 'previous_track':0xB1,
  124. 'stop_media':0xB2,
  125. 'play/pause_media':0xB3,
  126. 'start_mail':0xB4,
  127. 'select_media':0xB5,
  128. 'start_application_1':0xB6,
  129. 'start_application_2':0xB7,
  130. 'attn_key':0xF6,
  131. 'crsel_key':0xF7,
  132. 'exsel_key':0xF8,
  133. 'play_key':0xFA,
  134. 'zoom_key':0xFB,
  135. 'clear_key':0xFE,
  136. '+':0xBB,
  137. ',':0xBC,
  138. '-':0xBD,
  139. '.':0xBE,
  140. '/':0xBF,
  141. '`':0xC0,
  142. ';':0xBA,
  143. '[':0xDB,
  144. '\\':0xDC,
  145. ']':0xDD,
  146. "'":0xDE,
  147. '`':0xC0}

键盘上符号对应的VK_CODE的具体值。参考

test.py

  1. #
  2. # _*_ coding:UTF-8 _*_
  3. import win32api
  4. import win32con
  5. import win32gui
  6. from ctypes import *
  7. import time
  8. VK_CODE = {
  9. 'backspace':0x08,
  10. 'tab':0x09,
  11. 'clear':0x0C,
  12. 'enter':0x0D,
  13. 'shift':0x10,
  14. 'ctrl':0x11,
  15. 'alt':0x12,
  16. 'pause':0x13,
  17. 'caps_lock':0x14,
  18. 'esc':0x1B,
  19. 'spacebar':0x20,
  20. 'page_up':0x21,
  21. 'page_down':0x22,
  22. 'end':0x23,
  23. 'home':0x24,
  24. 'left_arrow':0x25,
  25. 'up_arrow':0x26,
  26. 'right_arrow':0x27,
  27. 'down_arrow':0x28,
  28. 'select':0x29,
  29. 'print':0x2A,
  30. 'execute':0x2B,
  31. 'print_screen':0x2C,
  32. 'ins':0x2D,
  33. 'del':0x2E,
  34. 'help':0x2F,
  35. '':0x30,
  36. '':0x31,
  37. '':0x32,
  38. '':0x33,
  39. '':0x34,
  40. '':0x35,
  41. '':0x36,
  42. '':0x37,
  43. '':0x38,
  44. '':0x39,
  45. 'a':0x41,
  46. 'b':0x42,
  47. 'c':0x43,
  48. 'd':0x44,
  49. 'e':0x45,
  50. 'f':0x46,
  51. 'g':0x47,
  52. 'h':0x48,
  53. 'i':0x49,
  54. 'j':0x4A,
  55. 'k':0x4B,
  56. 'l':0x4C,
  57. 'm':0x4D,
  58. 'n':0x4E,
  59. 'o':0x4F,
  60. 'p':0x50,
  61. 'q':0x51,
  62. 'r':0x52,
  63. 's':0x53,
  64. 't':0x54,
  65. 'u':0x55,
  66. 'v':0x56,
  67. 'w':0x57,
  68. 'x':0x58,
  69. 'y':0x59,
  70. 'z':0x5A,
  71. 'numpad_0':0x60,
  72. 'numpad_1':0x61,
  73. 'numpad_2':0x62,
  74. 'numpad_3':0x63,
  75. 'numpad_4':0x64,
  76. 'numpad_5':0x65,
  77. 'numpad_6':0x66,
  78. 'numpad_7':0x67,
  79. 'numpad_8':0x68,
  80. 'numpad_9':0x69,
  81. 'multiply_key':0x6A,
  82. 'add_key':0x6B,
  83. 'separator_key':0x6C,
  84. 'subtract_key':0x6D,
  85. 'decimal_key':0x6E,
  86. 'divide_key':0x6F,
  87. 'F1':0x70,
  88. 'F2':0x71,
  89. 'F3':0x72,
  90. 'F4':0x73,
  91. 'F5':0x74,
  92. 'F6':0x75,
  93. 'F7':0x76,
  94. 'F8':0x77,
  95. 'F9':0x78,
  96. 'F10':0x79,
  97. 'F11':0x7A,
  98. 'F12':0x7B,
  99. 'F13':0x7C,
  100. 'F14':0x7D,
  101. 'F15':0x7E,
  102. 'F16':0x7F,
  103. 'F17':0x80,
  104. 'F18':0x81,
  105. 'F19':0x82,
  106. 'F20':0x83,
  107. 'F21':0x84,
  108. 'F22':0x85,
  109. 'F23':0x86,
  110. 'F24':0x87,
  111. 'num_lock':0x90,
  112. 'scroll_lock':0x91,
  113. 'left_shift':0xA0,
  114. 'right_shift ':0xA1,
  115. 'left_control':0xA2,
  116. 'right_control':0xA3,
  117. 'left_menu':0xA4,
  118. 'right_menu':0xA5,
  119. 'browser_back':0xA6,
  120. 'browser_forward':0xA7,
  121. 'browser_refresh':0xA8,
  122. 'browser_stop':0xA9,
  123. 'browser_search':0xAA,
  124. 'browser_favorites':0xAB,
  125. 'browser_start_and_home':0xAC,
  126. 'volume_mute':0xAD,
  127. 'volume_Down':0xAE,
  128. 'volume_up':0xAF,
  129. 'next_track':0xB0,
  130. 'previous_track':0xB1,
  131. 'stop_media':0xB2,
  132. 'play/pause_media':0xB3,
  133. 'start_mail':0xB4,
  134. 'select_media':0xB5,
  135. 'start_application_1':0xB6,
  136. 'start_application_2':0xB7,
  137. 'attn_key':0xF6,
  138. 'crsel_key':0xF7,
  139. 'exsel_key':0xF8,
  140. 'play_key':0xFA,
  141. 'zoom_key':0xFB,
  142. 'clear_key':0xFE,
  143. '+':0xBB,
  144. ',':0xBC,
  145. '-':0xBD,
  146. '.':0xBE,
  147. '/':0xBF,
  148. '`':0xC0,
  149. ';':0xBA,
  150. '[':0xDB,
  151. '\\':0xDC,
  152. ']':0xDD,
  153. "'":0xDE,
  154. '`':0xC0}
  155. class POINT(Structure):
  156. _fields_ = [("x", c_ulong),("y", c_ulong)]
  157. def get_mouse_point():
  158. po = POINT()
  159. windll.user32.GetCursorPos(byref(po))
  160. return int(po.x), int(po.y)
  161. def mouse_click(x=None,y=None):
  162. if not x is None and not y is None:
  163. mouse_move(x,y)
  164. time.sleep(0.05)
  165. win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
  166. win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
  167. def mouse_dclick(x=None,y=None):
  168. if not x is None and not y is None:
  169. mouse_move(x,y)
  170. time.sleep(0.05)
  171. win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
  172. win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
  173. win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
  174. win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
  175. def mouse_move(x,y):
  176. windll.user32.SetCursorPos(x, y)
  177. def key_input(str=''):
  178. for c in str:
  179. win32api.keybd_event(VK_CODE[c],0,0,0)
  180. win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0)
  181. time.sleep(0.01)
  182.  
  183. if __name__ == "__main__":
  184. mouse_click(500,280)
  185. str1 = 'python'
  186. key_input(str1)
  187. mouse_click(1000,280)

当运行test.py时,会模拟在360浏览器的搜索框自动输入python,同时点击搜索按钮开始搜索。

如何使用python来模拟鼠标点击(将通过实例自动化模拟在360浏览器中自动搜索"python")的更多相关文章

  1. 使用powershell/vbs自动化模拟鼠标点击操作

    今天想做windows上的自动化,所以才有了模拟鼠标点击的需求,先考虑用powershell实现: 首先先安装一个名为“WASP”免费可用的Powershell扩展程序,下载地址:http://was ...

  2. C#用mouse_event模拟鼠标点击的问题

    1.首先添加using System.Runtime.InteropServices; 2.为鼠标添加模拟点击的各种参数 //鼠标事件  因为我用的不多,所以其他参数没有写 1 2 3 4 5 6 7 ...

  3. C#实现模拟鼠标点击事件(点击桌面的其他程序 )

    注释感觉已经很清楚了,有不懂的欢迎评论 1 using System; using System.Collections.Generic; using System.ComponentModel; u ...

  4. 利用python模拟鼠标点击自动完成工作,提升你的工作效率!

    没有什么能比学以致用让学习变得更有动力的了. 不知道大家在工作中有没有一些工作需要重复的点击鼠标,因为会影响到财务统计报表的关系,我们每个月底月初都要修改ERP中的单据日期,单据多的时候光修改就能让你 ...

  5. WEBBROWSER中模拟鼠标点击(SendMessage/PostMessage)

    好久没有写文章,发一篇顶顶博客访问量.别人建议转一些比较好的代码也贴过来,但是我打算这里主要发自己原创的代码,所以么..流量该多少就多少吧... 回到主题,在webbrowser中点击某链接网上几乎都 ...

  6. jQuery模拟鼠标点击事件失效的问题

    最近使用jQuery操作浏览器获取数据,需要对分页的信息进行处理,发现直接使用$('div#pager a.next').click();的这种写法无法触发点击事件. 使用trigger('click ...

  7. Qt 模拟鼠标点击(QApplication::sendEvent(ui->pushbutton, &event0);)

    QPoint pos(0,0);QMouseEvent event0(QEvent::MouseButtonPress, pos, Qt::LeftButton, Qt::LeftButton, Qt ...

  8. 原生js及H5模拟鼠标点击拖拽

    一.原生js 1.拖拽的流程动作 鼠标按下 触发onmousedown事件 鼠标移动 触发onmousemove事件 鼠标松开 触发onmouseup事件 2.注意事项: 要防止div移出可视框,要限 ...

  9. Js 模拟鼠标点击事件

    var obj = document.getElementById('go'); if(document.all){ obj.click(); }else{ var e = document.crea ...

随机推荐

  1. java语言中的匿名类与lambda表达式介绍与总结 (Anonymous Classes and Lambda Expressions)

    2017/6/30 转载写明出处:http://www.cnblogs.com/daren-lin/p/anonymous-classes-and-lambda-expressions-in-java ...

  2. 简析Android 兼容性测试框架CTS使用

    一.什么是兼容性测试? 1)为用户提供最好的用户体验,让更多高质量的APP可以顺利的运行在此平台上 2)让程序员能为此平台写更多的高质量的应用程序 3)可以更好的利用Android应用市场 二.CTS ...

  3. js模块化/js模块加载器/js模块打包器

    之前对这几个概念一直记得很模糊,也无法用自己的语言表达出来,今天看了大神的文章,尝试根据自己的理解总结一下,算是一篇读后感. 大神的文章:http://www.css88.com/archives/7 ...

  4. AugularJS从入门到实践(一)

      前  言  前端    AngularJS是为了克服HTML在构建应用上的不足而设计的.(引用百度百科) AngularJS使用了不同的方法,它尝试去补足HTML本身在构建应用方面的缺陷.Angu ...

  5. Unity-Shader-镜面高光Phong&BlinnPhong-油腻的师姐在哪里

    [旧博客转移 - 2016年4月4日 13:13 ] 油腻的师姐: 以前玩过一款很火热的端游<剑灵>,剑灵刚出来的时候,某网页游戏广告视频中有句台词:"我不断的在寻找,有你的世界 ...

  6. JavaMail 邮件开发

    (api  + 配置) 开发中,邮件的应用? -à 注册,填写生日:  后期系统会自动发送生日祝贺   -à 发货,发货提醒!邮件提醒! 邮件: 1. 发邮件:[程序中如何发邮件!] 2. 收邮件:[ ...

  7. for(int a:i)在java 编程中的使用

    这种有冒号的for循环叫做foreach循环,foreach语句是java5的新特征之一,在遍历数组.集合方面,foreach为开发人员提供了极大的方便. foreach语句是for语句的特殊简化版本 ...

  8. gulp-rev-append静态资源添加版本号后缀,清理缓存

    大多用的是gulp-rev.gulp-rev-collerctor两个插件,但过程有点麻烦,使用gulp-rev-append插件轻松搞定 github:   https://github.com/b ...

  9. 还在为画“类Word文档报表”而发愁吗?

    欢迎大家持续关注葡萄城控件技术团队博客,更多更好的原创文章尽在这里~~​ Word 是非常强大的文档编辑工具,一些行业制式文档都是使用Word来创建的,像教育行业的申请表,履历表,审批表等,像石油业的 ...

  10. LVS服务原理以及搭建(理论+干货)

    LVS服务原理以及搭建(理论+干货) 版权声明:本文为yunshuxueyuan原创文章 如需转载请标明出处: https://my.oschina.net/yunshuxueyuan/blog QQ ...