最近做了小小的測試,使用python的ctypes來實做windows api的data type
ex.1
1 | typedef struct _CHAR_INFO { |
噹噹噹~mission complete
ex.2
1 | typedef struct _CONSOLE_CURSOR_INFO { |
其實ctypes這模組挺方便的,可以隨意的call用C寫出來的dll檔,如果只是想要用到一點點dll檔,我想自己寫就好了,不需要去用到其它模組,像是如果你要大量的用到windows api那就果斷用pywin32吧:),裡面可幫你寫好一堆的東西呢,畢竟這動作實在是很機械式,有別人幫你種樹,就去乘涼吧,而且它還有個特別的地方是ctype已幫你繞開python的GIL限制~這個就不多解釋了,畢竟我也沒啥碰到。
當然用python去CALL用C寫的dll也有其他目的,通常是效率問題,把效率吃緊的地方給較低階的語言去實做,目前知道有個叫SWIG,可以將很多語言黏在一起,因為小弟也沒用過所以不敢多言