CC++Qt « Использование системных настроек прокси

Пишу программку на Си с использованием libcurl. Теперь появилась необходимость использовать системные настройки прокси (чтобы не задавать их повторно в моей программке), т. е. те, что заданы в IE. Вопрос: как можно их получить/заюзать?

1 ответов


Решение нашел не помню уже где. Выкладываю код тестовой программки, вдруг кому пригодится.

#include <windows.h>
#include <stdio.h>
#include <specstrings.h>
#include "winhttp.h"


typedef BOOL (WINAPI *PROXYFUNC)( __inout WINHTTP_CURRENT_USER_IE_PROXY_CONFIG  *pProxyConfig);

int main(int argc, char **argv) {
  HINSTANCE hlib;       // Handle to module
  PROXYFUNC proc_addr;    // Address of the exported function or variable

  WINHTTP_CURRENT_USER_IE_PROXY_CONFIG ie_proxy_config; // Структура, хранящая настройки прокси

  BOOL res = FALSE;

  hlib = LoadLibrary(TEXT("Winhttp.dll"));
  if (hlib != NULL) {
    if ((proc_addr = (PROXYFUNC) GetProcAddress(hlib, "WinHttpGetIEProxyConfigForCurrentUser")) != NULL) {
      res = (proc_addr)(&ie_proxy_config);
    }
    FreeLibrary(hlib);
  }

  char buf[2048];
  wcstombs(buf, ie_proxy_config.lpszProxy, 2048);
  if (res) {
    printf("result:\n%s\n", buf);
    if (ie_proxy_config.fAutoDetect == TRUE) printf("it is autodetect");
  }
  return 0;
}