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 相关文章推荐
Tornado服务器中绑定域名、虚拟主机的方法
Aug 22 Python
Python import用法以及与from...import的区别
May 28 Python
Python 常用string函数详解
May 30 Python
Python通过future处理并发问题
Oct 17 Python
python中WSGI是什么,Python应用WSGI详解
Nov 24 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
基于python全局设置id 自动化测试元素定位过程解析
Sep 04 Python
django多种支付、并发订单处理实例代码
Dec 13 Python
opencv中图像叠加/图像融合/按位操作的实现
Apr 01 Python
python和go语言的区别是什么
Jul 20 Python
PIP和conda 更换国内安装源的方法步骤
Sep 21 Python
Django实现翻页的示例代码
May 24 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中图片等比缩放的实例
2013/03/24 PHP
浅析php中array_map和array_walk的使用对比
2016/11/20 PHP
php workerman定时任务的实现代码
2018/12/23 PHP
php字符串函数 str类常见用法示例
2020/05/15 PHP
Extjs在exlipse中设置自动提示的方法
2010/04/07 Javascript
js计算两个时间之间天数差的实例代码
2013/11/19 Javascript
js获取url中的参数且参数为中文时通过js解码
2014/03/19 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
详解iframe与frame的区别
2016/01/13 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
jQuery插件Easyui设置datagrid的pageNumber导致两次请求问题的解决方法
2016/08/06 Javascript
微信小程序 css使用技巧总结
2017/01/09 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
jQuery实现对网页节点的增删改查功能示例
2017/09/18 jQuery
jQuery 点击获取验证码按钮及倒计时功能
2018/09/20 jQuery
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
小程序实现可拖动的悬浮按钮
2020/09/07 Javascript
python根据距离和时长计算配速示例
2014/02/16 Python
在Python的struct模块中进行数据格式转换的方法
2015/06/17 Python
python3中int(整型)的使用教程
2017/03/23 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
python爬虫之urllib3的使用示例
2018/07/09 Python
用Cython加速Python到“起飞”(推荐)
2019/08/01 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
Charlotte Tilbury美国官网:英国美妆品牌
2017/10/13 全球购物
哪些情况下不应该使用索引
2015/07/20 面试题
介绍下static、final、abstract区别
2015/01/30 面试题
医院总经理职责
2013/12/26 职场文书
房屋产权证明书
2014/10/15 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
JVM入门之类加载与字节码技术(类加载与类的加载器)
2021/06/15 Java/Android