Come posso determinare il nome del processo e la versione attuale in C #

Ad esempio se sto lavorando su Visual Studio 2008, voglio i valori devenv e 2008 o 9.

Il numero di versione è molto importante …

Questa sarà la città di PInvoke …

Avrai bisogno di richiamare le seguenti API in User32.dll

Win32 :: GetForegroundWindow () restituisce HWND della finestra correntemente triggers.

///  /// The GetForegroundWindow function returns a handle to the foreground window. ///  [DllImport("user32.dll")] static extern IntPtr GetForegroundWindow(); 

Win32 :: GetWindowThreadProcessId (HWND, LPDWORD) restituisce il PID di un dato HWND

 [DllImport("user32.dll", SetLastError=true)] static extern uint GetWindowThreadProcessId(IntPtr hWnd, out uint lpdwProcessId); 

In C #

Process.GetProcessByID () accetta il PID per creare un object del processo C #

processInstance.MainModule restituisce un ProcessModule con FileVersionInfo allegato.

Questo progetto dimostra le due funzioni necessarie: EnumWindows e GetWindowtext

Puoi chiarire la tua domanda? Vuoi dire che vuoi un programma in esecuzione, che ti dirà i dati sul programma nella finestra triggers? O vuoi che il tuo programma riporti la sua versione?

Quello che stai cercando per ottenere le informazioni in entrambi i casi è System.Reflection.Assembly . (Vedi esempi di codice nel link.)

Come ottenere l’assemblaggio da un programma esterno? Quello di cui non sono sicuro …