Дескриптор недопустимого исключения при захвате экрана с помощью Graphics.CopyFromScreen() на удаленном сервере через раC#

Место общения программистов C#
Ответить
Anonymous
 Дескриптор недопустимого исключения при захвате экрана с помощью Graphics.CopyFromScreen() на удаленном сервере через ра

Сообщение Anonymous »

У меня есть автономное приложение C# (EXE), которое выполняет некоторую обработку данных. В конце процесса программа делает снимок экрана, сохраняет изображение (PNG) в локальную папку и завершает работу.
Когда я запускаю эту программу локально, она работает нормально. Обработка данных завершена успешно, снимок экрана сделан, и изображение сохраняется в той же папке, что и этот EXE-файл.
То же самое происходит, когда я запускаю это приложение вручную на удаленном сервере Windows. . Работает отлично.
Однако проблема возникает, когда эта программа запускается как запланированное задание на сервере. Я настраиваю расписание задач Windows для ежедневного выполнения этой программы в определенное время. Но в целях отладки я отключил весь код обработки данных, оставив только код, делающий снимок экрана. Другими словами, программа открывает окно консоли, печатает текст с помощью Console.WriteLine("Hello World"), делает снимок экрана и переходит в Console.ReadLine(), ожидая ввода пользователя, а затем полностью завершает работу. Я запланировал запуск этой программы через минуту после закрытия удаленного сервера.
Именно здесь и возникает проблема. Например, сейчас 10:00 утра. Я запланировал запуск этой программы в 10:01 и закрыл сервер, нажав кнопку «x». Когда я возвращаюсь через пару минут, я вижу открытое окно консоли с текстом «Hello World», и оно ждет моего ввода. Нажимаю клавишу и программа закрывается. Но скриншот не создан.
Смотрите мой код ниже:

Код: Выделить всё

static void Main(string[] args)
{
Console.WriteLine("Hello World");

string filename = Path.Combine(Application.StartupPath, "Screenshot.png");

ScreenCapture(filename);

Console.WriteLine("Press  key to exit");
Console.ReadLine();
}

private static void ScreenCapture(string filename)
{
Rectangle res = Screen.PrimaryScreen.Bounds;
int screenLeft = res.Left;
int screenTop = res.Top;
int screenWidth = res.Width + 384;
int screenHeight = res.Height + 216;

try
{
using (Bitmap bitmap = new Bitmap(screenWidth, screenHeight))
{
using (Graphics g = Graphics.FromImage(bitmap))
{
g.CopyFromScreen(screenLeft, screenTop, 0, 0, bitmap.Size);
}
bitmap.Save(filename, ImageFormat.Png);
}
}
catch (Exception ex)
{
}
}
Заранее спасибо. Я ценю любую помощь!

Подробнее здесь: https://stackoverflow.com/questions/790 ... copyfromsc
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»