Browser control + использование прокси
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 04.03.03 10:18
Оценка: 33 (4)
Собственно, иногда какая-нибудь закавыка в работе способствует нахождению интересного решения... Так было и в этот раз: надо было в программе, которая хостит IE, переключать настройки прокси-сервера, не трогая глобальных настроек IE. Поискав в сети, нашел и модифицировал под С++ следующий код:

Не забудьте подключить к проекту urlmon.lib!


//---------------------------------------------------------------------------
#include <urlmon.h>
#include <wininet.h>
#include <string>
//---------------------------------------------------------------------------
void SetProxyInfo(
                    const std::string& ProxyAddress
                  , long ProxyPort
                  , const std::string& ProxyLogin = ""
                  , const std::string& ProxyPassword = ""
                 )
{
 INTERNET_PROXY_INFO ipi;
 ipi.lpszProxyBypass = NULL;
 
 char strPort[33] = {0};
 ltoa(ProxyPort,strPort,10);

 if( ProxyAddress.empty() )
  {
    ipi.dwAccessType = INTERNET_OPEN_TYPE_DIRECT;
    ipi.lpszProxy = NULL;
  }
 else
  {
     std::string Proxy;
     if( !ProxyLogin.empty() )
         Proxy = ProxyLogin + ":" + ProxyPassword + "@";

     Proxy = Proxy + ProxyAddress + ":" + std::string(strPort);

     ipi.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
     ipi.lpszProxy = Proxy.c_str();


  }

 UrlMkSetSessionOption(INTERNET_OPTION_PROXY,&ipi,sizeof(INTERNET_PROXY_INFO),0);
}
//---------------------------------------------------------------------------



Как использовать:

1. Из любого места программы.
2. Сколько угодно раз.
3. Для установки настроек прокси:

SetProxyInfo("proxy.ip.or.string",1234);


4. Для отмены установок прокси:

 SetProxyInfo("",0);


Все.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.