【发布时间】:2010-05-07 22:05:55
【问题描述】:
我有一个需要在后台运行的程序,当用户连接到 RDP 会话时,它会进行一些环境设置,然后启动一个程序。当程序关闭时,它会做一些内务处理并注销会话。
我目前的做法是让终端服务器启动这个应用程序。这是作为 Windows 窗体应用程序构建的,以防止控制台窗口出现:
public static void Main()
{
//(Snip...) Do some setup work
Process proc = new Process();
//(Snip...) Setup the process
proc.Start();
proc.WaitForExit();
//(Snip...) Do some housecleaning
NativeMethods.ExitWindowsEx(0, 0);
}
我真的很喜欢这个,因为任务栏中没有项目,alt-tab 中也没有任何显示。但是为了做到这一点,我放弃了对void WndProc(ref Message m)之类的功能的访问所以现在我无法收听Windows消息(例如WTS_REMOTE_DISCONNECT或WTS_SESSION_LOGOFF)并且没有用于bool WTSRegisterSessionNotification(IntPtr hWnd, int dwFlags);的句柄我想我的代码更健壮,因此如果用户在关闭程序之前注销或断开会话,它将进行大扫除。
关于如何吃蛋糕和吃蛋糕有什么建议吗?
【问题讨论】:
标签: c# handle message-pump