Ich möchte Delphi VCL-Komponente TWebBrowser mit Proxy verwenden. Es scheint ziemlich einfach zu sein, so etwas zu tun:Delphi TWebBrowser - wie Proxy mit Login/Passwort zu verwenden?
var PIInfo: PInternetProxyInfo;
begin
PIInfo^.dwAccessType := INTERNET_OPEN_TYPE_PROXY;
PIInfo^.lpszProxy := PAnsiChar('proxyserver.com:8888');
PIInfo^.lpszProxyBypass := PAnsiChar('');
UrlMkSetSessionOption(INTERNET_OPTION_PROXY, PIInfo, SizeOf(Internet_Proxy_Info), 0);
end;
Aber ich möchte auch Proxy mit Authentifizierung verwenden. Und hier hatte ich die Probleme. Ich erfuhr, dass es möglich ist, Proxy-Namen und Passwort festlegen WinAPI Funktion InternetSetOption verwendet wird, ein Beispiel unter:
var UserName: AnsiString;
ConnectionHandle: HINTERNET;
begin
// Init ConnectionHandle here
//...
res := InternetSetOption(ConnectionHandle,
INTERNET_OPTION_PROXY_USERNAME,
UserName,
Length(UserName) + 1);
end;
ich, dass InternetSetOption gelernt, mit Parametern wie INTERNET_OPTION_PROXY_USERNAME nur mit dem Internet Griff angewandt werden könnten, die wie von Funktionen erzeugt wurden InternetConnect oder HttpOpenRequest.
Eine Antwort dazu finden Sie here.
Es ist kein Problem, ich kann InternetConnect zuerst aufrufen. Es scheint aber nicht möglich zu sein, diesen Internet-Handle an meinen TWebBrowser zu binden. TWebBrowser ignoriert diese Einstellungen, weil sie auf konkrete dedizierte Internet-Handles angewendet wurden.
Also meine Frage: ist es möglich, Proxy mit Authentifizierung im Delphi-Code einzurichten, um es von TWebBrowser zu verwenden?
PS. Eine alternative Option ist, sich an Login-/Passwort-Proxy-Einstellungen zu erinnern, wenn TWebBrowser nach ihnen fragt, aber ich habe mehrfache Logins/Passwörter, also möchte ich sie aus dem Code einrichten.
Danke von Voraus.
http://microsoft.public.inets-dk.programming.webbrowser-ctl.narkive.com/rgz718KC/how-to-pass-proxy-username-password-into-webbrowser-control –
FYI, Ihr erster Codeausschnitt ist falsch. Sie deklarieren einen nicht initialisierten Zeiger, der auf nichts verweist. Sie müssen dies stattdessen verwenden: 'var IInfo: InternetProxyInfo; begin IInfo.dwAccessType: = INTERNET_OPEN_TYPE_PROXY; ... UrlMkSetSessionOption (INTERNET_OPTION_PROXY, @IInfo, SizeOf (IInfo), 0); Ende; ' –
Remy Lebeau, ja, genau. Eigentlich habe ich vergessen, in diesem Snippet auch den Code einzufügen: Neu (PIInfo); ..... Entsorgen (PInfo); –