C# dll с использованием вызова unmanagedexports из PythonPython

Программы на Python
Anonymous
C# dll с использованием вызова unmanagedexports из Python

Сообщение Anonymous »

Я пытаюсь использовать старую библиотеку, созданную на C# из Python.
код Python

Код: Выделить всё

import ctypes

dll : ctypes.WinDLL = ctypes.windll.LoadLibrary("my.dll")

Name = dll.Name

c_text = ctypes.create_string_buffer(128)
c_text.value = b'Hello World'

Name.argtypes = (ctypes.c_char_p,)
Name.restype = ctypes.c_char_p
result = Name(c_text).decode('utf-8')
Код C#

Код: Выделить всё

[DllExport("Name", CallingConvention = CallingConvention.StdCall)]
private static string Name(string name){
return name
}
Работает хорошо, теперь мой вопрос: когда мне нужно передать intPtr и в Python загрузить изображение с помощью PIL.Image.open().
код С#

Код: Выделить всё

[DllExport("Image", CallingConvention = CallingConvention.StdCall)]
private static string Image(IntPtr ScreenCapture){
try{
img = (Bitmap)Image.FromHbitmap(ScreenCapture);
return "Ok";
}
catch{
return "Error";
}
}
Типы аргументов будут c_void_p? как получить этот c_void_p из изображения?
Я знаю, что intPtr похож на void*, но я понятия не имею, как использовать ctypes.POINTER(ctypes.c_void_p) и PIL.Image.open( ).

Подробнее здесь: https://stackoverflow.com/questions/784 ... rom-python

Вернуться в «Python»