Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Установить proxy-server, Изменить глобальные настройки proxy 
:(
    Опции темы
MetalFan
Дата 16.12.2007, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 14
Всего: 128



встретил только 2 реализации смены текущей прокси для ослика.
1. через реестр
2. через InternetSetOption + INTERNET_OPTION_PROXY
но 
Цитата(MSDN)
Note  It is recommended that INTERNET_OPTION_PER_CONNECTION_OPTION be used instead of INTERNET_OPTION_PROXY. For more information, see KB article 226473.

там же приведены примеры. но на делфи я реализации не нашел.
вот код, адаптированный под делфи:
Код

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 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;


примеры использования:
установить:
Код

  if not SetProxyGlobal( 'localhost', 8888 ) then
    RaiseLastOSError;


установить прямое соединение:
Код

  if not SetProxyGlobal( '', 0 ) then
    RaiseLastOSError;




--------------------
There are always someone smarter than you...
PM MAIL   Вверх
vovksextra
Дата 15.2.2008, 04:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 15.2.2008

Репутация: нет
Всего: нет



Хочу добавить ссылку на еще один код 

http://local.com.ua/forum/index.php?showtopic=10895


это не реклама - лень просто еще раз постить
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1031 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.