|
#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. |