Título: Obtener EXEpath de la ventana activa
Publicado por: bybaal en 17 Abril 2023, 05:37 am
He estado buscando y no logro encontrar la forma de obtener la ruta de la aplicación de la ventana activa, alguien tiene alguna idea de como sería
Título: Re: Obtener EXEpath de la ventana activa
Publicado por: MCKSys Argentina en 17 Abril 2023, 07:07 am
Hola! El primer ejemplo que armé sacado de consultas de Google (notepad debe estar corriendo): using System; using System.Diagnostics; using System.Runtime.InteropServices; namespace test { internal class Program { [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern int GetWindowThreadProcessId(IntPtr handle, out uint processId); public static string GetProcessPath(IntPtr hwnd) { uint pid = 0; GetWindowThreadProcessId(hwnd, out pid); Process proc = Process.GetProcessById((int)pid); return proc.MainModule.FileName.ToString(); } static void Main(string[] args) { Process[] processes = Process.GetProcessesByName("notepad"); foreach (Process p in processes) { IntPtr windowHandle = p.MainWindowHandle; Console.WriteLine(GetProcessPath(windowHandle)); } Console.ReadKey(); } } }
Algo a tener en cuenta es lo bits de tu ejecutable con los bits del ejecutable que quieres localizar. Si creas el tuyo como x86 y el target es x64, no funcionará. Deberás crear el tuyo como x64 para poder acceder a los de procesos de 64 bits. Saludos!
Título: Re: Obtener EXEpath de la ventana activa
Publicado por: bybaal en 17 Abril 2023, 07:40 am
Creo que con el pedazo de código que tengo me puedo explicar mejor Imports System.Runtime.InteropServices Public Class Form1 Private WithEvents tmr As New Timer With {.Interval = 100, .Enabled = True} <DllImport("user32.dll")> Private Shared Function GetForegroundWindow() As IntPtr End Function Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load End Sub Private Sub tmr_Tick(sender As Object, e As EventArgs) Handles tmr.Tick Dim hWnd As IntPtr = GetForegroundWindow() Text = hWnd 'Aquí necesito obtener la ruta de la aplicación que tiene la ventana activa 'usando el hWnd que me devuelve la API GetForegroundWindow 'o de alguna otra manera 'Lo importante es que se obtenga la ruta de la aplicación que tiene la ventana activa End Sub End Class
Título: Re: Obtener EXEpath de la ventana activa
Publicado por: MCKSys Argentina en 17 Abril 2023, 15:43 pm
Hola!
En mi ejemplo, deberías usar la funcion GetProcessPath (fijate que recibe un hWnd y devuelve un string con el path).
Saludos!
|