如何从c#获取进程窗口类名?

时间:2012-09-11 14:52:57

标签: c# process

如何获取某个进程的窗口类名? 我想在c#中实现这一点。

我在c#中尝试了进程类,但我只能得到进程的窗口名称。

由于

2 个答案:

答案 0 :(得分:6)

我认为您的意思是要获取流程的主窗口的类名。

为此,您需要使用MainWindowHandle对象的Process获取主窗口的句柄,然后使用以下interop方法获取类名:

[DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
static extern int GetClassName(IntPtr hWnd, StringBuilder lpClassName, int nMaxCount);

有关示例代码,请参阅pinvoke.net,有关该功能的详细信息,请参阅MSDN

答案 1 :(得分:1)

您也可以使用windows ui automation framework来实现这一目标,而无需进入pinvoke。

        int pidToSearch = 316;
        //Init a condition indicating that you want to search by process id.
        var condition = new PropertyCondition(AutomationElementIdentifiers.ProcessIdProperty, 
            pidToSearch);
        //Find the automation element matching the criteria
        AutomationElement element = AutomationElement.RootElement.FindFirst(
            TreeScope.Children, condition);

        //get the classname
        var className = element.Current.ClassName;