C#에서 현재 집중된 프로세스 이름과 버전을 어떻게 확인할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/117851

  •  02-07-2019
  •  | 
  •  

문제

예를 들어 Visual Studio 2008에서 작업하는 경우 devenv 및 2008 또는 9 값을 원합니다.

버전 번호가 매우 중요합니다.

도움이 되었습니까?

해결책

이것은 PInvoke 도시가 될 것입니다 ...

User32.dll에서 다음 API를 PInvoke해야 합니다.

Win32::GetForegroundWindow()는 현재 활성 창의 HWND를 반환합니다.

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

Win32::GetWindowThreadProcessId(HWND,LPDWORD)는 지정된 HWND의 PID를 반환합니다.

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

C#에서

Process.GetProcessByID()는 PID를 사용하여 C# 프로세스 개체를 만듭니다.

processInstance.MainModule은 FileVersionInfo가 첨부된 ProcessModule을 반환합니다.

다른 팁

이것 프로젝트 필요한 두 가지 기능을 보여줍니다. 열거형Windows 그리고 창텍스트 가져오기

질문을 명확히 할 수 있습니까?활성 창에 있는 프로그램에 대한 데이터를 알려주는 프로그램을 실행하고 싶다는 뜻인가요?아니면 프로그램이 자체 버전을 보고하도록 하시겠습니까?

어느 쪽이든 정보를 얻기 위해 찾고 있는 것은 시스템.반사.어셈블리.(링크의 코드 예제를 참조하세요.)

외부 프로그램에서 어셈블리를 얻는 방법은 무엇입니까?그건 잘 모르겠는데...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top