При загрузке DLL в Python функция dir показывает свои методы? - PullRequest
2 голосов
/ 18 января 2010

Этот код показывает методы из DLL?

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

если нет, как мы можем увидеть методы .dll в python?

1 Ответ

2 голосов
/ 18 января 2010

Нет, это не так. Но он может кешироваться при звонке и будет показываться в dir после этого.

Вы могли бы взглянуть на эту SO Thread , даже в Win32, кажется, что нужно проанализировать PE Header. Я думаю, что Python нужно сделать аналогичным образом.

UPDATE

Я нашел модуль чтения / записи pefile написанный на python, там вы можете найти экспортированные записи.

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>
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...