PDA

Просмотр полной версии : как к WebBrowser прикрутить прокси


19955991
27.06.2012, 20:05
Добрый вечер форумчане!

Ну чтож сразу к делу...на данный момент пользуюсь вот такой вот процедурой присваивания proxy TWebbrowser'у:


procedure proxy_go(proxy: string);
var proxy_info : PInternetProxyInfo;
begin
New (proxy_info);
proxy_info^.dwAccessType := INTERNET_OPEN_TYPE_PROXY;
proxy_info^.lpszProxy := PChar(proxy);
proxy_info^.lpszProxyBypass := PChar('');
UrlMkSetSessionOption(INTERNET_OPTION_PROXY, proxy_info, SizeOf(Internet_Proxy_Info), 0);
Dispose(proxy_info);
//proxy_go('127.0.0.1:8888');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
proxy_go('127.0.0.1:8888');
Webbrowser1.Navigate(edit1.Text);
end;


Дело в том что код рабочий, но мне хотелось бы изменять прокси, ну т.е. брать прокси из memo к примеру и заходить на сайт с данными настройками, но данный код на это не приспособлен, кто с таким сталкивался, посоветуйте что можно сделать?

VeTaL_UA
27.06.2012, 21:02
procedure TForm1.Button1Click(Sender: TObject);
const
i:integer=0;
begin
if i<Memo1.Lines.Count then
begin
proxy_go(Memo1.Lines[i]);
Webbrowser1.Navigate(edit1.Text);
end
else
begin
ShowMessage('proxy zakonchilis');
end;
inc(i);
end;

19955991
27.06.2012, 22:01
proxy_go(Memo1.Lines[i]);

Memo1.Lines.strings[i];

Но не в этом деле, тут сама процедура такая, она не будет менять прокси второй раз, нужно либо динамически каждый раз при смене прокси создавать веб браузер либо найти какой то другой вариант, с динамическим веб браузером пока разобраться не могу))

D.E.Z.E.R.T.I.R
27.06.2012, 22:06
объявляешь: web:Twebbrowser;

внутри цикла:

web:=Twebbrowser.Create;

а в конце цикла

web.Free;

вот тебе и динамический ВебБраузер

Mebius
27.06.2012, 22:13
объявляешь: web:Twebbrowser;

внутри цикла:

web:=Twebbrowser.Create;

а в конце цикла

web.Free;

вот тебе и динамический ВебБраузер

без предка не работоспособен будет на сколько я знаю

procedure TForm1.Button1Click(Sender: TObject);
const
i:integer=0;
begin
if i<Memo1.Lines.Count then
begin
proxy_go(Memo1.Lines[i]);
Webbrowser1.Navigate(edit1.Text);
end
else
begin
ShowMessage('proxy zakonchilis');
end;
inc(i);
end;

веталь, а разве константа изменяется?)

PS создай глобальную переменную которая буде хранить итератор, при первом создании инициализируй, дальше по нужному тебе событию делай иф итератор<Memo1.Lines.Count-1 и выдергивай проксю в строку memo1.linse[итератор] дальше парс подстановка и заход.
иначе обнуляй итератор и останавливай действия

19955991
27.06.2012, 23:21
Всем спасибо! Навели меня на путь истинный)

Еще один вопрос: как удалить потом этот компонент? Или пересоздать

На Wb.Free; ругается, наверное потому что компонент используется

Mebius
28.06.2012, 00:07
Всем спасибо! Навели меня на путь истинный)

Еще один вопрос: как удалить потом этот компонент? Или пересоздать

На Wb.Free; ругается, наверное потому что компонент используется

чем ругается то?

19955991
28.06.2012, 00:17
чем ругается то?
Да все уже, разобрался, работает как часы
Всем огромное спасибо!!! :z:

RamDigga
09.09.2013, 20:21
Ругается на строчки:


proxy_info^.lpszProxy := PChar(proxy);
proxy_info^.lpszProxyBypass := PChar('');

Текст ошибки:


[DCC Error] Unit1.pas(38): E2010 Incompatible types: 'PAnsiChar' and 'PWideChar'
[DCC Error] Unit1.pas(39): E2010 Incompatible types: 'PAnsiChar' and 'PWideChar'

Как исправить ?)

NebesaBag
09.09.2013, 21:01
proxy_info^.lpszProxy := proxy;
proxy_info^.lpszProxyBypass := '';


Я не знаток в типах переменных, но может быть так?

RamDigga
10.09.2013, 22:40
proxy_info^.lpszProxy := proxy;
proxy_info^.lpszProxyBypass := '';


Я не знаток в типах переменных, но может быть так?

Сяб, разобрался.
Только не так надо:

proxy_info^.lpszProxy := proxy;
proxy_info^.lpszProxyBypass := '';

а так:

proxy_info^.lpszProxy := PANSIChar(proxy);
proxy_info^.lpszProxyBypass := '';