C 启用绕过代理服务器并通知IE更改

C 启用绕过代理服务器并通知IE更改,c,internet-explorer,winapi,C,Internet Explorer,Winapi,我正在尝试使用Internet Explorer Options API根据此设置局域网设置 我可以设置代理地址和异常,但我想启用绕过本地地址的代理服务器复选框,并通知Internet Explorer进行更改,这样我就不必关闭并再次打开它 我想我需要使用internetperconn\u option结构中的另一个选项,但不知道应该使用什么 这是我的代码: #include <Windows.h> #include <wininet.h> #include <w

我正在尝试使用Internet Explorer Options API根据此设置局域网设置

我可以设置代理地址和异常,但我想启用
绕过本地地址的代理服务器
复选框,并通知Internet Explorer进行更改,这样我就不必关闭并再次打开它

我想我需要使用
internetperconn\u option
结构中的另一个选项,但不知道应该使用什么

这是我的代码:

#include <Windows.h>
#include <wininet.h>
#include <wchar.h>

#pragma comment(lib, "Wininet.lib")

int wmain(int argc, wchar_t * argv[])
{
    INTERNET_PER_CONN_OPTION_LIST connList;
    DWORD bufSize = sizeof(connList);

    connList.dwSize = sizeof(connList);
    connList.pszConnection = NULL; 
    connList.dwOptionCount = 3;
    connList.pOptions = (INTERNET_PER_CONN_OPTION*)malloc(sizeof(INTERNET_PER_CONN_OPTION) * 3);

    if (connList.pOptions == NULL)
    {
        fwprintf(stderr, L"Memory allocation failed.\n");
        return 1;

    }

    connList.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
    connList.pOptions[0].Value.dwValue = PROXY_TYPE_DIRECT |
        PROXY_TYPE_PROXY;

    connList.pOptions[1].dwOption = INTERNET_PER_CONN_PROXY_SERVER;
    connList.pOptions[1].Value.pszValue = L"https://internal.com.co:80";

    connList.pOptions[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
    connList.pOptions[2].Value.pszValue = L"local";

    BOOL internetOption;

    internetOption = InternetSetOptionW(NULL,
        INTERNET_OPTION_PER_CONNECTION_OPTION,
        &connList,
        bufSize);

    if (internetOption != TRUE)
    {
        fwprintf(stderr, L"Faile to set the option with code: %u\n", GetLastError());
        return 1;
    }

    free(connList.pOptions);

    wprintf(L"Done!\n");

    return 0;
}
#包括
#包括
#包括
#pragma注释(lib,“Wininet.lib”)
int wmain(int argc,wchar_t*argv[])
{
互联网连接选项列表连接列表;
DWORD bufSize=sizeof(连接列表);
connList.dwSize=sizeof(connList);
connList.pszConnection=NULL;
connList.dwOptionCount=3;
connList.pOptions=(互联网连接选项*)malloc(互联网连接选项)*3);
if(connList.pOptions==NULL)
{
fwprintf(标准,L“内存分配失败。\n”);
返回1;
}
connList.pOptions[0].dwOption=internetperconn\u标志;
connList.pOptions[0].Value.dwValue=PROXY\u TYPE\u DIRECT|
代理类型代理;
connList.pOptions[1].dwOption=每个连接代理服务器的INTERNET\u;
connList.pOptions[1].Value.pszValue=L“https://internal.com.co:80";
connList.pOptions[2].dwOption=INTERNET\u PER\u CONN\u PROXY\u旁路;
connList.pOptions[2].Value.pszValue=L“本地”;
布尔互联网;
internetOption=InternetSetOptionW(空,
互联网选项每个连接选项,
&康纳斯,
bufSize);
如果(internetOption!=真)
{
fwprintf(stderr,L“无法设置选项,代码:%u\n”,GetLastError());
返回1;
}
免费(connList.pOptions);
wprintf(L“完成!\n”);
返回0;
}

你能帮我吗?

将字符串
包括
符号添加到例外列表中,例如
;*。microsoft.com

太棒了!您是否知道通知IE进行更改而不重新打开它?我认为您应该在设置新值之前先重置代理设置(“proxy\u TYPE\u DIRECT”)。