Работа с Windows Service и графикой (на примитивном уровне) - C#
Формулировка задачи:
Привет всем.
Написал сервис который каждые 10 секунд добавляет в log файл информацию о текущем времени а также инфу о том что он был запущен либо был завершен.
Захотел решить другую задачу - через определенное время делать принтскрин экрана, создавать файл с именем времени, и сохранять все это. все работает кроме одного - картинка получается пустая, т.е. в этот файл ничего не сохраняется.
В чем может быть проблема? буду благодарен за любую информацию по теме!
в настройках сервиса, ставил галочку - разрешить взаимодействие с рабочим столом. не помогло.
если реализовать тот же функционал ,но только повесив на кнопку в обычном windows forms, то все замечательно работает!
private StreamWriter file; private FileStream fs; private Graphics grfx; private Bitmap bmp; private string temp; //Определяем таймер private System.Timers.Timer timer1; private const string MY_PATH = @"D:\"; private const string EXTENSION = ".bmp"; protected override void OnStart(string[] args) { file = new StreamWriter(new FileStream("D:\\temp.log", System.IO.FileMode.Append)); this.file.WriteLine("MyFirstService стартовал"); this.file.Flush(); //Создаем таймер и выставляем его параметры this.timer1 = new System.Timers.Timer(); this.timer1.Enabled = true; //Интервал 10000мс - 10с. this.timer1.Interval = 10000; this.timer1.Elapsed += new System.Timers.ElapsedEventHandler(this.timer1_Elapsed); this.timer1.AutoReset = true; this.timer1.Start(); } protected override void OnStop() { this.timer1.Stop(); this.file.WriteLine("MyFirstService остановлен"); this.file.Flush(); this.file.Close(); } private void timer1_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { //Записываем время в файл или делаем все, что хотим this.temp = MyFirstService.MY_PATH + DateTime.Now.ToString("d.M.yyyy-HH.mm.ss") + MyFirstService.EXTENSION; this.fs = File.Create(temp); this.fs.Close(); this.bmp = new Bitmap(1280, 800); this.grfx = Graphics.FromImage(bmp); this.grfx.CopyFromScreen(0, 0, 0, 0, new Size(1280, 800)); this.bmp.Save(temp); }
Решение задачи: «Работа с Windows Service и графикой (на примитивном уровне)»
textual
Листинг программы
ShowInTaskbar = false; WindowState = FormWindowState.Minimized;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д