Работа с 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;