Экземпляр AWS EC2, доступ запрещен - PullRequest
0 голосов
/ 08 июня 2018

Я запускаю экземпляр сервера Windows 2012 на AWS.

Windows_Server-2012-R2_RTM-English-64Bit-Base-2018.05.09 (ami-3c0f22d7)

Идентификатор экземпляра - i-0cd5e4853062d3e69

В данном случае я запускаю скрипт, который выполняет некоторую автоматизацию (c #), щелчки мыши / нажатия клавиш и т. Д.

Сценарий работает нормально, пока я не решу свернуть / закрыть окно экземпляра.После удаления фокуса с экземпляра на сервере появляется ошибка:

System.ComponentModel.Win32Exception: доступ запрещен

Не вижу логикиэто, так как он должен продолжать работать одинаково, независимо от того, фокусируюсь ли я или даже в данный момент захожу на удаленный рабочий стол, не так ли?

Есть предложения?

Пример кода -

    static public void StayAlive()
    {
        IntPtr hWnd = FindFocusWindow();
        Stopwatch s = new Stopwatch();

        s.Start();
        while (s.Elapsed < TimeSpan.FromSeconds(1))
        {
            SendKeys.SendWait("{LEFT}");
        }
        s.Stop();
        s = new Stopwatch();
        s.Start();
        while (s.Elapsed < TimeSpan.FromSeconds(1))
        {
            SendKeys.SendWait("{RIGHT}");
        }
        s.Stop();

    }

    static private IntPtr FindFocusWindow()
    {
        IntPtr hWnd = IntPtr.Zero;
        //Look for chrome and set to top
        foreach (Process pList in Process.GetProcesses())
        {
            if (pList.MainWindowTitle.Contains("Google Chrome"))
            {
                hWnd = pList.MainWindowHandle;
                ShowWindow(hWnd, 3);
                SetForegroundWindow(hWnd); //set to topmost
                return hWnd;
            }
        }
        return hWnd;

    }

Спасибо, Бен.

1 Ответ

0 голосов
/ 09 июня 2018

Итак ... после копания не смог найти решение, которое работало бы с использованием кода.

Использование метода, предложенного в ссылке ниже, решило мою проблему -

https://stackoverflow.com/a/36190639/7210967

Приветствия, Бен.

...