Articles of ctypes

Tipos de Python y punteros de función

Esto está relacionado con mi otra pregunta , pero sentí que debía formularla en una nueva pregunta. Básicamente, FLAC usa punteros de función para las devoluciones de llamada, y para implementar las devoluciones de llamada con ctypes, usa CFUNCTYPE para CFUNCTYPE un prototipo y luego usa la función prototype() para crearlos. El problema que tengo […]

Usando C API de tesseract 3.02 con ctypes y cv2 en python

Estoy tratando de usar Tesseract 3.02 con ctypes y cv2 en python. Tesseract proporciona un conjunto de API de estilo C expuesto a DLL, uno de ellos es el siguiente: TESS_API void TESS_CALL TessBaseAPISetImage(TessBaseAPI* handle, const unsigned char* imagedata, int width, int height, int bytes_per_pixel, int bytes_per_line); Hasta ahora, mi código es el siguiente: tesseract […]

Tipos de Python: copiando los contenidos de la Estructura.

Quiero imitar una pieza de código C en Python con ctypes, el código es algo así como: typedef struct { int x; int y; } point; void copy_point(point *a, point *b) { *a = *b; } En ctypes no es posible hacer lo siguiente: from ctypes import * class Point(Structure): _fields_ = [(“x”, c_int),(“y”, c_int)] […]

¿Cuál es el camino de la dll cargada?

Estoy cargando un dll con ctypes bajo Cygwin con lo siguiente: import ctypes ctypes.cdll.LoadLibrary(‘foo.dll’) ¿Cómo puedo obtener la ruta absoluta de mi dll? El problema es que no tengo absolutamente ninguna pista donde se encuentra la DLL. ¿Puedo relacionarme con lo siguiente para obtener esta información? subprocess.Popen([“which”, lib], stdout=subprocess.PIPE).stdout.read().strip()

Python ctypes keybd_event simula ctrl + alt + delete

Estoy intentando simular ctrl + alt + del con keybd_event pero no hace nada, cosas como ctrl + esc o alt + tab funcionan, pero ctrl + alt + del no funciona. import ctypes ctypes.windll.user32.keybd_event(0x11, 0, 0, 0) #CTRL is down ctypes.windll.user32.keybd_event(0x12, 0, 0, 0) #ALT is down ctypes.windll.user32.keybd_event(0x2E, 0, 0, 0) #DEL is down […]

Pasando una lista de cadenas de Python a Rust

He estado aprendiendo Rust durante aproximadamente dos semanas, y hoy, entré en su FFI. Usé Python para jugar con Rust, usando ctypes y libc. Pasé enteros, cadenas e incluso aprendí a pasar una lista de enteros ( gracias a esta maravillosa respuesta ). Luego, traté de pasar una lista de cadenas (siguiendo el razonamiento detrás […]

forzando a ctypes.cdll.LoadLibrary () a volver a cargar la biblioteca desde el archivo

Tengo el siguiente código import ctypes lib1 = ctypes.cdll.LoadLibrary(“./mylib.so”) # modify mylib.so (code generation and comstacktion) or even delete it lib2 = ctypes.cdll.LoadLibrary(“./mylib.so”) El problema es que lib2 refiere a la biblioteca compartida original, no a la nueva. Si elimino mylib.so entre las llamadas, no obtengo ningún error. Usar ctypes._reset_cache() no ayuda. ¿Cómo puedo indicarle […]

¿Usar Python para enviar pulsaciones de teclas a juegos en Windows?

He estado trabajando con Python en un entorno de Windows y escribí un script para automatizar algunas tareas en un juego conocido. La tarea implica un uso intensivo de las entradas del mouse y del teclado. Sin embargo, dicho script solo tiene un problema: no puede enviar pulsaciones de teclas a la aplicación. He intentado […]

ejecutando código c ++ desde python

Quiero ejecutar un código helloword.cpp que toma algún argumento de la consola analiza esos argumentos y luego imprime “hola mundo” en la consola. Ahora, quiero analizar estos argumentos de un script de python parsearguments.py Así por ejemplo: def parse_arguments: …# some code return arguments Ahora, ¿cómo me comunico entre python y c ++? He estado […]

¿Cómo pasar el puntero de vuelta en ctypes?

No sé mucho sobre ctypes, recientemente comencé a trabajar con él. Tengo una función simple en dll tipo C que devuelve un puntero a la cadena generada dinámicamente. Funciona bien, pero debido a que asigné memoria manualmente a la cadena, debería liberarla después de usarla. Tengo algo como esto: extern “C” char* DLL_EXPORT func(const char* […]