Pregunta

Escribiendo algunos scripts de prueba en IronPython, quiero verificar si se muestra una ventana o no. Tengo el pid del proceso principal de la aplicación y quiero obtener una lista de títulos de ventana relacionados con el pid.

Estaba tratando de evitar el uso de llamadas a win32api, como FindWindowEx, ya que (que yo sepa) no puede acceder a win32api directamente desde IronPython. ¿Hay alguna manera de hacer esto usando clases .net integradas? La mayoría de las cosas que he encontrado recomienda utilizar win32api, como se muestra a continuación.

. NET (C #): ¿Obtener ventanas secundarias cuando solo tiene un identificador de proceso o PID?

ACTUALIZACIÓN: encontré una solución a lo que estaba tratando de hacer. Responda abajo.

¿Fue útil?

Solución

El siguiente artículo muestra cómo acceder a win32api indirectamente desde IronPython. Utiliza el método CSharpCodeProvider CompileAssemblyFromSource para compilar un conjunto en la memoria a partir de la cadena de código fuente C # suministrada. IronPython puede importar el ensamblaje.

Compilación dinámica de C # de IronPython

Otros consejos

A partir de IronPython 2.6, se admite el módulo ctypes . Este módulo proporciona tipos de datos compatibles con C y permite funciones de llamada en DLL. Ejemplo rápido:

import ctypes
buffer = ctypes.create_string_buffer(100)
ctypes.windll.kernel32.GetWindowsDirectoryA(buffer, len(buffer))
print buffer.value

Es como preguntar si puedes nadar sin entrar al agua. Si necesita información de Windows, la única opción es usar win32api. Hay muchos ejemplos para encontrar cómo hacerlo.

Si no te gusta esta respuesta, solo deja un comentario en tu pregunta y la eliminaré, por lo que tu pregunta permanecerá en la lista de preguntas sin respuesta.

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