У меня небольшая проблема.
В связи с моими предыдущими вопросами о Slipstreamed SP3 и исправленном SP3, мы пришли к выводу, что запущен процесс Internet Explorer, получивший указание загрузить с локального диска простой файл .html, содержащий javascript, который открывает остальную часть более крупного чата/встречи. система. Internet Explorer запускается из клиента Lotus Notes.
К сожалению, все, что мы видим, это то, что процесс IExplore.exe появляется в диспетчере задач, а через несколько секунд снова исчезает.
Если мы попытаемся открыть локальный файл .html, который мы нашли на диске, он выдаст нам эту информационную панель вверху, говорящую нам, что он отключил активное содержимое. Однако это не настоящая проблема. У нас есть другая машина с такими же настройками, но на которой все работает, и загрузка файла .html вручную дает нам ту же ошибку.
Однако, возможно, при запуске IExplore из заметок отображается другое сообщение об ошибке, но поскольку этот процесс должен просто запускать остальную часть системы, а это окно скрыто, мы не можем его увидеть, то есть ошибка сообщение/проблема.
Итак, я подумал, что, возможно, мне следует попробовать создать небольшую программу, которая ожидает запуска IExplore.exe, а затем сразу же показывает окно, чтобы мы могли видеть сообщение об ошибке или что-то в этом роде. По крайней мере, надеюсь, мы сможем это увидеть.
Пока все хорошо, за исключением того, что если я запускаю процесс из своей собственной программы со скрытым окном, дескриптор главного окна равен 0, и поэтому я не могу показать окно в конце концов. Я ожидаю, что этот процесс IExplore.exe, запущенный из Lotus Notes, будет иметь ту же проблему.
Моя программа мониторинга написана на C# и в основном выполняет этот цикл:
foreach (var process in Process.GetProcesses())
{
if (process.ProcessName.ToLower() == "iexplore")
result.Add(process);
}
Это поднимает все процессы IExplore.exe, окна или нет, и с IE8 я получаю 2 процесса для первого окна, как и ожидалось. Я запускаю это снова и снова и обрабатываю отличия от предыдущих запусков.
Однако процесс ненадолго имеет дескриптор окна 0 в начале, поэтому я изменил его на это:
foreach (var process in Process.GetProcesses())
{
if (process.ProcessName.ToLower() == "iexplore" &&
process.MainWindowHandle != IntPtr.Zero)
{
result.Add(process);
}
}
но теперь он вообще ничего не получает, даже после того, как окно получило дескриптор (и да, у process.MainWindowHandle действительно есть ненулевое значение дескриптора после того, как окно было показано, но в случае, когда окно никогда не отображается, он остается равным 0.)
Итак, вопрос: есть ли способ взять этот скрытый процесс IExplore.exe и дать ему указание показать себя, когда у него еще нет дескриптора окна? Я сомневаюсь в этом, но, возможно, кто-то может доказать, что я ошибаюсь.
Если нет, мой план резервного копирования состоит в том, чтобы создать программу-оболочку IExplore.exe, которая перенаправляет все аргументы командной строки исходной, за исключением того, что она указывает, что окно должно быть показано. Будет ли это решением?