{ помогите подправить этот код, чтобы прокси ставило не на настройки LAN, а на настройки удалённого доступа (для интернета). Флаги менять надо? бьюсь уже 4 дня.
}
program setproxy;
uses
windows,winsock,wininet,urlmon;
const
INTERNET_OPTION_PER_CONNECTION_OPTION = 75;
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;
PROXY_TYPE_DIRECT = $00000001;
PROXY_TYPE_PROXY = $00000002;
PROXY_TYPE_AUTO_PROXY_URL = $00000004;
PROXY_TYPE_AUTO_DETECT = $00000008;
type
PINTERNET_PER_CONN_OPTION = ^INTERNET_PER_CONN_OPTION;
INTERNET_PER_CONN_OPTION = record
dwOption : DWORD;
case Byte of
0: (dwValue: DWORD);
1: (pszValue: LPSTR);
2: (ftValue: FILETIME);
end;
INTERNET_PER_CONN_OPTION_LIST = record
dwSize: DWORD;
pszConnection: LPSTR;
dwOptionCount: DWORD;
dwOptionError: DWORD;
pOptions: PINTERNET_PER_CONN_OPTION;
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.