想通过编程来实现设置IE的代理服务器.如何实现啊?
是不是通过修改注册表啊?修改哪个?

解决方案 »

  1.   

    or you may change register in \local m......\........
    but it must reset ie
      

  2.   

    当然是不想重启IE啊,设置完了马上能用,还可以随时改.这样就不能通过修改注册表实现了吧.
    用iphlpapi.h可以实现吗?这个怎么好像是CB里面的啊.
    VC里面没有自己可以直接设置IE代理的吗?
      

  3.   

    HKEY_CURRENT_USER
    Software\\Microsoft\\Windows\\CurrentVersion\\Internet Settings
    ProxyServer
    ProxyEnable
      

  4.   

    http://www.codeproject.com/internet/changeproxy1.asp
    Change Internet Proxy settings
    By onega 
      

  5.   

    给个建议你,不要改变proxy,改变IP的arp表更好
      

  6.   

    见过有个软件叫《网络休闲庄IP隐藏器》,能强制任何浏览器使用代理服务器,应该就是修改了arp表。
      

  7.   

    to masterz:
    onega发表在codeguru.com的修改代理设置的源码,我看了,他自己都说只是修改了注册表,
    如果是这样,需要重启IE才生效吧。
    你给的地址,codeproject怎么上不去。:(to wjl_2001  icelight:
    如何修改IP的arp表啊?哪里有相关知识?
    这个网络休闲庄IP隐藏器软件我也找到过,不过没有联系方式,也没法了解如何作的啊。
    MyIE的代理设置估计也是用的这个arp,它和IE的设置互相不干涉
      

  8.   

    article in codeproject is more than modifying registry.
    BOOL SetConnectionOptions(LPCTSTR conn_name,LPCTSTR proxy_full_addr)
    {
        //conn_name: active connection name. 
        //proxy_full_addr : eg "210.78.22.87:8000"
        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 = conn_name;
        // Set three options.
        list.dwOptionCount = 3;
        list.pOptions = new INTERNET_PER_CONN_OPTION[3];
        // Make sure the memory was allocated.
        if(NULL == list.pOptions)
        {
            // Return FALSE if the memory wasn't allocated.
            OutputDebugString("failed to allocat memory in SetConnectionOptions()");
            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 = proxy_full_addr;//"http://proxy:80";    // Set proxy override.
        list.pOptions[2].dwOption = INTERNET_PER_CONN_PROXY_BYPASS;
        list.pOptions[2].Value.pszValue = "local";    // Set the options on the connection.
        bReturn = InternetSetOption(NULL,
            INTERNET_OPTION_PER_CONNECTION_OPTION, &list, dwBufSize);    // Free the allocated memory.
        delete [] list.pOptions;
        InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
        InternetSetOption(NULL, INTERNET_OPTION_REFRESH , NULL, 0);
        return bReturn;
    }
    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 = conn_name;
        // 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.
            OutputDebugString("failed to allocat memory in DisableConnectionProxy()");
            return FALSE;
        }
        // Set flags.
        list.pOptions[0].dwOption = INTERNET_PER_CONN_FLAGS;
        list.pOptions[0].Value.dwValue = PROXY_TYPE_DIRECT  ;
        // Set the options on the connection.
        bReturn = InternetSetOption(NULL,
            INTERNET_OPTION_PER_CONNECTION_OPTION, &list, dwBufSize);
        // Free the allocated memory.
        delete [] list.pOptions;
        InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
        InternetSetOption(NULL, INTERNET_OPTION_REFRESH , NULL, 0);
        return bReturn;
    }
    The usage is very straightforward://set proxy
        const char* connection_name="Connection to adsl3";
        SetConnectionOptions(connection_name,"62.81.236.23:80");
    //disable proxy 
        DisableConnectionProxy(connection_name);
        
    Existing Internet Explorer instances are notified by INTERNET_OPTION_SETTINGS_CHANGED and INTERNET_OPTION_REFRESH 
      

  9.   

    谢谢了。
    我也给onega发email,找到了这个地址。写的非常全面详细。
    多谢各位,可以结帖了。
    以后还要多请教
    :)
      

  10.   

    不知道onega是否在这里有帐号,应该也给他加分。呵呵。
    真是挺厉害的人啊,能经常请教他就更好了。