Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Proxy für TWebBrowser setzten (https://www.delphipraxis.net/43201-proxy-fuer-twebbrowser-setzten.html)

Uncle Cracker 30. Mär 2005 15:24


Proxy für TWebBrowser setzten
 
Hab jetzt schon ne Menge in der DP darüber gelesen und mitbekommen, dass das nicht wirklich funktioniert.

Jetzt wollte ich es anders probieren, indem ich die Internetoptionen ändere und dann einen Proxy nutzte. Aber irgendwie funktioniert das nicht so wie ich das will :(
Ich habe folgenden Schlüsselgefunden wo die Informationen drin stehen:
HKEY_CURRENT_USER\Software\Microsoft\Windows\Curre ntVersion\Internet Settings\ -> "ProxyServer"

Doch wenn ich jetzt den Wert ändere passiert trotzdem nix. Weiß zufällig jemand wie ich diese Option ändern kann bzw. ob es vielleicht noch eine andere Methode gibt per TWebBrowser "anonym" über einen Proxy eine Seite aufzurufen...

Vielleicht hatte schonmal jemand das Problem und hat es irgendwie geschafft...


:love: Danke UC

Uncle Cracker 31. Mär 2005 17:30

Re: Proxy für TWebBrowser setzten
 
Also ich habe jetzt noch ein bisschen rumprobiert, aber ich bekomme es einfach nicht hin. Ich habe jetzt mal die Registrywerte geändert, doch da passiert nichts...

Es gibt ja die Methode die Werte auszulesen http://www.swissdelphicenter.ch/de/showcode.php?id=2110 bzw. http://www.delphipraxis.net/internal...ct.php?t=22647

Wenn das auslesen möglich ist, dann muss man das doch auch irgendwie auch selber schreiben können :(

Könnte mir vielleicht jemand bei dem Problem helfen?


:love: Danke UC

toms 31. Mär 2005 17:32

Re: Proxy für TWebBrowser setzten
 
Hi,

Habe mal diese Unit gefunden. Stelle sie einfach mal (ungetestet) ins Forum.

Delphi-Quellcode:
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_spBegin
    ProxyStruct);
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.

Uncle Cracker 1. Apr 2005 18:37

Re: Proxy für TWebBrowser setzten
 
Entweder ich bin zu dämlich das anzuwenden oder es funktioniert wirklich nicht...

Also wenn ich den Code ausführe und Werte eintrage werden die trotzdem irgendwie nicht gespeichert :(

Hat denn jemand vielleicht noch eine andere Möglichkeit?


:love: Danke UC


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz