2010-08-13 2 views
1

wininet에서 프록시 사용자 이름과 암호를 설정하는 데 문제가 있습니다. "12018"wininet에서 프록시 설정을 지정하십시오.

[DllImport("wininet.dll", SetLastError = true)] 
    private static extern bool InternetSetOption(IntPtr hInternet, int dwOption, IntPtr lpBuffer, int lpdwBufferLength); 

private void RefreshIESettings(string strProxy,string proxyUsername,string proxyPassword) { 

const int INTERNET_OPTION_PROXY = 38; 
const int INTERNET_OPEN_TYPE_PROXY = 3; 
const int INTERNET_OPTION_PROXY_USERNAME = 43; 
const int INTERNET_OPTION_PROXY_PASSWORD = 44; 

IntPtr username = Marshal.StringToHGlobalAnsi(proxyUsername); 
IntPtr password = Marshal.StringToHGlobalAnsi(proxyPassword); 
INTERNET_PROXY_INFO struct_IPI; 
struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY; 

struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy); 
struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local"); 

IntPtr intptrStruct = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI)); 
Marshal.StructureToPtr(struct_IPI, intptrStruct, true); 
bool iReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, Marshal.SizeOf(struct_IPI)); 

Marshal.GetNativeVariantForObject(proxyUsername, username); 
Marshal.GetNativeVariantForObject(proxyPassword, password); 
bool resultF = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY_USERNAME, username, proxyUsername.Length); 
var errorF = Marshal.GetLastWin32Error(); 

//-- Set Proxy Password 
bool resultG = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY_PASSWORD, password, proxyPassword.Length + 1); 
var errorG = Marshal.GetLastWin32Error(); 

답변

0

프록시 사용자 이름과 암호 옵션이 InternetOpen 호출에서 유효한 HINTERNET 핸들을 필요로

벨로우즈 코드는 프록시를 설정하지만, 사용자 이름과 비밀번호 오류 코드와 함께 실패, 뭔가 내가하지 않은 웹 브라우저 컨트롤에서 추출 할 수있었습니다.

궁극적으로 사용자 이름, 암호 및 ok 요소를 찾을 때까지 win32 WM_INITDIALOG 메시지를 통과시켜야합니다. 제공된 자격 증명으로 자동 채우기를 한 다음 제출하십시오.

매우 hackish하지만 작동합니다. 이 특정 프록시 자격 증명 요청을 실행하려면 IAuthenticate.Authenticate 함수를 가져올 수 없습니다. 기본 Windows 인증 프롬프트에서만 호출됩니다.

은 참조를 위해 다음을 참조하십시오 :

Set Proxy Credential in Web Browser Control

How to set a proxy for Webbrowser Control without effecting the SYSTEM/IE proxy

관련 문제