我目前正在研究一个包含WCF服务,Windows服务和WPF应用程序的项目。 Windows服务与WCF通信,并且在某些情况下,必须启动WPF应用程序以供用户接收消息。 (WCF在远程服务器上,其余的在客户端上)。发射时我遇到了一些障碍。我有服务将消息写入应用程序日志,以便我可以在某种程度上“调试”。 Windows服务运行下面的代码没有问题。Windows服务启动和Exe
C#代码,Windows服务:
WriteLog.WriteString("PostOffice.MessagesWaiting: Inside, starting up.", EventLogEntryType.Warning);
// Call the WPF Application
var messagingProcess = new Process();
var messageProcessStartInfo = new ProcessStartInfo(@"""C:\GoldenEyeMessages.exe""");
messageProcessStartInfo.CreateNoWindow = false;
messageProcessStartInfo.UseShellExecute = false;
messageProcessStartInfo.FileName = @"""C:\GoldenEyeMessages.exe""";
messageProcessStartInfo.WindowStyle = ProcessWindowStyle.Normal;
messageProcessStartInfo.Verb = "runas";
messageProcessStartInfo.RedirectStandardOutput = true;
messagingProcess.StartInfo = messageProcessStartInfo;
messagingProcess.Start();
StreamReader daStreamReaderMan = messagingProcess.StandardOutput;
string newString = daStreamReaderMan.ReadLine();
WriteLog.WriteString("PostOffice.MessagesWaiting: The Eagle has landed.", EventLogEntryType.Warning);
的WPF应用程序不能在当前用户的会话中执行。相反,我得到一个弹出窗口来查看消息。下面是它的照片:
一旦选择了“查看消息”选项,它当然我切换到不同的会话,然后运行WPF应用程序。
我的问题是,我该如何着手让WPF应用程序在当前用户会话或“活动”会话内启动?
嗨 - “WCF服务”,“Windows服务”和“WPF应用程序”都是完全不同的东西。更重要的是,它们都是完全不同的*种类*的东西。是的,他们都可以互相沟通:有很多方法可以做到这一点。是的,你可以进行设置,以便“事件”(例如,来自Windows服务的消息)可以触发“操作”(甚至可能在用户的桌面上启动.exe)。但是否:Windows服务和WPF服务都存在于与用户桌面完全不同的环境中。我不认为你可以做你想做的事。 – paulsm4 2012-07-18 19:26:34
@ paulsm4:*默认情况下*它们存在于不同的上下文中。人们确实可以授予Windows服务权限与桌面进行交互。这样做并不明智。 – 2012-07-18 19:29:58
@AngieLeigh:现在你有10个重点:-) – 2012-07-18 19:33:10