python模拟鼠标拖动操作的方法


Posted in Python onMarch 11, 2015

本文实例讲述了python模拟鼠标拖动操作的方法。分享给大家供大家参考。具体如下:

pdf中的书签只有页码,准备把现有书签拖到一个目录中,然后添加自己页签。重复的拖动工作实在无趣,还是让程序帮我实现吧,我可以喝点水,休息一下了

1. Python代码

#

# _*_ coding:UTF-8 _*_

__author__ = 'wp'

import win32api

import win32con

import win32gui

from ctypes import *

import time

SW = 1377

SH = 768

VK_CODE = {

    'backspace':0x08,

    'tab':0x09,

    'clear':0x0C,

    'enter':0x0D,

    'shift':0x10,

    'ctrl':0x11,

    'alt':0x12,

    'pause':0x13,

    'caps_lock':0x14,

    'esc':0x1B,

    'spacebar':0x20,

    'page_up':0x21,

    'page_down':0x22,

    'end':0x23,

    'home':0x24,

    'left_arrow':0x25,

    'up_arrow':0x26,

    'right_arrow':0x27,

    'down_arrow':0x28,

    'select':0x29,

    'print':0x2A,

    'execute':0x2B,

    'print_screen':0x2C,

    'ins':0x2D,

    'del':0x2E,

    'help':0x2F,

    '0':0x30,

    '1':0x31,

    '2':0x32,

    '3':0x33,

    '4':0x34,

    '5':0x35,

    '6':0x36,

    '7':0x37,

    '8':0x38,

    '9':0x39,

    'a':0x41,

    'b':0x42,

    'c':0x43,

    'd':0x44,

    'e':0x45,

    'f':0x46,

    'g':0x47,

    'h':0x48,

    'i':0x49,

    'j':0x4A,

    'k':0x4B,

    'l':0x4C,

    'm':0x4D,

    'n':0x4E,

    'o':0x4F,

    'p':0x50,

    'q':0x51,

    'r':0x52,

    's':0x53,

    't':0x54,

    'u':0x55,

    'v':0x56,

    'w':0x57,

    'x':0x58,

    'y':0x59,

    'z':0x5A,

    'numpad_0':0x60,

    'numpad_1':0x61,

    'numpad_2':0x62,

    'numpad_3':0x63,

    'numpad_4':0x64,

    'numpad_5':0x65,

    'numpad_6':0x66,

    'numpad_7':0x67,

    'numpad_8':0x68,

    'numpad_9':0x69,

    'multiply_key':0x6A,

    'add_key':0x6B,

    'separator_key':0x6C,

    'subtract_key':0x6D,

    'decimal_key':0x6E,

    'divide_key':0x6F,

    'F1':0x70,

    'F2':0x71,

    'F3':0x72,

    'F4':0x73,

    'F5':0x74,

    'F6':0x75,

    'F7':0x76,

    'F8':0x77,

    'F9':0x78,

    'F10':0x79,

    'F11':0x7A,

    'F12':0x7B,

    'F13':0x7C,

    'F14':0x7D,

    'F15':0x7E,

    'F16':0x7F,

    'F17':0x80,

    'F18':0x81,

    'F19':0x82,

    'F20':0x83,

    'F21':0x84,

    'F22':0x85,

    'F23':0x86,

    'F24':0x87,

    'num_lock':0x90,

    'scroll_lock':0x91,

    'left_shift':0xA0,

    'right_shift ':0xA1,

    'left_control':0xA2,

    'right_control':0xA3,

    'left_menu':0xA4,

    'right_menu':0xA5,

    'browser_back':0xA6,

    'browser_forward':0xA7,

    'browser_refresh':0xA8,

    'browser_stop':0xA9,

    'browser_search':0xAA,

    'browser_favorites':0xAB,

    'browser_start_and_home':0xAC,

    'volume_mute':0xAD,

    'volume_Down':0xAE,

    'volume_up':0xAF,

    'next_track':0xB0,

    'previous_track':0xB1,

    'stop_media':0xB2,

    'play/pause_media':0xB3,

    'start_mail':0xB4,

    'select_media':0xB5,

    'start_application_1':0xB6,

    'start_application_2':0xB7,

    'attn_key':0xF6,

    'crsel_key':0xF7,

    'exsel_key':0xF8,

    'play_key':0xFA,

    'zoom_key':0xFB,

    'clear_key':0xFE,

    '+':0xBB,

    ',':0xBC,

    '-':0xBD,

    '.':0xBE,

    '/':0xBF,

    '`':0xC0,

    ';':0xBA,

    '[':0xDB,

    '\\':0xDC,

    ']':0xDD,

    "'":0xDE,

    '`':0xC0}

class POINT(Structure):

    _fields_ = [("x", c_ulong),("y", c_ulong)]

def get_mouse_point():

    po = POINT()

    windll.user32.GetCursorPos(byref(po))

    return int(po.x), int(po.y)

def mouse_click(x=None,y=None):

    if not x is None and not y is None:

        mouse_move(x,y)

        time.sleep(0.05)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)

    time.sleep(0.05)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

def mouse_dclick(x=None,y=None):

    if not x is None and not y is None:

        mouse_move(x,y)

        time.sleep(0.05)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)

    time.sleep(0.05)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

    time.sleep(0.05)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)

    time.sleep(0.05)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

def mouse_move(x,y):

    windll.user32.SetCursorPos(x, y)

def mouse_absolute(x,y,x2,y2):

    windll.user32.SetCursorPos(x, y)    #鼠标移动到  

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)    #左键按下

    time.sleep(0.2)

    mw = int(x2 * 65535 / SW) 

    mh = int(y2 * 65535 / SH)

    win32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE + win32con.MOUSEEVENTF_MOVE, mw, mh, 0, 0)    

    time.sleep(0.2)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

def key_input(str=''):

    for c in str:

        win32api.keybd_event(VK_CODE[c],0,0,0)

        win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0)

        time.sleep(0.01)

def t0():

    pass  #do nothing 

def t2():

    mouse_click(800,200)

    for c in 'hello':

        win32api.keybd_event(65,0,0,0) #a键位码是86

        win32api.keybd_event(65,0,win32con.KEYEVENTF_KEYUP,0)

    #print get_mouse_point()

def t1():

    #mouse_move(1024,470)aa

    #time.sleep(0.05)

    #mouse_dclick()HELLO

    mouse_dclick(1024,470)

def t3():

    mouse_click(1024,470)

    str = 'hello'

    for c in str:

        win32api.keybd_event(VK_CODE[c],0,0,0) #a键位码是86

        win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0)

        time.sleep(0.01)

def t4():

    mouse_click(900,300)

    str = 'hello'

    key_input(str)

def t5():

    #拖动pdf中的书签

    po = POINT()

    windll.user32.GetCursorPos(byref(po))

    j = 50       #操作次数

    x = 766     #x

    y = 500     #y

    n = 10       #上移10

    for i in range(0,j):

        mouse_absolute(x,y,x,y-n)

        #windll.user32.SetCursorPos(po.x, po.y)

        mouse_click(po.x, po.y)

        print(str(j-i))

if __name__ == "__main__":

    t5()    #move pdf bookmark

    #t4()

    #t3()

    #t2()

    #t1()

    #t0()

2. mouse.py文件
#

# _*_ coding:UTF-8 _*_

__author__ = 'wp'

import win32api

import win32con

import win32gui

from ctypes import *

import time

SW = 1377

SH = 768

VK_CODE = {

    'backspace':0x08,

    'tab':0x09,

    'clear':0x0C,

    'enter':0x0D,

    'shift':0x10,

    'ctrl':0x11,

    'alt':0x12,

    'pause':0x13,

    'caps_lock':0x14,

    'esc':0x1B,

    'spacebar':0x20,

    'page_up':0x21,

    'page_down':0x22,

    'end':0x23,

    'home':0x24,

    'left_arrow':0x25,

    'up_arrow':0x26,

    'right_arrow':0x27,

    'down_arrow':0x28,

    'select':0x29,

    'print':0x2A,

    'execute':0x2B,

    'print_screen':0x2C,

    'ins':0x2D,

    'del':0x2E,

    'help':0x2F,

    '0':0x30,

    '1':0x31,

    '2':0x32,

    '3':0x33,

    '4':0x34,

    '5':0x35,

    '6':0x36,

    '7':0x37,

    '8':0x38,

    '9':0x39,

    'a':0x41,

    'b':0x42,

    'c':0x43,

    'd':0x44,

    'e':0x45,

    'f':0x46,

    'g':0x47,

    'h':0x48,

    'i':0x49,

    'j':0x4A,

    'k':0x4B,

    'l':0x4C,

    'm':0x4D,

    'n':0x4E,

    'o':0x4F,

    'p':0x50,

    'q':0x51,

    'r':0x52,

    's':0x53,

    't':0x54,

    'u':0x55,

    'v':0x56,

    'w':0x57,

    'x':0x58,

    'y':0x59,

    'z':0x5A,

    'numpad_0':0x60,

    'numpad_1':0x61,

    'numpad_2':0x62,

    'numpad_3':0x63,

    'numpad_4':0x64,

    'numpad_5':0x65,

    'numpad_6':0x66,

    'numpad_7':0x67,

    'numpad_8':0x68,

    'numpad_9':0x69,

    'multiply_key':0x6A,

    'add_key':0x6B,

    'separator_key':0x6C,

    'subtract_key':0x6D,

    'decimal_key':0x6E,

    'divide_key':0x6F,

    'F1':0x70,

    'F2':0x71,

    'F3':0x72,

    'F4':0x73,

    'F5':0x74,

    'F6':0x75,

    'F7':0x76,

    'F8':0x77,

    'F9':0x78,

    'F10':0x79,

    'F11':0x7A,

    'F12':0x7B,

    'F13':0x7C,

    'F14':0x7D,

    'F15':0x7E,

    'F16':0x7F,

    'F17':0x80,

    'F18':0x81,

    'F19':0x82,

    'F20':0x83,

    'F21':0x84,

    'F22':0x85,

    'F23':0x86,

    'F24':0x87,

    'num_lock':0x90,

    'scroll_lock':0x91,

    'left_shift':0xA0,

    'right_shift ':0xA1,

    'left_control':0xA2,

    'right_control':0xA3,

    'left_menu':0xA4,

    'right_menu':0xA5,

    'browser_back':0xA6,

    'browser_forward':0xA7,

    'browser_refresh':0xA8,

    'browser_stop':0xA9,

    'browser_search':0xAA,

    'browser_favorites':0xAB,

    'browser_start_and_home':0xAC,

    'volume_mute':0xAD,

    'volume_Down':0xAE,

    'volume_up':0xAF,

    'next_track':0xB0,

    'previous_track':0xB1,

    'stop_media':0xB2,

    'play/pause_media':0xB3,

    'start_mail':0xB4,

    'select_media':0xB5,

    'start_application_1':0xB6,

    'start_application_2':0xB7,

    'attn_key':0xF6,

    'crsel_key':0xF7,

    'exsel_key':0xF8,

    'play_key':0xFA,

    'zoom_key':0xFB,

    'clear_key':0xFE,

    '+':0xBB,

    ',':0xBC,

    '-':0xBD,

    '.':0xBE,

    '/':0xBF,

    '`':0xC0,

    ';':0xBA,

    '[':0xDB,

    '\\':0xDC,

    ']':0xDD,

    "'":0xDE,

    '`':0xC0}

class POINT(Structure):

    _fields_ = [("x", c_ulong),("y", c_ulong)]

def get_mouse_point():

    po = POINT()

    windll.user32.GetCursorPos(byref(po))

    return int(po.x), int(po.y)

def mouse_click(x=None,y=None):

    if not x is None and not y is None:

        mouse_move(x,y)

        time.sleep(0.05)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)

    time.sleep(0.05)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

def mouse_dclick(x=None,y=None):

    if not x is None and not y is None:

        mouse_move(x,y)

        time.sleep(0.05)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)

    time.sleep(0.05)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

    time.sleep(0.05)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)

    time.sleep(0.05)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

def mouse_move(x,y):

    windll.user32.SetCursorPos(x, y)

def mouse_absolute(x,y,x2,y2):

    windll.user32.SetCursorPos(x, y)    #鼠标移动到  

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)    #左键按下

    time.sleep(0.2)

    mw = int(x2 * 65535 / SW) 

    mh = int(y2 * 65535 / SH)

    win32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE + win32con.MOUSEEVENTF_MOVE, mw, mh, 0, 0)    

    time.sleep(0.2)

    win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)

def key_input(str=''):

    for c in str:

        win32api.keybd_event(VK_CODE[c],0,0,0)

        win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0)

        time.sleep(0.01)

def t0():

    pass  #do nothing 

def t2():

    mouse_click(800,200)

    for c in 'hello':

        win32api.keybd_event(65,0,0,0) #a键位码是86

        win32api.keybd_event(65,0,win32con.KEYEVENTF_KEYUP,0)

    #print get_mouse_point()

def t1():

    #mouse_move(1024,470)aa

    #time.sleep(0.05)

    #mouse_dclick()HELLO

    mouse_dclick(1024,470)

def t3():

    mouse_click(1024,470)

    str = 'hello'

    for c in str:

        win32api.keybd_event(VK_CODE[c],0,0,0) #a键位码是86

        win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0)

        time.sleep(0.01)

def t4():

    mouse_click(900,300)

    str = 'hello'

    key_input(str)

def t5():

    #拖动pdf中的书签

    po = POINT()

    windll.user32.GetCursorPos(byref(po))

    j = 50       #操作次数

    x = 766     #x

    y = 500     #y

    n = 10       #上移10

    for i in range(0,j):

        mouse_absolute(x,y,x,y-n)

        #windll.user32.SetCursorPos(po.x, po.y)

        mouse_click(po.x, po.y)

        print(str(j-i))

if __name__ == "__main__":

    t5()    #move pdf bookmark

    #t4()

    #t3()

    #t2()

    #t1()

    #t0()

3. 运行效果如下:

python模拟鼠标拖动操作的方法

希望本文所述对大家的Python程序设计有所帮助。

Python 相关文章推荐
Python多进程编程技术实例分析
Sep 16 Python
Python lambda函数基本用法实例分析
Mar 16 Python
python实现黑客字幕雨效果
Jun 21 Python
对Python捕获控制台输出流的方法详解
Jan 07 Python
Python2 Selenium元素定位的实现(8种)
Feb 25 Python
详解django2中关于时间处理策略
Mar 06 Python
使用coverage统计python web项目代码覆盖率的方法详解
Aug 05 Python
Python 使用多属性来进行排序
Sep 01 Python
PyQt使用QPropertyAnimation开发简单动画
Apr 02 Python
Django项目如何获得SSL证书与配置HTTPS
Apr 30 Python
如何使用Python实现一个简易的ORM模型
May 12 Python
Python图片处理之图片裁剪教程
May 27 Python
Python创建系统目录的方法
Mar 11 #Python
Python实现从订阅源下载图片的方法
Mar 11 #Python
Python获取网页上图片下载地址的方法
Mar 11 #Python
Python实现从百度API获取天气的方法
Mar 11 #Python
Python计算回文数的方法
Mar 11 #Python
Python用GET方法上传文件
Mar 10 #Python
Python爬取读者并制作成PDF
Mar 10 #Python
You might like
PHP的关于变量和日期处理的一些面试题目整理
2015/08/10 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
PHP页面输出时js设置input框的选中值
2016/09/30 PHP
PHP实现随机数字、字母的验证码功能
2018/08/01 PHP
JQuery 图片的展开和伸缩实例讲解
2013/04/18 Javascript
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
javascript中的事件代理初探
2014/03/08 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
基于jQuery实现的文字按钮表单特效整理
2014/12/07 Javascript
BootStrap制作导航条实例代码
2016/05/06 Javascript
使用jQuery中的wrap()函数操作HTML元素的教程
2016/05/24 Javascript
使用jquery如何获取时间
2016/10/13 Javascript
微信小程序开发教程之增加mixin扩展
2017/08/09 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
Vue 全家桶实现移动端酷狗音乐功能
2018/11/16 Javascript
微信小程序 bindtap 传参的实例代码
2020/02/21 Javascript
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
[56:56]VG vs LGD 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.22
2019/09/05 DOTA
[45:16]完美世界DOTA2联赛循环赛 IO vs FTD BO2第二场 11.05
2020/11/06 DOTA
Python 实现一行输入多个值的方法
2018/04/21 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
2018/04/30 Python
Python产生一个数值范围内的不重复的随机数的实现方法
2019/08/21 Python
分享一个pycharm专业版安装的永久使用方法
2019/09/24 Python
python enumerate内置函数用法总结
2020/01/07 Python
印度最大的旅游网站:MakeMyTrip
2016/10/05 全球购物
全球速卖通俄罗斯站:AliExpress俄罗斯
2019/06/17 全球购物
电子商务网站的创业计划书
2014/01/05 职场文书
DIY手工制作经营店创业计划书
2014/02/01 职场文书
毕业班联欢会主持词
2014/03/27 职场文书
推普周活动总结
2014/08/28 职场文书
教师个人查摆剖析材料
2014/10/14 职场文书
学院党委班子四风问题自查报告及整改措施
2014/10/25 职场文书
2015年世界卫生日活动总结
2015/02/09 职场文书
综合办公室主任岗位职责
2015/04/01 职场文书
2019消防宣传标语!
2019/07/10 职场文书