.net - 如何检测窗口是否可以显示?

标签 .net windows-services

当应用程序作为 Windows 服务(用 .NET 编写)运行时,检测用户是否登录以及用户登录时能够开始显示必要的对话框,或者当用户注销时,可以阻止对话框的显示?

我希望我的措辞正确:)

最佳答案

您根本不应该通过服务执行此操作。首先,默认情况下服务无权访问桌面。您可以在 Vista 之前的 Windows 版本中通过选中服务属性对话框上的“允许服务与桌面交互”复选框来更改此设置,但这是一个非常非常糟糕的主意。

在 Vista 中,服务根本无法与桌面交互。

您假设当时计算机上只有一个交互式用户,但情况并非总是如此。由于终端服务的存在,您可以让多个用户登录到交互式 session 。

您应该做的是创建一个小型客户端程序,该程序在用户登录时启动。该程序将通过某种分布式技术(例如远程处理或 WCF,我推荐后者)与服务交互。根据从服务器接收到的通信,客户端程序可以启动对话框和用户界面元素来与用户交互。

关于.net - 如何检测窗口是否可以显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/466199/

相关文章:

.net - 将 AddressOf 传递给 VB.NET 中的函数以使用 AddHandler

.net - GDI+:如何在任何设备上绘制一英寸长的线?

asp.net - 在隐藏列的 GridView 中隐藏垂直线

proxy - cntlm 服务未运行

c# - 从 UWP 应用程序请求永久访问文件夹

c# - 我无法理解 GroupJoin 在数据库关系中需要它的地方

java - 如果 tomcat 作为 Windows 服务托管,tomcat8.exe 会消耗大量 CPU/内存

windows-services - Windows下如何停止Mercurial的 "hg serve -d"服务?

c# - 如何检索运行 Windows 服务的用户名?

c# - Process.WaitForExit 方法在 Process.Close 后抛出 InvalidOperationException