나는 약간의 문제가있다.Windows에 숨겨진 프로세스가 있습니까?
내 이전 질문에 관한 Slipstreamed SP3 vs. patched SP3과 관련하여 Internet Explorer 프로세스가 시작되었으며 javascript가 포함 된 로컬 디스크에서 간단한 .html 파일을로드하라는 지시가 내려졌습니다. 나머지 큰 채팅/회의 시스템. 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로, 나는 처음에 대해이 개 프로세스를 얻을 창. 나는 이것을 반복해서 실행하고 이전 실행과의 차이점을 처리합니다.
그러나, 과정은 간단하게 시작에서 창 핸들 0을 가지고, 그래서 나는이 그것을 변경 :
foreach (var process in Process.GetProcesses())
{
if (process.ProcessName.ToLower() == "iexplore" &&
process.MainWindowHandle != IntPtr.Zero)
{
result.Add(process);
}
}
을하지만 지금은 윈도우가받은 후에도 전혀 아무것도 선택하지 않음 handle (그리고 예, process.MainWindowHandle은 창을 표시 한 후에 0이 아닌 핸들 값을 갖지만 창을 표시하지 않으면 0으로 유지됩니다.)
그래서 질문은 다음과 같습니다. :이 숨겨진 IExplore.exe 프로세스를 사용하고 이미 창 핸들이 없을 때 자체를 표시하도록 지시하는 방법이 있습니까? 나는 그것을 의심하지만 아마도 누군가 나를 잘못 증명할 수 있습니다.
아니요, 내 백업 계획은 shim IExplore.exe 프로그램을 작성하여 창을 표시하도록 지정한다는 것을 제외하고는 모든 명령 줄 인수를 원래 명령으로 전달합니다. 이것이 해결책일까요?
이것은 전적으로 디버깅 도구입니다. 그런 비열한 솔루션이 제작에 들어갈 방법이 없으므로 지금 바로 shim 옵션을 사용하여 도움이되는지 확인해 보겠습니다. –