У меня есть служба Windows, работающая на клиентской машине. Мне нужно захватить экран клиента и отправить его на сервер через удаленный доступ. Когда я запускаю exe файл, он может захватывать экран и отправлять его на сервер. Но когда я запускаю его как службу, он регистрирует следующую ошибку:
"Ручка недействительна."
Установлен флажок "взаимодействовать с рабочим столом". Код, который я использую для скриншота:
Image bmpScreenshot = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
Graphics gfxScreenshot = Graphics.FromImage(bmpScreenshot);
gfxScreenshot.CopyFromScreen(Screen.PrimaryScreen.Bounds.X, Screen.PrimaryScreen.Bounds.Y, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
return bmpScreenshot;
Что может быть причиной и как я могу это решить?
Службы запускаются в сеансе 0 (с точки зрения Vista), пока остальные приложения не работают.
Вам нужно запустить приложение захвата экрана в сеансе пользователя после входа в систему, используя (например) раздел Run.