Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.05.26;
Скачать: CL | DM;

Вниз

WebBrowser   Найти похожие ветки 

 
Vitas2 ©   (2003-03-24 15:45) [0]

как у компонента WebBrowser1 поменять настройки тикие как адресс прокси и порт прокси не изменяя настроек в Internet Explorer(или другово имеется в виду оосновного) или это невозможно?


 
Дмитрий К.К. ©   (2003-03-24 15:52) [1]

ИМХО, такое просто невозможно осуществить.


 
Smithson ©   (2003-03-24 18:09) [2]

Я тоже долго так думал, однако возможно.
Есть такая функция UrlMkSetSessionOption, так вот она позволяет
сменить прокси (и кое-что еще) для текущего сеанса. используется примерно так:

var PIInfo : PInternetProxyInfo;
...
New (PIInfo) ;
PIInfo^.dwAccessType := INTERNET_OPEN_TYPE_PROXY ; // Изменение настроек ПРОКСИ
PIInfo^.lpszProxy := PChar(AProxy); // указать прокси напр. 195.43.67.33:8080
PIInfo^.lpszProxyBypass := PChar(""); // Список адресов, доступ к которым возможен минуя Proxy сервер
UrlMkSetSessionOption(INTERNET_OPTION_PROXY, piinfo, SizeOf(Internet_Proxy_Info), 0);


 
nikkie ©   (2003-03-24 19:47) [3]

ИМХО, вариант с использованием UrlMkSetSessionOption основан на недокументированных особенностях реализации IE. Если предположить, что IE 7 не будет использовать WinInet или будет периодически перечитывать настройки прокси, то этот способ перестанет работать.

С другой стороны, есть документированный способ - с использованием IDocHostUIHandler::GetOptionKeyPath метода. Для этого можно воспользоваться компонентой TEmbeddedWB. Правда этот подход затрагивает не только прокси, но и другие настройки браузера. Можно считать это плюсом, а можно и минусом :))

http://www.euromind.com/iedelphi/embeddedwb/ongetoptionskeypath.htm


 
Vitas2 ©   (2003-03-25 05:10) [4]

GetOptionKeyPath - это что фукция?
function TForm1.EmbeddedWB1GetOptionKeyPath(var pchKey:
PWideChar;
const dw: Cardinal): HRESULT;

Откуда она там берется? Oни сами ее там описывают?
Или смысл в том что просто создается раздел в реестре?
А если у пользвателя нет прав на изменение реестра?


 
nikkie ©   (2003-03-25 13:30) [5]

Если ты используешь указанную компоненту, то у нее есть событие OnGetOptionKeyPath. В обработчике этого события можно прописать ключ реестра, откуда IE должен читать настройки. Туда же он будет их и сохранять.

>А если у пользвателя нет прав на изменение реестра?
Значит, в реестр должен писать тот, кто имеет права. Например, администратор, инсталлировавший программу. Не спорю, не очень гибко, но претензии не ко мне, а к MS.


 
Ihor Osov'yak ©   (2003-03-25 14:00) [6]

unit e0_Proxy;

interface

procedure SaveBeginInetSetting;
function RestoreBeginInetSetting:boolean;
function InetSessionToUserSetting(aEnProxy:boolean; aStrIP,aStrPort:string):boolean;
function InetSessionToRegistrySetting:boolean;

implementation

uses windows,WinInet,UrlMon,
SysUtils;

var spBeginProxyStruct:PInternetProxyInfo;
len_spBeginProxyStruct:DWORD;



procedure SaveBeginInetSetting;
begin

InternetQueryOption(nil,INTERNET_OPTION_PROXY,nil,len_spBeginProxyStruct);
spBeginProxyStruct:=AllocMem(len_spBeginProxyStruct);
InternetQueryOption(nil,INTERNET_OPTION_PROXY,spBeginProxyStruct,len_spBeginProxyStruct);

end;


function RestoreBeginInetSetting:boolean;
var
dreserved:dword;
x:dword;
p : INTERNET_PROXY_INFO;

begin
result := false;

p.dwAccessType := spBeginProxyStruct^.dwAccessType;
p.lpszProxyBypass := spBeginProxyStruct^.lpszProxyBypass;
p.lpszProxy := spBeginProxyStruct^.lpszProxy;
x := sizeof(p);
dreserved := 0;
if UrlMkSetSessionOption({INTERNET_OPTION_REFRESH}
INTERNET_OPTION_PROXY,@p,x,dreserved)<>S_Ok
then begin
Exit;
end;


result := true;
end;


function InetSessionToUserSetting(aEnProxy:boolean; aStrIP,aStrPort:string):boolean;
var
p : INTERNET_PROXY_INFO;
x : integer;
dreserved : dword;
begin
result := false;
FillChar(p,sizeof(p),0);

if aEnProxy then begin
p.dwAccessType := INTERNET_OPEN_TYPE_PROXY;
p.lpszProxy := PChar(aStrIP+":"+aStrPort);
end
else begin
p.dwAccessType := INTERNET_OPEN_TYPE_DIRECT;
p.lpszProxy := "";
end;

p.lpszProxyBypass := "";
x := sizeof(p);
dreserved := 0;
if UrlMkSetSessionOption(INTERNET_OPTION_PROXY,@p,x,dreserved)<>S_OK
then begin
Exit;
end;


result := true;

end;


function InetSessionToRegistrySetting:boolean;
var
hk : HKEY;
s : string;
BufSize : integer;
posStr : integer;
retType : DWORD;
isUsingProxy : DWORD;
begin
result := false;
s := "";
if RegOpenKeyEx(HKEY_CURRENT_USER,
"SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings",
0,
KEY_ALL_ACCESS,
hk) = ERROR_SUCCESS then
begin
BufSize := SizeOf(isUsingProxy);
isUsingProxy := 0;
retType := REG_DWORD;
RegQueryValueEx(hk,
"ProxyEnable",
nil,
@retType,
@isUsingProxy,
@bufSize);
if isUsingProxy > 0 then
begin
SetLength(s, MAX_PATH);
BufSize := length(s);
FillChar(s[1], MAX_PATH, #0);
retType := REG_NONE;
RegQueryValueEx(hk,
"ProxyServer",
nil,
@retType,
@s[1],
@bufSize);
SetLength(s, bufsize);
if bufsize > 0 then
if s[length(s)] = #0 then SetLength(s, length(s)-1);
if length(s) > 0 then
begin
posStr := Pos("http=", LowerCase(s));
if posStr > 0 then
s := Copy(s, posStr+5, length(s));
posStr := Pos(";", s);
if posStr > 0 then
s := Copy(s, 1, posStr-1);

result := InetSessionToUserSetting(true,s,"");
end;
end
else result := InetSessionToUserSetting(false,"","");
RegCloseKey(hk);
end;
end;


end.


 
Ihor Osov'yak ©   (2003-03-25 14:12) [7]

Да, изменения действуют на следующую навигацию для всех броузеров в пределах текущего процесса.




Страницы: 1 вся ветка

Текущий архив: 2003.05.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
14-83714
Michael
2003-05-04 17:58
2003.05.26
Опрос: Кто какую


1-83547
zeratul_pr
2003-05-13 22:28
2003.05.26
Список файлов в memo...


1-83523
Sergey
2003-05-13 10:06
2003.05.26
MDIChild in DLL


14-83724
- Tsatur -
2003-05-07 00:54
2003.05.26
INI в инете


7-83782
Ал
2003-03-25 10:48
2003.05.26
Как без перезагрузки изменить картинки у только что зарег. файлов