在Windows平臺上,從原來使用C/C++編寫原生EXE程序,到使用Python編寫一些常用腳本程序,成熟的模塊的使用使得編程效率大大提高了。
不過,python模塊雖多,也不可能滿足開發(fā)者的所有需求。而且,模塊為了便于使用,通常都封裝過度,有些功能無法靈活使用,必須直接調(diào)用Windows API來實現(xiàn)。
要完成這一目標(biāo),有兩種辦法,一種是使用C編寫Python擴展模塊,或者就是編寫普通的DLL通過python的ctypes來調(diào)用,但是這樣就部分犧牲掉了Python的快速開發(fā)、免編譯特性。
還好,有一個模塊pywin32可以解決這個問題,它直接包裝了幾乎所有的Windows API,可以方便地從Python直接調(diào)用,該模塊另一大主要功能是通過Python進行COM編程。
該項目是開源的,項目地址是:https://github.com/mhammond/pywin32
安裝時可以直接使用pip執(zhí)行“pip install pywin32”來安裝它。
安裝完畢后,在Python安裝路徑下的Lib\site-packages\win32可以看到所有的API支撐模塊,Lib\site-packages\win32com下則是COM的支撐模塊。
在Lib\site-packages下有一個PyWin32.CHM幫助文件,相信對Windows編程有一定基礎(chǔ)的,看了這個幫助文件就能很快上手。
簡單說,pywin32把Windows API按照功能分了一些大類,每一個大類作為一個模塊。以下是所有的模塊:
mmapfile odbc perfmon servicemanager timer win2kras win32api win32clipboard win32console
win32cred win32crypt win32event win32evtlog win32file win32gui win32help win32inet win32job
win32lz win32net win32pdh win32pipe win32print win32process win32profile win32ras win32security
win32service win32trace win32transaction win32ts win32wnet winxpgui
比如文件類API就在模塊win32file中,進程類API在模塊win32process中。
在使用的時候,按需導(dǎo)入相關(guān)模塊就行了,win32con則定義了所有的常量,幾乎是必不可少的,一些難以分類的API則在模塊win32api中(大部分是kernel32.dll導(dǎo)出的API)。
部分模塊之間還存在一些交叉,比如CreateFile的參數(shù)中用到的GENERIC_READ常量,在win32con中有定義,在win32file中也有定義。
用戶只要大概知道這個是文件API用到的常量,那么不管你寫win32file.GENERIC_READ還是win32con.GENERIC_READ都是可以的。
關(guān)閉句柄用的CloseHandle函數(shù)也是在兩個模塊中都有定義的。
需要注意的是,微軟提供的Wsa系列網(wǎng)絡(luò)API也都在win32file模塊中,因為很多操作系統(tǒng)都是把套接字也用為文件對象來操作的。
如果你不清楚要使用的API在哪個模塊中,那就到幫助文件里搜索一下,一定會給你答案的。
如果你只是對pywin32中如何調(diào)用某個API不熟悉,那么查看Pywin32.CHM就足夠了,如果你對API本身的參數(shù)定義和使用不熟悉,那還得繼續(xù)看MSDN。
下面來寫一個Helloworld作為開始吧:
import win32api import win32con win32api.MessageBox(None,"Hello,pywin32!","pywin32",win32con.MB_OK)
網(wǎng)站標(biāo)題:Windows平臺Python編程必會模塊之pywin32介紹-創(chuàng)新互聯(lián)
鏈接分享:http://aaarwkj.com/article46/jcohg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、商城網(wǎng)站、全網(wǎng)營銷推廣、服務(wù)器托管、App設(shè)計、標(biāo)簽優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容