Окно доступа при отсутствии графического интерфейса

Создание решения для мониторинга ERP в C#, цель состоит в том, чтобы проверить, когда приложение больше не доступно. Единственный способ - открыть его окно; он не открывается и показывает всплывающую ошибку, если это так.

Мой код работает, но после публикации на сервере IIS он больше не работает. Окно не открывается, а ERP, по-видимому, открывается в фоновом режиме (без графического интерфейса). Сервер IIS настроен на использование моей учетной записи пользователя.

Может кто-нибудь объяснить, что я сделал не так или совет как решить эту проблему? Скриншот диспетчера задач:

Мой код:

private static bool IsDown(this NST nstObject)
    {
        bool L_Break_Loop = false;

        Console.WriteLine("Country being processed : " + nstObject.Trigram);

        int L_Launcher_Handle = AutoItX.RunAs("MYUSERID", "COMPANYDOMAIN", "PASSWORD", AutoItX.SW_SHOW, OutputFileLocation + "//" + nstObject.Trigram + ".cmd", "");

        System.IO.File.WriteAllText(OutputFileLocation + "//ProcessNav.txt", "Worked : " + L_Launcher_Handle.ToString());

        AutoItX.WinGetHandle("Microsoft Dynamics NAV"); // Getting Navision splash screen

        while (AutoItX.WinExists("Microsoft Dynamics NAV") == 0)
        {
            AutoItX.WinGetHandle("Microsoft Dynamics NAV");
        }

        DateTime L_DateTime_Window_Appeared = DateTime.Now;

        while (!L_Break_Loop)
        {
            AutoItX.WinGetHandle("Microsoft Dynamics NAV"); // Getting Navision splash screen

            if (DateTime.Now > L_DateTime_Window_Appeared.AddSeconds(60) && AutoItX.WinExists("Role Center") != 1) // If timeout reached + role center doesn't exist
            {
                L_Break_Loop = true;
                break;
            }
            else if (AutoItX.WinExists("Role Center") == 1) // If role center appeared
            {
                L_Break_Loop = true;
                break;
            }
        }

        if (AutoItX.WinExists("Role Center") == 1) // Role Center found
        {
            Close_Window("Role Center");

            Console.WriteLine("NST status : UP");
            return false;
        }
        else if (AutoItX.WinExists("Role Center") != 1) // Role Center not found
        {
            Close_Window("Microsoft Dynamics NAV"); // In case of NST restarting while script running => NAV opens last moment but script doesn't catch it.

            Close_Window("Role Center");

            Close_Window("Select Server"); //Closing the select servers page

            Console.WriteLine("NST status : DOWN");
            return true;
        }

        return false;
    }

0 ответов

Другие вопросы по тегам