У меня есть программа, которая устанавливает прокси -сервер для HTTP -запросов, когда он начинается. Когда программа завершает свою работу, мне нужно отключить прокси -прокси HTTP -запросы. Когда программа завершена, закрыв ее, вы можете установить обработчик, например, через STD :: atexit и остановить прокси в обратном вызове. В этом случае обработчик std :: atexit больше не будет называться. Мне нужно это, чтобы остановить прокси HTTP -трафик. Любые другие решения также приветствуются. < /P>
Решение как для консольной программы, так и для программы с графическим интерфейсом.BOOL SetConnectionOptions()
{
INTERNET_PER_CONN_OPTION_LIST list;
BOOL bReturn;
DWORD dwBufSize = sizeof(list);
// Fill the list structure.
list.dwSize = sizeof(list);
// NULL == LAN, otherwise connectoid name.
list.pszConnection = NULL;
// Set three options.
list.dwOptionCount = 3;
list.pOptions = new INTERNET_PER_CONN_OPTION[3];
// Ensure that the memory was allocated.
if (NULL == list.pOptions)
{
// Return FALSE if the memory wasn't allocated.
return FALSE;
}
// Set flags.
list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
list.pOptions[0].Value.dwValue = PROXY_TYPE_DIRECT |
PROXY_TYPE_PROXY;
// Set proxy name.
list.pOptions[1].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
list.pOptions[1].Value.pszValue = (LPWSTR)TEXT("http=127.0.0.1:8888;https=127.0.0.1:8888");
// Set proxy override.
list.pOptions[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
list.pOptions[2].Value.pszValue = (LPWSTR)TEXT("local");
// Set the options on the connection.
bReturn = InternetSetOption(NULL,
INTERNET_OPTION_PER_CONNECTION_OPTION, &list, dwBufSize);
// Free the allocated memory.
delete[] list.pOptions;
return bReturn;
}
< /code>
и используя следующий код, я останавливаю прокси < /p>
BOOL DisableConnectionProxy(/*LPCTSTR conn_name*/)
{
//conn_name: active connection name.
INTERNET_PER_CONN_OPTION_LIST list;
BOOL bReturn;
DWORD dwBufSize = sizeof(list);
// Fill out list struct.
list.dwSize = sizeof(list);
// NULL == LAN, otherwise connectoid name.
list.pszConnection = NULL;
// Set three options.
list.dwOptionCount = 1;
list.pOptions = new INTERNET_PER_CONN_OPTION[list.dwOptionCount];
// Make sure the memory was allocated.
if (NULL == list.pOptions)
{
// Return FALSE if the memory wasn't allocated.
std::cout
Подробнее здесь: https://stackoverflow.com/questions/795 ... ogram-ends