Question

Par exemple, si je travaille sur Visual Studio 2008, je veux les valeurs devenv et 2008 ou 9.

Le numéro de version est très important ...

Était-ce utile?

La solution

Cela va être la ville de PInvoke ...

Vous devrez invoquer les API suivantes dans User32.dll

Win32 :: GetForegroundWindow () in renvoie le HWND de la fenêtre actuellement active.

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

Win32 :: GetWindowThreadProcessId (HWND, LPDWORD) renvoie le PID d'un HWND donné

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

En C #

Process.GetProcessByID () prend le PID pour créer un objet de processus C #

processInstance.MainModule renvoie un ProcessModule auquel FileVersionInfo est attaché.

Autres conseils

Ce projet illustre les deux fonctions dont vous avez besoin: EnumWindows et GetWindowtext

Pouvez-vous clarifier votre question? Voulez-vous dire que vous voulez un programme en cours d'exécution, qui vous donnera des données sur le programme dans la fenêtre active? Ou que vous souhaitiez que votre programme présente sa propre version?

Ce que vous recherchez pour obtenir les informations de toute façon est System.Reflection.Assembly . (Voir les exemples de code dans le lien.)

Comment obtenir l'assembly à partir d'un programme externe? Celui-là je ne suis pas sûr de ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top