![]() |
|
|
#1
|
|||
|
|||
|
Добрый день!
Подскажите начинающему, кто знает. Я хочу, что бы моя форма в Delphi соединялась с инетом через Socks 5. Вреде получилось, я использовал IdHTTP1, IdSocksInfo1 и IdSSLIOHandlerSocket1. Теперь я хочу из этой формы запустить другое приложение (например chrom или opera) и чтоб это приложение использовало настройки сети моей формы. Допустим чтоб в запущенном chrom из моей формы при заходе на сайт "мой IP" был показан IP указанного мной Socks5. Заранее спасибо всем гуру. |
|
#2
|
||||
|
||||
|
Как вариант:
Код:
Procedure SetProxy(cost Server: String);
var
Reg : TRegistry;
begin
Reg := TRegistry.Create;
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Internet Settings',False);
Reg.WriteString('ProxyServer',Server);
Reg.WriteBool('ProxyEnable,True);
Reg.CloseKey;
Reg.Free;
InternetSetOption(0, INTERNET_OPTION_SETTINGS_CHANGED, 0, 0);
end;
This is how to use:
SetProxy('Proxy:Port');либо Код:
uses
WinInet,
Windows,
SysUtils;
type
INTERNET_PER_CONN_OPTION = record
dwOption: DWORD;
Value: record
case Integer of
1: (dwValue: DWORD);
2: (pszValue: PAnsiChar);
3: (ftValue: TFileTime);
end;
end;
LPINTERNET_PER_CONN_OPTION = ^INTERNET_PER_CONN_OPTION;
INTERNET_PER_CONN_OPTION_LIST = record
dwSize: DWORD;
pszConnection: LPTSTR;
dwOptionCount: DWORD;
dwOptionError: DWORD;
pOptions: LPINTERNET_PER_CONN_OPTION;
end;
const
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;
PROXY_TYPE_DIRECT = $00000001;
PROXY_TYPE_PROXY = $00000002;
PROXY_TYPE_AUTO_PROXY_URL = $00000004;
PROXY_TYPE_AUTO_DETECT = $00000008;
INTERNET_OPTION_REFRESH = 37;
INTERNET_OPTION_PER_CONNECTION_OPTION = 75;
INTERNET_OPTION_SETTINGS_CHANGED = 39;
function SetConnectionProxy(const conn_name, proxy_addr : AnsiString) : Boolean;
var
list : INTERNET_PER_CONN_OPTION_LIST;
dwBufSize: DWORD;
Options : array[0..2] of INTERNET_PER_CONN_OPTION;
begin
dwBufSize := SizeOf(list);
list.dwSize := dwBufSize;
list.pszConnection := PAnsiChar(conn_name);
list.dwOptionCount := 3;
list.pOptions := @Options;
// Set the flags
Options[0].dwOption := INTERNET_PER_CONN_FLAGS;
Options[0].Value.dwValue := PROXY_TYPE_DIRECT OR PROXY_TYPE_PROXY;
// Set proxy name
Options[1].dwOption := INTERNET_PER_CONN_PROXY_SERVER;
Options[1].Value.pszValue:= PAnsiChar(proxy_addr);
// Set proxy override .
Options[2].dwOption := INTERNET_PER_CONN_PROXY_BYPASS;
Options[2].Value.pszValue:= PAnsiChar('local');
// Set the new settings
Result := InternetSetOption(nil, INTERNET_OPTION_PER_CONNECTION_OPTION, @list, dwBufSize);
InternetSetOption(nil, INTERNET_OPTION_SETTINGS_CHANGED, nil, 0);
InternetSetOption(nil, INTERNET_OPTION_REFRESH , nil, 0);
end;При этом в браузерах в настройках должна стоять галка типа "Использовать системные настройки прокси" |
|
#3
|
|||
|
|||
|
Я браузер написал для примера. Нужно, что бы любая прога шла в инет через мою форму. Примерно как работает Proxifier, только не все программы, а только та которую я запускаю из своей формы.
Последний раз редактировалось aleks2377, 17.02.2016 в 12:50. |