• Что бы вступить в ряды "Принятый кодер" Вам нужно:
    Написать 10 полезных сообщений или тем и Получить 10 симпатий.
    Для того кто не хочет терять время,может пожертвовать средства для поддержки сервеса, и вступить в ряды VIP на месяц, дополнительная информация в лс.

  • Пользаватели которые будут спамить, уходят в бан без предупреждения. Спам сообщения определяется администрацией и модератором.

  • Гость, Что бы Вы хотели увидеть на нашем Форуме? Изложить свои идеи и пожелания по улучшению форума Вы можете поделиться с нами здесь. ----> Перейдите сюда
  • Все пользователи не прошедшие проверку электронной почты будут заблокированы. Все вопросы с разблокировкой обращайтесь по адресу электронной почте : info@guardianelinks.com . Не пришло сообщение о проверке или о сбросе также сообщите нам.

Как Программно Назначить Прокси Сервер Для Браузера

  • Автор темы Автор темы Lomanu4
  • Дата начала Дата начала

Lomanu4

Команда форума
Администратор
Регистрация
1 Мар 2015
Сообщения
1,467
Баллы
155
В этой короткой заметке приводится рабочий код на Delphi, позволяющий программно изменить системные интернет настройки и назначить или отменить прокси сервер, через который ваш браузер выходит в интернет.
Сами настройки прокси сервера можно изменить и вручную, вызвав системный диалог Internet Options:

420_2.jpg

В результате любой браузер, будь то Internet Explorer или, например, Google Chrome, будут использовать установленный вами прокси-сервер.
Чтобы сделать то же самое программно, можно использовать код, приведенный ниже. Этот код был взят из исходников EmbeddedWB и немного доработан. Думаю, кому то он будет полезен в виде отдельной функции
Код:
uses WinInet;
function SetSystemProxy(host: string; port: string): boolean;
  const

    INTERNET_PER_CONN_FLAGS = 1;
    PROXY_TYPE_PROXY = $00000002;
    INTERNET_PER_CONN_PROXY_BYPASS = 3;
    INTERNET_PER_CONN_PROXY_SERVER = 2;
    INTERNET_OPTION_PER_CONNECTION_OPTION = 75;
    PROXY_TYPE_DIRECT = $00000001;

  type

    INTERNET_PER_CONN_OPTION = record
      dwOption: DWORD;
      Value: record
        case Integer of
          1: (dwValue: DWORD);
          2: (pszValue: PChar); {Unicode/ANSI}
          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;
      intOptions: LPINTERNET_PER_CONN_OPTION;
    end;
    LPINTERNET_PER_CONN_OPTION_List = ^INTERNET_PER_CONN_OPTION_List;

  var list: INTERNET_PER_CONN_OPTION_LIST;
      dwBufSize: DWORD;
      hInternet: Pointer;
      Options: array[1..3] of INTERNET_PER_CONN_OPTION;

begin
  Result := False;
  dwBufSize := SizeOf(list);
  list.dwSize := SizeOf(list);
  list.pszConnection := nil;
  list.dwOptionCount := High(Options);

  Options[1].dwOption := INTERNET_PER_CONN_FLAGS;

  Options[2].dwOption := INTERNET_PER_CONN_PROXY_SERVER;
  if (host='') or (port='') then
  begin
    Options[1].Value.dwValue := PROXY_TYPE_DIRECT;
    Options[2].Value.pszValue := PChar('');
  end else
  begin
    Options[1].Value.dwValue := PROXY_TYPE_PROXY;
    Options[2].Value.pszValue := PChar(host+':'+port);
  end;

  Options[3].dwOption := INTERNET_PER_CONN_PROXY_BYPASS;
  Options[3].Value.pszValue := PChar('');

  list.intOptions := @Options;
  hInternet := InternetOpen(PChar(''), INTERNET_OPEN_TYPE_DIRECT, nil, nil, 0);
  if hInternet <> nil then
  try
    Result := InternetSetOption(nil, INTERNET_OPTION_PER_CONNECTION_OPTION, @list, dwBufSize);
    Result := Result and InternetSetOption(nil, INTERNET_OPTION_REFRESH, nil, 0);
  finally
    InternetCloseHandle(hInternet)
  end;
end;
В качестве параметров в функцию SetSystemProxy передается IP адрес прокси сервера и порт. Чтобы отменить действие прокси необходимо вызвать функцию с пустыми аргументами.
 
Вверх Снизу