2010-01-08 45 views
5

Tengo una aplicación que quiero ejecutar en segundo plano. Quiero obtener el nombre del ejecutable, por ejemplo IExplorer.exe. He jugado con el siguiente código:C# obtener información sobre la ventana activa actual

[DllImport("user32.dll")] 
private static extern IntPtr GetForegroundWindow(); 

[DllImport("user32.dll")] 
private static extern int GetWindowText(IntPtr hWnd, StringBuilder text, int count); 

public static void Main() 
{ 
    int chars = 256; 
    StringBuilder buff = new StringBuilder(chars); 
    while (true) 
    { 
     // Obtain the handle of the active window. 
     IntPtr handle = GetForegroundWindow(); 

     // Update the controls. 
     if (GetWindowText(handle, buff, chars) > 0) 
     { 
      Console.WriteLine(buff.ToString()); 
      Console.WriteLine(handle.ToString()); 
     } 
     Thread.Sleep(1000); 
    } 
} 

Eso solo me da el título de la ventana y el ID del identificador. Quiero obtener el nombre del ejecutable (y tal vez más información).

¿Cómo logro eso?

+0

mirada a la última respuesta de esta pregunta en stackOverflow: http://stackoverflow.com/questions/7268302/get-the-titles-of-all-open-windows/31517889#31517889 – Godvicien

Respuesta

7

Creo que quieres "GetWindowModuleFileName()" en lugar de GetWindowText se pasa en el hwnd, por lo que aún necesitará la llamada a GetForegroundWindow()

+0

Ca uso una evento para obtener el título de la pantalla, es decir, cuando el usuario cambia el foco de la pantalla debe disparar @ – CodeIt

2

Una rápida búsqueda en Google nos lleva a un ejemplo como C-Sharpcorner article

+2

Y aunque este enlace puede Responda la pregunta, es mejor incluir las partes esenciales de la respuesta aquí y proporcionar el enlace de referencia. Las respuestas de solo enlace pueden dejar de ser válidas si la página vinculada cambia. – Joel

Cuestiones relacionadas