Здравствуйте, я пытаюсь запустить интерактивный процесс - приложение 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 на текущей сессии.