Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 2003.05.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
1-83462
malamba
2003-05-14 14:34
2003.05.26
вводишь в Combobox первые буквы- подсвечивается запись


4-83786
den_c
2003-03-25 13:25
2003.05.26
Как получить Handle главного окна приложения в котором моя DLL


14-83678
Домарощинер
2003-05-05 15:10
2003.05.26
---|Ветка была без названия|---


11-83434
VaaL
2002-08-20 11:47
2003.05.26
Не компилится...


1-83528
cult
2003-05-13 11:49
2003.05.26
Импорт ActiveX-компонента





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский