Дескриптор недопустимого исключения при захвате экрана с помощью 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 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Черные полосы Android появляются по бокам при захвате экрана
    Anonymous » » в форуме Android
    0 Ответы
    26 Просмотры
    Последнее сообщение Anonymous
  • Увеличение fps при захвате с экрана
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с HDR при захвате экрана Dx11
    Anonymous » » в форуме C#
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Проблемы с HDR при захвате экрана Dx11
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • IOS: Как узнать, дал ли пользователь согласие на оповещение о захвате экрана?
    Anonymous » » в форуме IOS
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous

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