我目前正在开发一个包含 WCF 服务、Windows 服务和 WPF 应用程序的项目。Windows 服务与 WCF 通信,在特定情况下,必须启动 WPF 应用程序才能让用户接收消息。(WCF 在远程服务器上,其余的在客户端上)。我在发射时遇到了一些障碍。我让服务将消息写入应用程序日志,以便我可以在此过程中进行一些“调试”。Windows 服务运行以下代码没有问题。
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 应用程序在当前用户的会话或“活动”会话中启动?