2

このコードはdllからのメソッドを示していますか?

from ctypes import *
x = cdll.LoadLibrary("olari.dll")
dir(x)

そうでない場合、Pythonで.dllメソッドをどのように確認できますか?

4

1 に答える 1

2

いいえ、そうではありません。ただし、電話をかけるとキャッシュでき、dirその後に表示されます。

Win32でも、このSOスレッドを確認できます。PEヘッダーを解析する必要があるようです。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>
...
于 2010-01-18T10:34:12.627 に答える