- UID
- 21
- 精华
- 积分
- 4756
- 威望
- 点
- 宅币
- 个
- 贡献
- 次
- 宅之契约
- 份
- 最后登录
- 1970-1-1
- 在线时间
- 小时
|
本帖最后由 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])#将第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)
复制代码
|
|