此代码是否显示来自 dll 的方法?
from ctypes import *
x = cdll.LoadLibrary("olari.dll")
dir(x)
如果没有,我们如何才能看到 python 中的 .dll 方法?
不,它没有。但是它可以在您调用时缓存,然后会显示出来dir
。
你可以看看这个SO Thread,即使在 Win32 中,似乎也需要解析 PE Header。我认为python需要做类似的方式。
更新:
我发现用 python 编写的pefile 读/写模块,在那里你可以找到导出的条目。
for entry in pe.DIRECTORY_ENTRY_IMPORT:
print entry.dll
for imp in entry.imports:
print '\t', hex(imp.address), imp.name
Output
comdlg32.dll
0x10012A0L PageSetupDlgW
0x10012A4L FindTextW
0x10012A8L PrintDlgExW
[snip]
SHELL32.dll
0x1001154L DragFinish
0x1001158L DragQueryFileW
imp.name
将是您正在寻找的那个。您可以在 ctypes 中使用该名称,例如
>>> ctypes.windll.comdlg32.PageSetupDlgW
<_FuncPtr object at 0x00A97210>
>>> ctypes.windll.comdlg32.FindTextW
<_FuncPtr object at 0x00A97288>
...