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