Сразу скажу, что эта статья - маленькая
рекомендация тем, кто хочет реализовать возможность работы TWebBrowser в своей
программе с настройками Proxy , которые отличаются от стандартных.
В один прекрасный день мне понадобилось
в программе периодически менять Proxy и при этом пользоваться всем, что
предоставляет IE. Лучший и единственный выбор - TwebBrowser. При близком
знакомстве с ним стало понятно, что через Proxy он работать не может (вернее
может, но берет настройки из "Свойств обозревателя"). Перспектива постоянно
менять настройки реестра меня не прельщала. И как назло ни в одной крупной
конференции не было даже упоминания о возможности настройки Proxy в ходе
выполнения программы кроме изменения реестра (может плохо искал). Перерыв
Fido-архивы и конференции Инета накаткнулся на win-функцию UrlMkSetSessionOption.
Вот к чему привели мои изыскания :
....
uses ... urlmon, wininet ...
....
var PIInfo : PInternetProxyInfo;
...
New (PIInfo) ;
PIInfo^.dwAccessType := INTERNET_OPEN_TYPE_PROXY ;
// Изменение настроек ПРОКСИ
PIInfo^.lpszProxy := PChar('some.proxy:someport');
// указать прокси напр.
195.43.67.33:8080
PIInfo^.lpszProxyBypass := PChar('');
// Список адресов, доступ к которым возможен минуя Proxy сервер
UrlMkSetSessionOption(INTERNET_OPTION_PROXY, piinfo,
SizeOf(Internet_Proxy_Info), 0);
....
Dispose (PIInfo) ;
....
Вызывать функцию UrlMkSetSessionOption
можно из любого места программы, причем любое количество раз и с разными
настройками.
После вызова функции TWebBrowser будет
работать через указанный прокси. Еще раз повторюсь настройки касаются только
текущей сессии (программы на момент выполнения ), общие настройки Windows не
изменяются.
|