Как запустить приложение Winforms из windows-сервиса - PullRequest
0 голосов
/ 01 июля 2019

Здравствуйте, я пытаюсь запустить интерактивный процесс - приложение winforms - из службы Windows в текущем сеансе. Я не знаю, как это сделать. Я использую TopShelf, и я попытался запустить процесс, используя хук WhenSessionChanged, предоставленный TopShelf. Я могу получить sessionId

 var exitCode = HostFactory.Run(x => {
                    x.Service<MyService>(s => {
                        s.ConstructUsing((h) => new MyService());
                        s.WhenStarted(t => t.Run());
                        s.WhenStopped(t => t.Stop());
                        s.WhenSessionChanged((anubis, args) => {
                              string winformsPath="D://WinFormsApp/Wf.exe"
                              int sessionId = args.SessionId;
                              Process process = new Process();
                              process.StartInfo = new ProcessStartInfo(winformsPath);
                              process.Start();
                         });
                    });
                    x.RunAsLocalSystem();
                    x.SetServiceName(Constants.ISO.NAME);
                    x.SetDisplayName(Constants.ISO.DISPLAY);
                    x.SetDescription(Constants.ISO.DESCRIPTION);
                });

Я не знаю, что делать с sessionId.
P.S
Я не опубликовал определение MyService, потому что в нашем случае это не важно. Я просто хочу запустить winforms на текущей сессии.

...