如何确定 C# 中当前关注的进程名称和版本
例如,如果我正在使用 Visual Studio 2008,我需要值 devenv 和 2008 或 9。
版本号非常重要......
For example if I'm working on Visual Studio 2008, I want the values devenv and 2008 or 9.
The version number is very important...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
此项目演示了您需要的两个函数:EnumWindows 和 GetWindowtext
This project demonstrates the two functions you need: EnumWindows and GetWindowtext
你能澄清你的问题吗? 您的意思是您想要一个程序运行,它会告诉您有关活动窗口中的程序的数据吗? 或者您希望您的程序报告其自己的版本?
您正在寻找以任何方式获取信息的 系统.Reflection.Assembly。 (请参阅链接中的代码示例。)
如何从外部程序获取程序集? 那个我不太确定...
Can you clarify your question? Do you mean you want a program running, which will tell you data about the program in the active window? Or that you want your program to report out its own version?
What you're looking for to get the information either way is System.Reflection.Assembly. (See code examples in the link.)
How to get the assembly from an external program? That one I'm not sure about...
这将是 PInvoke 城市...
您需要 PInvoke User32.dll
Win32::GetForegroundWindow() 中的以下 API,以返回当前活动窗口的 HWND。
Win32::GetWindowThreadProcessId(HWND,LPDWORD) 返回给定 HWND 的 PID
在 C#
Process.GetProcessByID() 中使用 PID 创建 C# 进程对象
processInstance.MainModule 返回附加了 FileVersionInfo 的 ProcessModule。
This is going to be PInvoke city...
You'll need to PInvoke the following API's in User32.dll
Win32::GetForegroundWindow() in returns the HWND of the currently active window.
Win32::GetWindowThreadProcessId(HWND,LPDWORD) returns the PID of a given HWND
In C#
Process.GetProcessByID() takes the PID to create a C# process object
processInstance.MainModule returns a ProcessModule with FileVersionInfo attached.