首先,你会想得到CallDLL。你可以下载源代码并编译它,或者如果你安装了ActiveState发布的Python,你可以使用PPM来得到它。对DynWin也同样如此。
我已经让这个压缩文件包括了一个简单的DLL。这个DLL提供了一个叫着ShowMsg的函数,该函数显示一个弹出式消息框。这个函数有如下标示:
extern "C" {
__declspec( dllexport ) void
MsgBox(const char *msg);
}
需要注意的是“extern “C””。这个函数名字不可以损坏,因此你要么直接使用C要么用“extern “C””来申明这个函数。
下面是使用这个函数的Python代码:
from dynwin.windll import *
mod = module('TestDLL')
buf = cstring("test")
mod.MsgBox(buf)
上面Python代码的关键之处是cstring行。它接受Python字符串并把它转换成指向字符缓冲区的指针。用这种方法来扩展Python的缺点是失去了Python优良的错误处理能力(例如例外),其好处是其它编程语言(例如Delphi)可以使用这个扩展,此外,它在某种程度上来说也是跨平台的。