欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2023-11-23 15:04:40
本文实例讲述了python模拟鼠标拖动操作的方法。分享给大家供大家参考。具体如下: pdf中的书签只有页码,准备把现有书签拖到一个目录中,然后添加自己页签。重复的拖动工作...

本文实例讲述了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程序设计有所帮助。