jaww

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

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

1. Python代码:

  1 #
  2 # _*_ coding:UTF-8 _*_
  3 __author__ = \'wp\'
  4 import win32api
  5 import win32con
  6 import win32gui
  7 from ctypes import *
  8 import time
  9 SW = 1377
 10 SH = 768
 11 VK_CODE = {
 12     \'backspace\':0x08,
 13     \'tab\':0x09,
 14     \'clear\':0x0C,
 15     \'enter\':0x0D,
 16     \'shift\':0x10,
 17     \'ctrl\':0x11,
 18     \'alt\':0x12,
 19     \'pause\':0x13,
 20     \'caps_lock\':0x14,
 21     \'esc\':0x1B,
 22     \'spacebar\':0x20,
 23     \'page_up\':0x21,
 24     \'page_down\':0x22,
 25     \'end\':0x23,
 26     \'home\':0x24,
 27     \'left_arrow\':0x25,
 28     \'up_arrow\':0x26,
 29     \'right_arrow\':0x27,
 30     \'down_arrow\':0x28,
 31     \'select\':0x29,
 32     \'print\':0x2A,
 33     \'execute\':0x2B,
 34     \'print_screen\':0x2C,
 35     \'ins\':0x2D,
 36     \'del\':0x2E,
 37     \'help\':0x2F,
 38     \'0\':0x30,
 39     \'1\':0x31,
 40     \'2\':0x32,
 41     \'3\':0x33,
 42     \'4\':0x34,
 43     \'5\':0x35,
 44     \'6\':0x36,
 45     \'7\':0x37,
 46     \'8\':0x38,
 47     \'9\':0x39,
 48     \'a\':0x41,
 49     \'b\':0x42,
 50     \'c\':0x43,
 51     \'d\':0x44,
 52     \'e\':0x45,
 53     \'f\':0x46,
 54     \'g\':0x47,
 55     \'h\':0x48,
 56     \'i\':0x49,
 57     \'j\':0x4A,
 58     \'k\':0x4B,
 59     \'l\':0x4C,
 60     \'m\':0x4D,
 61     \'n\':0x4E,
 62     \'o\':0x4F,
 63     \'p\':0x50,
 64     \'q\':0x51,
 65     \'r\':0x52,
 66     \'s\':0x53,
 67     \'t\':0x54,
 68     \'u\':0x55,
 69     \'v\':0x56,
 70     \'w\':0x57,
 71     \'x\':0x58,
 72     \'y\':0x59,
 73     \'z\':0x5A,
 74     \'numpad_0\':0x60,
 75     \'numpad_1\':0x61,
 76     \'numpad_2\':0x62,
 77     \'numpad_3\':0x63,
 78     \'numpad_4\':0x64,
 79     \'numpad_5\':0x65,
 80     \'numpad_6\':0x66,
 81     \'numpad_7\':0x67,
 82     \'numpad_8\':0x68,
 83     \'numpad_9\':0x69,
 84     \'multiply_key\':0x6A,
 85     \'add_key\':0x6B,
 86     \'separator_key\':0x6C,
 87     \'subtract_key\':0x6D,
 88     \'decimal_key\':0x6E,
 89     \'divide_key\':0x6F,
 90     \'F1\':0x70,
 91     \'F2\':0x71,
 92     \'F3\':0x72,
 93     \'F4\':0x73,
 94     \'F5\':0x74,
 95     \'F6\':0x75,
 96     \'F7\':0x76,
 97     \'F8\':0x77,
 98     \'F9\':0x78,
 99     \'F10\':0x79,
100     \'F11\':0x7A,
101     \'F12\':0x7B,
102     \'F13\':0x7C,
103     \'F14\':0x7D,
104     \'F15\':0x7E,
105     \'F16\':0x7F,
106     \'F17\':0x80,
107     \'F18\':0x81,
108     \'F19\':0x82,
109     \'F20\':0x83,
110     \'F21\':0x84,
111     \'F22\':0x85,
112     \'F23\':0x86,
113     \'F24\':0x87,
114     \'num_lock\':0x90,
115     \'scroll_lock\':0x91,
116     \'left_shift\':0xA0,
117     \'right_shift \':0xA1,
118     \'left_control\':0xA2,
119     \'right_control\':0xA3,
120     \'left_menu\':0xA4,
121     \'right_menu\':0xA5,
122     \'browser_back\':0xA6,
123     \'browser_forward\':0xA7,
124     \'browser_refresh\':0xA8,
125     \'browser_stop\':0xA9,
126     \'browser_search\':0xAA,
127     \'browser_favorites\':0xAB,
128     \'browser_start_and_home\':0xAC,
129     \'volume_mute\':0xAD,
130     \'volume_Down\':0xAE,
131     \'volume_up\':0xAF,
132     \'next_track\':0xB0,
133     \'previous_track\':0xB1,
134     \'stop_media\':0xB2,
135     \'play/pause_media\':0xB3,
136     \'start_mail\':0xB4,
137     \'select_media\':0xB5,
138     \'start_application_1\':0xB6,
139     \'start_application_2\':0xB7,
140     \'attn_key\':0xF6,
141     \'crsel_key\':0xF7,
142     \'exsel_key\':0xF8,
143     \'play_key\':0xFA,
144     \'zoom_key\':0xFB,
145     \'clear_key\':0xFE,
146     \'+\':0xBB,
147     \',\':0xBC,
148     \'-\':0xBD,
149     \'.\':0xBE,
150     \'/\':0xBF,
151     \'`\':0xC0,
152     \';\':0xBA,
153     \'[\':0xDB,
154     \'\\\':0xDC,
155     \']\':0xDD,
156     "\'":0xDE,
157     \'`\':0xC0}
158 class POINT(Structure):
159     _fields_ = [("x", c_ulong),("y", c_ulong)]
160 def get_mouse_point():
161     po = POINT()
162     windll.user32.GetCursorPos(byref(po))
163     return int(po.x), int(po.y)
164 def mouse_click(x=None,y=None):
165     if not x is None and not y is None:
166         mouse_move(x,y)
167         time.sleep(0.05)
168     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
169     time.sleep(0.05)
170     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
171 def mouse_dclick(x=None,y=None):
172     if not x is None and not y is None:
173         mouse_move(x,y)
174         time.sleep(0.05)
175     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
176     time.sleep(0.05)
177     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
178     time.sleep(0.05)
179     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
180     time.sleep(0.05)
181     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
182 def mouse_move(x,y):
183     windll.user32.SetCursorPos(x, y)
184 def mouse_absolute(x,y,x2,y2):
185     windll.user32.SetCursorPos(x, y)    #鼠标移动到  
186     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)    #左键按下
187     time.sleep(0.2)
188     mw = int(x2 * 65535 / SW) 
189     mh = int(y2 * 65535 / SH)
190     win32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE + win32con.MOUSEEVENTF_MOVE, mw, mh, 0, 0)    
191     time.sleep(0.2)
192     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
193 def key_input(str=\'\'):
194     for c in str:
195         win32api.keybd_event(VK_CODE[c],0,0,0)
196         win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0)
197         time.sleep(0.01)
198 def t0():
199     pass  #do nothing 
200 def t2():
201     mouse_click(800,200)
202     for c in \'hello\':
203         win32api.keybd_event(65,0,0,0) #a键位码是86
204         win32api.keybd_event(65,0,win32con.KEYEVENTF_KEYUP,0)
205     #print get_mouse_point()
206 def t1():
207     #mouse_move(1024,470)aa
208     #time.sleep(0.05)
209     #mouse_dclick()HELLO
210     mouse_dclick(1024,470)
211 def t3():
212     mouse_click(1024,470)
213     str = \'hello\'
214     for c in str:
215         win32api.keybd_event(VK_CODE[c],0,0,0) #a键位码是86
216         win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0)
217         time.sleep(0.01)
218 def t4():
219     mouse_click(900,300)
220     str = \'hello\'
221     key_input(str)
222 def t5():
223     #拖动pdf中的书签
224     po = POINT()
225     windll.user32.GetCursorPos(byref(po))
226     j = 50       #操作次数
227     x = 766     #x
228     y = 500     #y
229     n = 10       #上移10
230     for i in range(0,j):
231         mouse_absolute(x,y,x,y-n)
232         #windll.user32.SetCursorPos(po.x, po.y)
233         mouse_click(po.x, po.y)
234         print(str(j-i))
235 if __name__ == "__main__":
236     t5()    #move pdf bookmark
237     #t4()
238     #t3()
239     #t2()
240     #t1()
241     #t0()

2. mouse.py文件

  1 #
  2 # _*_ coding:UTF-8 _*_
  3 __author__ = \'wp\'
  4 import win32api
  5 import win32con
  6 import win32gui
  7 from ctypes import *
  8 import time
  9 SW = 1377
 10 SH = 768
 11 VK_CODE = {
 12     \'backspace\':0x08,
 13     \'tab\':0x09,
 14     \'clear\':0x0C,
 15     \'enter\':0x0D,
 16     \'shift\':0x10,
 17     \'ctrl\':0x11,
 18     \'alt\':0x12,
 19     \'pause\':0x13,
 20     \'caps_lock\':0x14,
 21     \'esc\':0x1B,
 22     \'spacebar\':0x20,
 23     \'page_up\':0x21,
 24     \'page_down\':0x22,
 25     \'end\':0x23,
 26     \'home\':0x24,
 27     \'left_arrow\':0x25,
 28     \'up_arrow\':0x26,
 29     \'right_arrow\':0x27,
 30     \'down_arrow\':0x28,
 31     \'select\':0x29,
 32     \'print\':0x2A,
 33     \'execute\':0x2B,
 34     \'print_screen\':0x2C,
 35     \'ins\':0x2D,
 36     \'del\':0x2E,
 37     \'help\':0x2F,
 38     \'0\':0x30,
 39     \'1\':0x31,
 40     \'2\':0x32,
 41     \'3\':0x33,
 42     \'4\':0x34,
 43     \'5\':0x35,
 44     \'6\':0x36,
 45     \'7\':0x37,
 46     \'8\':0x38,
 47     \'9\':0x39,
 48     \'a\':0x41,
 49     \'b\':0x42,
 50     \'c\':0x43,
 51     \'d\':0x44,
 52     \'e\':0x45,
 53     \'f\':0x46,
 54     \'g\':0x47,
 55     \'h\':0x48,
 56     \'i\':0x49,
 57     \'j\':0x4A,
 58     \'k\':0x4B,
 59     \'l\':0x4C,
 60     \'m\':0x4D,
 61     \'n\':0x4E,
 62     \'o\':0x4F,
 63     \'p\':0x50,
 64     \'q\':0x51,
 65     \'r\':0x52,
 66     \'s\':0x53,
 67     \'t\':0x54,
 68     \'u\':0x55,
 69     \'v\':0x56,
 70     \'w\':0x57,
 71     \'x\':0x58,
 72     \'y\':0x59,
 73     \'z\':0x5A,
 74     \'numpad_0\':0x60,
 75     \'numpad_1\':0x61,
 76     \'numpad_2\':0x62,
 77     \'numpad_3\':0x63,
 78     \'numpad_4\':0x64,
 79     \'numpad_5\':0x65,
 80     \'numpad_6\':0x66,
 81     \'numpad_7\':0x67,
 82     \'numpad_8\':0x68,
 83     \'numpad_9\':0x69,
 84     \'multiply_key\':0x6A,
 85     \'add_key\':0x6B,
 86     \'separator_key\':0x6C,
 87     \'subtract_key\':0x6D,
 88     \'decimal_key\':0x6E,
 89     \'divide_key\':0x6F,
 90     \'F1\':0x70,
 91     \'F2\':0x71,
 92     \'F3\':0x72,
 93     \'F4\':0x73,
 94     \'F5\':0x74,
 95     \'F6\':0x75,
 96     \'F7\':0x76,
 97     \'F8\':0x77,
 98     \'F9\':0x78,
 99     \'F10\':0x79,
100     \'F11\':0x7A,
101     \'F12\':0x7B,
102     \'F13\':0x7C,
103     \'F14\':0x7D,
104     \'F15\':0x7E,
105     \'F16\':0x7F,
106     \'F17\':0x80,
107     \'F18\':0x81,
108     \'F19\':0x82,
109     \'F20\':0x83,
110     \'F21\':0x84,
111     \'F22\':0x85,
112     \'F23\':0x86,
113     \'F24\':0x87,
114     \'num_lock\':0x90,
115     \'scroll_lock\':0x91,
116     \'left_shift\':0xA0,
117     \'right_shift \':0xA1,
118     \'left_control\':0xA2,
119     \'right_control\':0xA3,
120     \'left_menu\':0xA4,
121     \'right_menu\':0xA5,
122     \'browser_back\':0xA6,
123     \'browser_forward\':0xA7,
124     \'browser_refresh\':0xA8,
125     \'browser_stop\':0xA9,
126     \'browser_search\':0xAA,
127     \'browser_favorites\':0xAB,
128     \'browser_start_and_home\':0xAC,
129     \'volume_mute\':0xAD,
130     \'volume_Down\':0xAE,
131     \'volume_up\':0xAF,
132     \'next_track\':0xB0,
133     \'previous_track\':0xB1,
134     \'stop_media\':0xB2,
135     \'play/pause_media\':0xB3,
136     \'start_mail\':0xB4,
137     \'select_media\':0xB5,
138     \'start_application_1\':0xB6,
139     \'start_application_2\':0xB7,
140     \'attn_key\':0xF6,
141     \'crsel_key\':0xF7,
142     \'exsel_key\':0xF8,
143     \'play_key\':0xFA,
144     \'zoom_key\':0xFB,
145     \'clear_key\':0xFE,
146     \'+\':0xBB,
147     \',\':0xBC,
148     \'-\':0xBD,
149     \'.\':0xBE,
150     \'/\':0xBF,
151     \'`\':0xC0,
152     \';\':0xBA,
153     \'[\':0xDB,
154     \'\\\':0xDC,
155     \']\':0xDD,
156     "\'":0xDE,
157     \'`\':0xC0}
158 class POINT(Structure):
159     _fields_ = [("x", c_ulong),("y", c_ulong)]
160 def get_mouse_point():
161     po = POINT()
162     windll.user32.GetCursorPos(byref(po))
163     return int(po.x), int(po.y)
164 def mouse_click(x=None,y=None):
165     if not x is None and not y is None:
166         mouse_move(x,y)
167         time.sleep(0.05)
168     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
169     time.sleep(0.05)
170     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
171 def mouse_dclick(x=None,y=None):
172     if not x is None and not y is None:
173         mouse_move(x,y)
174         time.sleep(0.05)
175     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
176     time.sleep(0.05)
177     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
178     time.sleep(0.05)
179     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
180     time.sleep(0.05)
181     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
182 def mouse_move(x,y):
183     windll.user32.SetCursorPos(x, y)
184 def mouse_absolute(x,y,x2,y2):
185     windll.user32.SetCursorPos(x, y)    #鼠标移动到  
186     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)    #左键按下
187     time.sleep(0.2)
188     mw = int(x2 * 65535 / SW) 
189     mh = int(y2 * 65535 / SH)
190     win32api.mouse_event(win32con.MOUSEEVENTF_ABSOLUTE + win32con.MOUSEEVENTF_MOVE, mw, mh, 0, 0)    
191     time.sleep(0.2)
192     win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
193 def key_input(str=\'\'):
194     for c in str:
195         win32api.keybd_event(VK_CODE[c],0,0,0)
196         win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0)
197         time.sleep(0.01)
198 def t0():
199     pass  #do nothing 
200 def t2():
201     mouse_click(800,200)
202     for c in \'hello\':
203         win32api.keybd_event(65,0,0,0) #a键位码是86
204         win32api.keybd_event(65,0,win32con.KEYEVENTF_KEYUP,0)
205     #print get_mouse_point()
206 def t1():
207     #mouse_move(1024,470)aa
208     #time.sleep(0.05)
209     #mouse_dclick()HELLO
210     mouse_dclick(1024,470)
211 def t3():
212     mouse_click(1024,470)
213     str = \'hello\'
214     for c in str:
215         win32api.keybd_event(VK_CODE[c],0,0,0) #a键位码是86
216         win32api.keybd_event(VK_CODE[c],0,win32con.KEYEVENTF_KEYUP,0)
217         time.sleep(0.01)
218 def t4():
219     mouse_click(900,300)
220     str = \'hello\'
221     key_input(str)
222 def t5():
223     #拖动pdf中的书签
224     po = POINT()
225     windll.user32.GetCursorPos(byref(po))
226     j = 50       #操作次数
227     x = 766     #x
228     y = 500     #y
229     n = 10       #上移10
230     for i in range(0,j):
231         mouse_absolute(x,y,x,y-n)
232         #windll.user32.SetCursorPos(po.x, po.y)
233         mouse_click(po.x, po.y)
234         print(str(j-i))
235 if __name__ == "__main__":
236     t5()    #move pdf bookmark
237     #t4()
238     #t3()
239     #t2()
240     #t1()
241     #t0()

3. 运行效果如下:

 

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

分类:

技术点:

相关文章: