分享

Python 键盘鼠标操作

 dinghj 2019-04-26

pyHook模块可从这里下载

http://www.lfd./~gohlke/pythonlibs/
//在python官网找了很多个pyHook都不适用于python3.5版本

PyUserInput模块
https://github.com/PyUserInput/PyUserInput
二、使用方法

//导入模块

import pymouse,pykeyboard,os,sys
from pymouse import PyMouse
from pykeyboard import PyKeyboard


//分别定义一个实例
m = PyMouse()
k = PyKeyboard()

鼠标操作:
x,y = 1580,1025
m.click(x,y,button,n) –鼠标点击
x,y –是坐标位置
buttong  1表示左键,2表示点击右键
n –点击次数,默认是1次,2表示双击


m.move(x,y) –鼠标移动到坐标(x,y)

x_dim, y_dim = m.screen_size() –获得屏幕尺寸

键盘操作:

k.type_string(‘Hello, World!’) –模拟键盘输入字符串
k.press_key(‘H’) –模拟键盘按H键
k.release_key(‘H’) –模拟键盘松开H键
k.tap_key(“H”) –模拟点击H键
k.tap_key(‘H’,n=2,interval=5) –模拟点击H键,2次,每次间隔5秒
k.tap_key(k.function_keys[5]) –点击功能键F5
k.tap_key(k.numpad_keys[5],3) –点击小键盘5,3次

联合按键模拟
例如同时按alt+tab键盘
k.press_key(k.alt_key) –按住alt键
k.tap_key(k.tab_key) –点击tab键
k.release_key(k.alt_key) –松开alt键

示例代码如下:

  1. def mouse_coordinates():
  2. """ 获取鼠标坐标 """
  3. import os,time
  4. import pyautogui as pag
  5. try:
  6. while True:
  7. print ("Press Ctrl-C to end")
  8. x,y = pag.position() #返回鼠标的坐标
  9. posStr="Position:"+str(x).rjust(4)+','+str(y).rjust(4)
  10. print (posStr) #打印坐标
  11. time.sleep(0.2)
  12. os.system('cls') #清除屏幕
  13. except KeyboardInterrupt:
  14. print ('end....')
  15. def keystroke():
  16. """ 按键操作 """
  17. from pymouse import PyMouse
  18. from pykeyboard import PyKeyboard
  19. m = PyMouse()
  20. k = PyKeyboard()
  21. x,y=1580,1025 # 鼠标坐标
  22. m.click(x,y,1,1) # 左键点击一次
  23. k.type_string('hello') # 输入hello
  24. time.sleep(0.1)
  25. k.tap_key(k.enter_key,1) # 回车
  26. x,y=260,38
  27. m.click(x,y,1,1) # 左击另一个坐标一次
  28. def write_window(ct_name=None):
  29. """ 向窗体的文本框写入字符串,
  30. 执行此方法需要传入窗口句柄或者打开一个记事本 """
  31. from ctypes import windll as win32
  32. WM_CHAR = 0x0102
  33. ct_name = ct_name if ct_name else 'Notepad'
  34. try:
  35. hWnd = win32.user32.FindWindowW(ct_name, None)
  36. assert hWnd
  37. hEdit = win32.user32.FindWindowExW(hWnd, None, 'Edit', None)
  38. assert hEdit
  39. except AssertionError:
  40. print('Notepad not found')
  41. else:
  42. for char in '我爱你, 世界':
  43. win32.user32.SendMessageW(hEdit, WM_CHAR, ord(char), None)
  44. # 回车
  45. win32gui.PostMessage(hEdit, win32con.WM_KEYDOWN, win32con.VK_RETURN, 0)
  46. win32gui.PostMessage(hEdit, win32con.WM_KEYUP, win32con.VK_RETURN, 0)
  47. def get_window():
  48. """ 获取所有Windows打开的窗体句柄 """
  49. from win32gui import IsWindow,IsWindowEnabled,IsWindowVisible,GetWindowText,EnumWindows
  50. titles = set()
  51. def foo(hwnd, mouse):
  52. # 去掉下面这句判断就能获取所有
  53. if IsWindow(hwnd) and IsWindowEnabled(hwnd) and IsWindowVisible(hwnd):
  54. titles.add(GetWindowText(hwnd))
  55. EnumWindows(foo, 0)
  56. return titles

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多