python调用大漠插件教程03窗口绑定实例
怎樣利用注冊(cè)好的大漠對(duì)象來綁定窗口?
直接上代碼,根據(jù)代碼分析
from win32com.client import Dispatch
import os
from win32gui import FindWindow
class Operation:
def __init__(self, dm, hwnd):
self.dm = dm
self.hwnd = hwnd
self.dm.Reg('注冊(cè)碼', '')
print(self.dm.Ver())
self.bind()
def bind(self):
self.dm.BindWindowEx(self.hwnd, "normal", "normal", "normal", "", 0)
self.dm.SetSimMode(0)
self.dm.EnableRealKeypad(1)
self.dm.EnableRealMouse(2, 20, 30)
self.dm.SetKeypadDelay("normal", 70)
self.dm.SetClientSize(self.hwnd, 596, 446)
print(self.dm.GetClientSize(self.hwnd))
print('綁定成功')
def regsvr():
try:
dm_1 = Dispatch('dm.dmsoft')
except Exception:
os.system(r'regsvr32 /s %sdm.dll' % os.getcwd())
dm_1 = Dispatch('dm.dmsoft')
print(dm_1.Ver())
return dm_1
if __name__ == '__main__':
window_id = FindWindow('Notepad', None)
dm_main = regsvr()
operation = Operation(dm_main, window_id)
首先想要綁定窗口需要先找到要綁定的窗口,那么怎么找到要綁定的窗口?
這需要用到pywin32庫的Findwindow函數(shù)(python最好使用32位版本,否則會(huì)出現(xiàn)一些不為人知的問題,若64位沒問題,請(qǐng)忽略)(大漠自帶的也有尋找窗口的函數(shù),本文只介紹這個(gè),對(duì)大漠找窗口函數(shù)感興趣的可以自行研究,大同小異)
此函數(shù)尋找窗口有兩個(gè)參數(shù),一個(gè)是窗口類名,另一個(gè)是窗口內(nèi)容,一般只填窗口類名就可以了。如果此類中有很多窗口那就需要用內(nèi)容進(jìn)行篩選。
此函數(shù)的返回值若尋找到窗口就返回窗口句柄,未找到則返回0,如果找到多個(gè)窗口則返回一個(gè)列表,元素為窗口的句柄。
上述代碼主函數(shù)的第一行以記事本為類名尋找了記事本窗口的句柄,即為變量window_id。
主函數(shù)第二行利用regsvr()實(shí)例化了一個(gè)大漠對(duì)象,即為變量dm_main。
主函數(shù)第三行實(shí)例化了一個(gè)自己創(chuàng)建的Operation類,將兩個(gè)需要的參數(shù)都傳給這個(gè)類,實(shí)力后的類為operation。也是這個(gè)博客的重點(diǎn)。
先總體分析一下Operation類,開始時(shí)一個(gè)構(gòu)造函數(shù),隨后是一個(gè)交bind的綁定函數(shù),在構(gòu)造函數(shù)中調(diào)用綁定函數(shù),則在實(shí)例化該類時(shí)就會(huì)執(zhí)行目前該類的所有代碼(屬于python基礎(chǔ),不過多解釋)
其次逐行分析代碼(一目了然的跳過)dm.Reg函數(shù)是大漠插件的付費(fèi)密碼,第一個(gè)填自己的注冊(cè)碼,第二個(gè)填入自己的備注(沒有則不填),此函數(shù)在調(diào)用大漠插件的方法之前必須使用。
隨后是dm.Ver()函數(shù),返回大漠插件的版本,輸出方便查看是否正確(方便調(diào)試)
下面開始講bind()函數(shù)里的方法。
這里基本上都是一些大漠的內(nèi)部函數(shù),至于函數(shù)的功能及用法,在 大漠插件接口說明 中已經(jīng)說的是非常詳細(xì)了,這里主要介紹這幾個(gè)自己寫代碼中常用到的函數(shù),方便大家剛接觸大漠找到重點(diǎn)。
dm.BindWindowEx(self.hwnd, "normal", "normal", "normal", "", 0)綁定窗口函數(shù)。
dm.SetSimMode(0)設(shè)置鼠標(biāo)的前臺(tái)模擬方式,有需求的話可以切換。
dm.EnableRealKeypad(1)設(shè)置鍵盤的仿真,即按下按鍵和放開按鍵的間隔隨機(jī)而定(有函數(shù)作用范圍,現(xiàn)在未講,可以忽略)。
dm.EnableRealMouse(2, 20, 30)設(shè)置鼠標(biāo)的仿真,鼠標(biāo)動(dòng)作模擬真實(shí)操作,帶移動(dòng)軌跡,以及點(diǎn)擊延時(shí)隨機(jī)。
dm.SetKeypadDelay("normal", 70)設(shè)置鍵盤按下放松的隨機(jī)區(qū)間。
dm.SetClientSize(self.hwnd, 596, 446)設(shè)置窗口內(nèi)容區(qū)域大小(什么是窗口內(nèi)容區(qū)?就是除去窗口上面顯示窗口類名和關(guān)閉窗口的條形剩下的區(qū)域)。
dm.GetClientSize(self.hwnd)獲取窗口內(nèi)容區(qū)域大小。
上面是綁定窗口前需要初始化的一些常用函數(shù),如果運(yùn)行成功,輸出了綁定成功說明使用大漠插件的第一步已經(jīng)做到了(如下所示)。
備注:直接復(fù)制代碼需要考慮路徑問題,根據(jù)自己的路徑自行修改,最好是用相對(duì)路徑,把dm.dll放在自己的項(xiàng)目文件夾里。(大漠插件接口說明文檔使用大漠的話完整插件自帶)
附加:如果無法觸發(fā)鍵盤事件或是觸發(fā)鍵盤事件不是綁定的窗口,那就在調(diào)用鍵盤事件之前激活一下窗口(參考SetWindowState函數(shù))
總結(jié)
以上是生活随笔為你收集整理的python调用大漠插件教程03窗口绑定实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Georgia and Bob POJ
- 下一篇: 前端笔记-jquery