【python】自动选课脚本
本帖最后由 Jack 于 2014-12-16 22:16 编辑我针对云南大学选课系统写了一个快速选课的脚本,主要用到了模拟键盘事件和剪切板。
#!/usr/bin/env python
#-*- encoding: gbk -*-
import pyHook#用于键盘监听
import pythoncom
import sys
import os.path
import win32clipboard as w
import win32con
import win32api
import thread
from time import sleep
from ctypes import *
code_file = open("选课代码.txt", 'r')
code = code_file.read().strip("\n")
code_list = code.split('\n')#得到由选课代码组成的列表
def onKeyboardEvent(event):
if str(event.Key)=='Escape':#若输入“Esc”则将所有用到的按键复位并退出
win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)
win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0)
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
sys.exit()
return True
def quiting():
hm = pyHook.HookManager()#键盘监听
hm.KeyDown = onKeyboardEvent
hm.HookKeyboard()
pythoncom.PumpMessages()
def setText(aString):#设置剪切板内容
w.OpenClipboard()
w.EmptyClipboard()
w.SetClipboardData(win32con.CF_TEXT, aString)
w.CloseClipboard()
if __name__=='__main__':
sleep(3)
thread.start_new_thread(quiting,())#用一个进程监听键盘输入
while 1 :
for i in range(0,len(code_list)):
windll.user32.SetCursorPos(335, 236)#改变鼠标位置至输入框前端
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)#鼠标左键复位
setText(code_list)#将第i条代码写入剪切板
win32api.keybd_event(17,0,0,0)#按下Ctrl键
win32api.keybd_event(86,0,0,0)#按下c键
win32api.keybd_event(86,0,win32con.KEYEVENTF_KEYUP,0)#ctrl键复位
win32api.keybd_event(17,0,win32con.KEYEVENTF_KEYUP,0)#c键复位
windll.user32.SetCursorPos(760, 236)#改变鼠标位置至“加入选课单按钮”
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)#按下鼠标左键
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)#鼠标左键复位
sleep(0.1)
win32api.keybd_event(13,0,0,0)#按下Enter键
win32api.keybd_event(13,0,win32con.KEYEVENTF_KEYUP,0)#Enter键复位
windll.user32.SetCursorPos(518, 236)#改变鼠标位置至输入框后端
win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)#按下鼠标左键
sleep(0.1)
原理很直白,就是“代劳”。 原理很直白,就是“代劳”。 0xAA55 发表于 2014-12-18 03:15
原理很直白,就是“代劳”。
手速实在拼不过! 我天好屌,orz
页:
[1]