Pregunta

Actualmente estoy tratando de hacer una introspección en una DLL con python. Quiero crear automáticamente una interfaz de prueba gráfica basada en una DLL.

Puedo cargar mi DLL en python con bastante facilidad y llamo a algunas funciones. El principal problema es si llamo " dir " en el objeto sin llamar a ningún método, obtuve el resultado

>>> dir(myLib)
['_FuncPtr', '__class__', '__delattr__', '__dict__', '__doc__',
'__format__', '__getattr__', '__getattribute__', '__getitem__', '__hash__', '__i
nit__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__s
etattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_func_fl
ags_', '_func_restype_', '_handle', '_name']

y cuando llamo manualmente a una función (como " Read_Version ") tengo como resultado de la función dir

>>> dir(myLib)
['Read_Version', '_FuncPtr', '__class__', '__delattr__', '__dict__', '__doc__',
'__format__', '__getattr__', '__getattribute__', '__getitem__', '__hash__', '__i
nit__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__s
etattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_func_fl
ags_', '_func_restype_', '_handle', '_name']

Parece que la introspección funciona solo en la función que ya llamé y esto no es realmente "útil". ;).

¿Tienes otra idea para buscar funciones que están en una DLL? (en python, por supuesto)

Estoy usando Python 2.6 en Windows.

¿Fue útil?

Solución

Hasta donde yo sé, no hay una manera fácil de hacer esto. Debe usar alguna herramienta externa (por ejemplo, link / dump / exports ) o usar un analizador PE / DLL (por ejemplo, pefile ).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top