這個(gè)假期玩了不少galgame,不過(guò)有些很老的游戲沒(méi)有自動(dòng)運(yùn)行模式,點(diǎn)擊鼠標(biāo)又太傷按鍵了,于是想把滾動(dòng)鼠標(biāo)滾輪映射為點(diǎn)擊鼠標(biāo)。
網(wǎng)上搜了一下,沒(méi)發(fā)現(xiàn)什么現(xiàn)成的軟件,而按鍵精靈又太重量級(jí)了,于是考慮干脆自己用Python寫(xiě)個(gè)算了。
這里需要把PyHook和PyWin32都裝上(建議下exe版,免得安裝時(shí)各種蛋疼)。
翻了翻教程,發(fā)現(xiàn)實(shí)現(xiàn)起來(lái)很簡(jiǎn)單:
# -*- coding: utf-8 -*- import pythoncom, pyHook def OnMouseEvent(event): print 'MessageName:',event.MessageName print 'Message:',event.Message print 'Time:',event.Time print 'Window:',event.Window print 'WindowName:',event.WindowName print 'Position:',event.Position print 'Wheel:',event.Wheel print 'Injected:',event.Injected print '---' # 返回 True 可將事件傳給其它處理程序,否則停止傳播事件 return True # 創(chuàng)建鉤子管理對(duì)象 hm = pyHook.HookManager() # 監(jiān)聽(tīng)所有鼠標(biāo)事件 hm.MouseAll = OnMouseEvent # 等效于hm.SubscribeMouseAll(OnMouseEvent) # 開(kāi)始監(jiān)聽(tīng)鼠標(biāo)事件 hm.HookMouse() # 一直監(jiān)聽(tīng),直到手動(dòng)退出程序 pythoncom.PumpMessages()
這個(gè)例子程序捕捉了所有的鼠標(biāo)事件,實(shí)際上我只需要捕捉向下滾動(dòng)滾輪的事件即可。翻了下文檔,對(duì)應(yīng)的是MouseWheel,之后只要判斷event.Wheel是否為-1即可。
最后就是觸發(fā)鼠標(biāo)點(diǎn)擊了,這就需要用到win32api.mouse_event()了,發(fā)送一個(gè)按下鼠標(biāo)左鍵的事件,再發(fā)送彈起的事件,就完成一次單擊了。
最終代碼如下:
# -*- coding: utf-8 -*- import pythoncom import pyHook import time import win32api import win32con def onMouseWheel(event): if event.Wheel == -1: win32api.mouse_event(win32con.MOUSEEVENTF_LEFTDOWN, 0, 0) time.sleep(0.05) win32api.mouse_event(win32con.MOUSEEVENTF_LEFTUP, 0, 0) return True hm = pyHook.HookManager() hm.MouseWheel = onMouseWheel hm.HookMouse() pythoncom.PumpMessages()
希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com
本文如未解决您的问题请添加抖音号:51dongshi(抖音搜索懂视),直接咨询即可。