2010-08-09 3 views
0

이것을 실행 한 다음 작업 관리자로 가서 iexplore 인스턴스 중 하나를 수동으로 끝내십시오. IE가 여러 프로세스를 사용하고 있기 때문에 아마도 2가 있습니다. 탭이 복구되었다는 오류 팝업 상자가 나타납니다. 그러나 iexplore 자체는 프로세스 설정으로 인해 보이지 않습니다. 따라서 팝업 풍선 도움말 메시지가 나타나지 않을 것이라고 생각합니다. 이 메시지를 표시하기 전에 표시되는지 여부를 확인하지 않는 IE의 잘못입니까 또는 Windows/.NET의 오류가 'Windows'(이 경우 풍선)를 표시하지 못하도록 차단하고 있습니까?누구의 버그인가 - IE 또는 Windows/.NET?

Process process = new Process 
{ 
    StartInfo = 
    { 
    CreateNoWindow = false, 
    FileName = "iexplore.exe", 
    UseShellExecute = true, 
    ErrorDialog = false, 
    WindowStyle = ProcessWindowStyle.Hidden 
    } 
}; 

process.Start(); 

만약 이것이 버그 일 경우, 세계 어디에서 신고합니까? 잇다?

+0

그렇게 생각합니다. IE는 형제 프로세스가 중지되었다는 것을 알아 차리고 추락했다고 가정하고 복구를 실행합니다. – Andrey

+0

죄송합니다. 요점을 놓치 셨습니다. 거품이 무엇인지 압니다. Internet Explorer에 숨김 인수가 있고 Internet Explorer 자체가 숨겨져있을 때 왜 이것이 나타나는지 알 수 없습니다.이 작은 풍선 팝업이 아닙니다. – Chad

답변

1

나는 전혀 놀랍다. 콘솔이 아닌 모드의 앱은 요청 된 WindowStyle을 일상적으로 무시한다. 예를 들어 notepad.exe를 사용해보십시오.

하지만 IE의 결함 일 수 있습니다. Process 클래스는 요청 된 창 스타일을 시작된 프로세스로 전달하는 것 이상의 권한이 없습니다. 프로세스는이 요청을 WinMain()의 nShowCmd() 인수를 통해 가져옵니다.

IE에 대한 피드백 채널이 있습니다. 그러나 그들은 IE9에 대한 보고서 만 받아 들일 것이므로 신청을해야합니다. IE6 덕분에 메일을 싫어하는 것 같아.

+0

흠,이 설정을 무시하는 것이 앱의 선택이라고 말하는 것입니까? WindowStyle 설정으로 더 많은 것을 이해할 수있었습니다. 그러나 CreateNoWindow 옵션은 Windows가 제어하는 ​​것과 비슷하게 들립니다 (예 : 응용 프로그램이 숨겨져 있다는 것을 알지 못합니다). Connect에 등록하는 방법을 살펴 보겠습니다 ...이 버그가 IE9에도 있다고 가정합니다. 메모에서 notepad.exe가 숨겨집니다. – Chad

+0

예, 이것은 IE의 잘못이지 런타임의 오류입니다. 그러나 버그에 관한 한, 이것은 상당히 낮은 우선 순위라고 생각합니다 ... 그것은 실제로 지원되는 시나리오가 아니며, 원하는 것을 올바르게 수행 할 수있는 방법이 있습니다 (내 대답 참조). –

1

올바른 방법을 원할 경우 CoCreateInstance() CLSID_InternetExplorer에 IID_IWebBrowser2으로 interop을 작성해야합니다. 당신은 IWebBrowser2 at pinvoke.net에 대한 interop을 얻을 수 있습니다.

그러면 보이지 않는 IE 인스턴스가 생성되고 IWebBrowser2::put_Visible(VARIANT_TRUE)을 사용하여 나중에 볼 수 있습니다.

+0

이것은 당신이 이것을 많이 알기 때문에 두려워합니다 .--) 정보를 제공해 주셔서 감사합니다. 조금만 더 노력하겠습니다 만, 필요한 것처럼 보입니다. – Chad

+0

나는 독특한 경험이있다. –