2010-11-23 1 views
1

WebBrowserControl의 현재 인스턴스에 대해서만 프록시를 설정하려고합니다. 설명서가 끔찍하지만 내가 wininet.dllInternetSetOption을 호출하면 WebBrowserControl이 첫 번째 매개 변수로 사용하는 내부 브라우저에 IntPtr 핸들을 전달한 다음 메서드가 현재 인스턴스에만 영향을 미칠 것이라고 생각합니다.이 메서드를 사용하여 프록시를 설정할 수 있습니다. http://msdn.microsoft.com/en-us/library/aa385114(v=VS.85).aspx). 그러나 WebBrowserControl은이 핸들에 액세스 할 수있는 방법을 제공하지 않습니다. 나는 인터넷 검색을하고 시간을 보냈다. 그리고 이것은 많은 사람들에게 매우 도움이 될 것 같지만 아무도 그것을 아직 알지 못했다!WebBrowserControl의 AxIWebBrowser2 Handle을 InternetSetOption에서 사용하려면 System .__ ComObject에서 문제 발생

WebBrowserControl에는 처리가 필요한 COM 개체 인 AxIWebBrowser2라는 속성이 있습니다. MS가 이것을 위해 사용하는 인터페이스는 UnsafeNativeMethods.IWebBrowser2이며, 내가 생각하는 것 인 HWND이라는 속성이 있습니다. 그러나 UnsafeNativeMethods.IWebBrowser2internal으로 표시됩니다. WebBrowserControl에서 리플렉션을 사용하면 private AxIWebBrowser2 속성 값을 얻을 수 있지만 형식은 System.__ComObject으로 나타납니다. 이 System.__ComObjectWindows.Forms 어셈블리 내부에 있으므로 IWebBrowser2으로 캐스팅 할 수 없습니다.

AxIWebBrowser2 개체의 HWND 속성에 C#을 사용하여 액세스 할 수 있습니까?

답변

0

Hwnd는 당신이 찾고있는 것을 제공하지 않습니다. 이것은 브라우저 컨트롤의 윈도우 핸들입니다. 무엇을 찾고있는 WinInet HINTERNET 핸들입니다. 내가 아는 한 프로그래밍 방식으로 액세스 할 수있는 방법이 없습니다. 프로세스 전반에 걸쳐 옵션을 설정하고 IntPtr.Zero를 HINTERNET 핸들로 전달하려고 시도 했습니까?

+0

예, 그렇습니다. 하지만 당신이 말했듯이, 그것은 프로세스 차원에서 이루어집니다. 다중 프록시를 사용하기 위해 여러 스레드를 생성 할 수 있어야합니다. 대안은 서로 다른 프록시를 사용하는 여러 프로세스를 생성하는 것이지만 비슷한 일을 시도하고 제대로 작동하지 않는 것 같습니다. 프록시가 글로벌 기준으로 설정된 것으로 보입니다! – hackerhasid