es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Obtener el título de la ventana de un ID de proceso o un nombre de proceso en Python.

Quiero obtener el título de la ventana de un proceso específico (por ejemplo, Spotify.exe).

def winEnumHandler(hwnd, ctx):
    if win32gui.IsWindowVisible(hwnd):
        print(hex(hwnd), win32gui.GetWindowText(hwnd))

He probado varias versiones diferentes que encontré en internet, pero la mayoría de las soluciones son para la ventana activa, sin embargo, en mi caso no siempre es la ventana activa, así que tengo que buscar por nombre de proceso o ID de proceso.

Entonces, básicamente estoy buscando algo como esto:

titulo = getTitleFromProcessName('Spotify.exe')

y luego, titulo es el título de la ventana correspondiente a la ventana de Spotify.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para obtener el título de la ventana de un proceso específico, como Spotify.exe, puedes seguir los siguientes pasos en Python:

    1. Obtén el identificador del proceso (PID) del proceso deseado utilizando la biblioteca psutil en Python, utilizando el siguiente código:
      import psutil
      
      def obtener_pid(nombre_proceso):
         for proc in psutil.process_iter():
             if proc.name() == nombre_proceso:
                 return proc.pid
         return None
      

      Esta función recibe el nombre del proceso como parámetro y devuelve el PID del proceso correspondiente.

    2. Utiliza la función EnumWindows de WinAPI para enumerar todas las ventanas de nivel superior en el escritorio y encontrar la ventana que pertenece al proceso deseado utilizando el PID. Puedes hacer esto utilizando el siguiente código:

      import win32gui
      import win32process
      import re
      
      def obtener_titulo_ventana(pid):
         def callback(hwnd, hwnd_list):
             if win32gui.IsWindowVisible(hwnd):
                 if win32process.GetWindowThreadProcessId(hwnd)[1] == pid:
                     hwnd_list.append(hwnd)
             return True
      
         hwnd_list = []
         win32gui.EnumWindows(callback, hwnd_list)
      
         if hwnd_list:
             return win32gui.GetWindowText(hwnd_list[0])
         return None
      

      Esta función recibe el PID como parámetro y utiliza la función EnumWindows para iterar sobre todas las ventanas de nivel superior en el escritorio. Para cada ventana, verifica si es visible y si su ID de proceso coincide con el PID deseado. Si se encuentra una coincidencia, devuelve el título de la ventana utilizando la función GetWindowText.

    3. Finalmente, puedes utilizar las dos funciones anteriores para obtener el título de la ventana de Spotify, como se muestra a continuación:

      pid = obtener_pid('Spotify.exe')
      titulo = obtener_titulo_ventana(pid)
      print(titulo)
      

      Este código primero obtiene el PID del proceso de Spotify utilizando la función obtener_pid, y luego utiliza la función obtener_titulo_ventana para obtener el título de la ventana correspondiente. El título se imprime en la consola.

Comments are closed.