C# - 打开窗口不能正常工作

时间:2012-07-20 13:41:38

标签: c# .net windows

我有一个启动另一个应用程序的系统服务。这个应用程序(用C#编写)在某些时候需要获取所有打开的窗口(应用程序)并列出它们的名称。

我使用了EnumWindow(来自Win32),我使用Process.GetProcesses()process.MainWindowTitle(来自C#)我得到的是:

  

处理:UI0Detect

     

窗口标题:交互式服务检测

如果我手动运行该应用程序,它会给我所有的窗口。但是当系统服务运行应用程序时,我得到的就是这一项服务。

如何让应用程序为我提供正确的活动窗口列表?

谢谢

1 个答案:

答案 0 :(得分:1)

Windows服务不会在同一个"会话中运行"作为一个正常的程序,所以当您的服务启动时,第二个启动的程序也会在特殊会话中启动。您需要使用CreateProcessAsUser并在要监控的用户会话中创建第二个应用程序。

有关详细信息,请参阅编写交互式服务的this MSDN article