python3 您所在的位置:网站首页 vba模拟鼠标键盘 python3

python3

2023-09-07 08:23| 来源: 网络整理| 查看: 265

前言

通过python控制windows的鼠标和键盘在屏幕上指定位置做点击操作和输入操作

一、导入相关模块 from ctypes import windll import win32api import win32con import time # 控制鼠标间隔时间 二、实操 1、鼠标移动到指定位置 windll.user32.SetCursorPos(900, 300) # 该代码执行后,鼠标会移动到(900, 300)的坐标点。 # SetCursorPos(x,y)函数:该函数把光标移到屏幕的指定位置,但是并没有点击。 控制鼠标到指定位置,但是这个时候我们又不知道具体坐标,那该怎么办了?不要着急,这个时候我们可以用QQ截图来获取坐标,下面为QQ截图获取坐标: 在这里插入图片描述 注意事项:在通过QQ截图获取屏幕定位时,屏幕缩放比必须为100% 2、模拟鼠标点击

Mouse_event   mouse_event函数功能: mouse_event函数功能是综合鼠标移动和按钮点击。如果鼠标被移动,用设置MOUSEEVENTF_MOVE来表明,dX和dy保留移动的信息。给出的信息是绝对或相对整数值。

VOID mouse_event( DWORD dwFlags, // motion and click options DWORD dx, // horizontal position or change DWORD dy, // vertical position or change DWORD dwData, // wheel movement ULONG_PTR dwExtraInfo // application-defined information );

参数介绍:

dwFlags:标志位集,指定点击按钮和鼠标动作的多种情况。dx:指定鼠标沿x轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLUTE的设置。给出的绝对数据作为鼠标的实际X坐标;给出的相对数据作为移动的mickeys数。一个mickey表示鼠标移动的数量,表明鼠标已经移动。dy:指定鼠标沿y轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLUTE的设置。给出的绝对数据作为鼠标的实际y坐标,给出的相对数据作为移动的mickeys数。dwData:如果dwFlags为MOUSEEVENTF_WHEEL,则dwData指定鼠标轮移动的数量。正值表明鼠标轮向前转动,即远离用户的方向;负值表明鼠标轮向后转动,即朝向用户。一个轮击定义为WHEEL_DELTA,即120。如果dwFlagsS不是MOUSEEVENTF_WHEEL,则dWData应为零。dwExtralnfo:指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessageExtraInfo来获得此附加信息。 MOUSEEVENTF_LEFTDOWN:表明按下鼠标左键。MOUSEEVENTF_LEFTUP:表明松开鼠标左键。MOUSEEVENTF_RIGHTDOWN:表明按下鼠标右键。MOUSEEVENTF_RIGHTUP:表明松开鼠标右键。MOUSEEVENTF_MIDDLEDOWN:表明按下鼠标中键。MOUSEEVENTF_MIDDLEUP:表明松开鼠标中键。MOUSEEVENTF_WHEEL:在Windows NT中如果鼠标有一个轮,表明鼠标轮被移动。点击操作当然要把按住和松开一起执行,并且为了保证是成功点击了,最好在中间添加一个短时间的休眠。 # mouse_event()函数:函数综合鼠标击键和鼠标动作 # 1.点击鼠标左键 # 移动鼠标到指定位置 windll.user32.SetCursorPos(1558, 645) # 按下左键 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0) # 短暂休眠 time.sleep(0.1) # 松开左键 win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0) # 2.点击鼠标右键 # 移动鼠标到指定位置 windll.user32.SetCursorPos(1558, 645) # 按下右键 win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0) # 短暂休眠 time.sleep(0.1) # 松开右键 win32api.mouse_event(win32con.MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0) # 3.鼠标点击中间键 # 移动鼠标到指定位置 windll.user32.SetCursorPos(564, 399) # 按下中间键 win32api.mouse_event(win32con.MOUSEEVENTF_MIDDLEDOWN, 0, 0, 0, 0) # 短暂休眠 time.sleep(0.1) # 松开中间键 win32api.mouse_event(win32con.MOUSEEVENTF_MIDDLEUP, 0, 0, 0, 0) # 4.模拟鼠标中轴滚动 # 移动鼠标到指定位置 windll.user32.SetCursorPos(2557, 362) # 正数向上移动,负数向下移动。 win32api.mouse_event(win32con.MOUSEEVENTF_WHEEL, 0, 0, -50, 0) 3、模拟键盘输入

Keybd_event   keybd_event函数功能:该函数为Windows提供的虚拟键盘API函数,可合成一次击键事件。系统可使用该函数屏蔽相应键盘动作,合成的击键事件来产生WM_KEYUP或WM_KEYDOWN消息,触发一个按键事件。

keybd_event函数原型:

VOID keybd_event(   BYTE bVk, // virtual-key code   BYTE bScan, // hardware scan code   DWORD dwFlags, // flags specifying various function options   DWORD dwExtraInfo // additional data associated with keystroke );

参数介绍:

bVk:定义一个虚拟键码,键码值必须在1~254之间。(具体参见附录:常用模拟键的键值对照表);bScan:定义该键的硬件扫描码,一般不用设置,用0代替就行;dwFlags:定义函数操作的各个方面的一个标志位集,如果为keydown则置0即可,如果为keyup则设成”KEYEVENTF_KEYUP”;dwExtralnfo:定义与击键相关的附加的32位值,一般也置0即可。 '''模拟按下“Hi”''' win32api.keybd_event(16, 0, 0, 0) # 按下Shift键 win32api.keybd_event(72, 0, 0, 0) # 按下h键 win32api.keybd_event(72, 0, win32con.KEYEVENTF_KEYUP, 0) # 松开h键 win32api.keybd_event(16, 0, win32con.KEYEVENTF_KEYUP, 0) # 松开Shift键,组合键——按下Shift的同时按下h,形成H win32api.keybd_event(73, 0, 0, 0) win32api.keybd_event(73, 0, win32con.KEYEVENTF_KEYUP, 0) # 松开i键

常用模拟键的键值对照表:

键盘键与虚拟键码对照表 字母和数字键 数字小键盘的键 功能键 其它键 键   键码   键   键码   键   键码   键     键码 A   65   0    96    F1    112   Backspace    8 B   66   1   97    F2    113   Tab        9 C   67   2    98    F3    114   Clear      12 D   68   3   99    F4    115   Enter      13 E   69   4    100   F5    116   Shift      16 F   70    5    101   F6    117   Control     17 G   71    6   102   F7    118   Alt        18 H   72   7    103   F8    119   Caps Lock    20 I   73   8    104   F9    120   Esc        27 J   74   9   105   F10   121   Spacebar    32 K   75   *    106   F11   122   Page Up     33 L   76   +    107   F12   123   Page Down    34 M   77   Enter 108   --    --   End        35 N   78   -   109   --    --   Home       36 O   79   .    110   --    --   Left Arrow   37 P   80   /    111   --    --   Up Arrow     38 Q   81    --    --   --    --   Right Arrow   39 R   82    --    --   --    --   Down Arrow    40 S   83    --    --   --    --   Insert      45 T   84    --    --   --    --   Delete      46 U   85    --    --   --    --   Help       47 V   86    --   --   --    --   Num Lock     144 W   87           X   88       Y   89       Z   90       0   48       1   49       2   50        3   51        4   52        5   53        6   54        7   55        8   56        9   57  


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有