Конференция "WinAPI" » IE setproxy [D7, NT4, Win2k, WinXP]
 
  • Vikindos © (12.08.08 01:50) [0]
    { помогите подправить этот код, чтобы прокси ставило не на настройки LAN, а на настройки удалённого доступа (для интернета). Флаги менять надо? бьюсь уже 4 дня.
    }

    program setproxy;
     
    uses
    windows,winsock,wininet,urlmon;

    const
     INTERNET_OPTION_PER_CONNECTION_OPTION = 75;
    //
    // Options used in INTERNET_PER_CONN_OPTON struct
    //
     INTERNET_PER_CONN_FLAGS                        = 1;
     INTERNET_PER_CONN_PROXY_SERVER                 = 2;
     INTERNET_PER_CONN_PROXY_BYPASS                 = 3;
     INTERNET_PER_CONN_AUTOCONFIG_URL               = 4;
     INTERNET_PER_CONN_AUTODISCOVERY_FLAGS          = 5;
     INTERNET_PER_CONN_AUTOCONFIG_SECONDARY_URL     = 6;
     INTERNET_PER_CONN_AUTOCONFIG_RELOAD_DELAY_MINS = 7;
     INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_TIME  = 8;
     INTERNET_PER_CONN_AUTOCONFIG_LAST_DETECT_URL   = 9;

    //
    // PER_CONN_FLAGS
    //
     PROXY_TYPE_DIRECT              =                $00000001;  // direct to net
     PROXY_TYPE_PROXY               =                $00000002;  // via named proxy
     PROXY_TYPE_AUTO_PROXY_URL      =                $00000004;  // autoproxy URL
     PROXY_TYPE_AUTO_DETECT         =                $00000008;  // use autoproxy detection

    type
     PINTERNET_PER_CONN_OPTION = ^INTERNET_PER_CONN_OPTION;
     INTERNET_PER_CONN_OPTION = record
       dwOption : DWORD;            // option to be queried or set
       case Byte of
         0: (dwValue: DWORD);        // dword value for the option
         1: (pszValue: LPSTR);       // pointer to string value for the option
         2: (ftValue: FILETIME);        // file-time value for the option
     end;

     INTERNET_PER_CONN_OPTION_LIST = record
       dwSize: DWORD;             // size of the INTERNET_PER_CONN_OPTION_LIST struct
       pszConnection: LPSTR;      // connection name to set/query options
       dwOptionCount: DWORD;      // number of options to set/query
       dwOptionError: DWORD;      // on error, which option failed
       pOptions: PINTERNET_PER_CONN_OPTION; // array of options to set/query
     end;

    function IntToStr(i: Integer): string;
    var
     S: string;
    begin
     Str(I, S);
     result := S;
    end;

    function SetProxyGlobal( const AProxyHost: string; AProxyPort: Word ): Boolean;
    var
     lList:  INTERNET_PER_CONN_OPTION_LIST;
     lOption: array[0..1] of INTERNET_PER_CONN_OPTION;
     lProxy: string;
     lResetProxy: Boolean;
    begin
     lResetProxy := (AProxyHost = '') or (AProxyPort = 0);
     lProxy := AProxyHost + ':' + IntToStr( AProxyPort );
     lOption[0].dwOption := INTERNET_PER_CONN_FLAGS;
     if lResetProxy then
       lOption[0].dwValue := PROXY_TYPE_DIRECT
     else
       lOption[0].dwValue := PROXY_TYPE_PROXY;
     lOption[1].dwOption := INTERNET_PER_CONN_PROXY_SERVER;
     lOption[1].pszValue := PChar( lProxy );
     lList.dwSize := SizeOf(INTERNET_PER_CONN_OPTION_LIST);
     lList.pszConnection := nil;
     if lResetProxy then
       lList.dwOptionCount := 1
     else
       lList.dwOptionCount := 2;
     lList.dwOptionError := 0;
     lList.pOptions := @lOption[0];
     Result := InternetSetOption( nil, INTERNET_OPTION_PER_CONNECTION_OPTION, @lList, SizeOf(INTERNET_PER_CONN_OPTION_LIST) );
     if Result then
       InternetSetOption(nil, INTERNET_OPTION_REFRESH, nil, 0);
    end;

    begin
    SetProxyGlobal('127.0.0.1',1512);
    end.

 
Конференция "WinAPI" » IE setproxy [D7, NT4, Win2k, WinXP]
Есть новые Нет новых   [134435   +33][b:0][p:0.004]