• 对本程序使用自己的代理服务器


    int __fastcall XSetProxy(void)
    {
         // TODO: 设置代理服务器。
         //返回错误代码:
         //0:不使用代理      -1:
         TIniFile *ReadIni = new TIniFile(GetAppPath()+AnsiString(G_CONFIG_INI));
         bool bUseProxy                  = ReadIni->ReadBool("FormSet","UseProxy",false);
         AnsiString ProxySvr      = ReadIni->ReadString("FormSet","ProxySvr","");
         AnsiString ProxyPort      = ReadIni->ReadInteger("FormSet","ProxyPort",0);
         AnsiString UserName      = ReadIni->ReadString("FormSet","ProxyUser","");
         AnsiString UserPassWord = ReadIni->ReadString("FormSet","ProxyPsw","");
         delete ReadIni;
         ReadIni = NULL;
    
         AnsiString strProxy,temp;
    
    
         if(ProxySvr.Pos("http://")>0)
        {
            ProxySvr = ProxySvr.SubString(8,ProxySvr.Length());
        }
        else if(ProxySvr.Pos("https://")>0)
        {
            ProxySvr = ProxySvr.SubString(9,ProxySvr.Length());
        }
        temp.sprintf("%s:%s",ProxySvr,ProxyPort);
        strProxy.sprintf("http=http://%s;ftp=http://%s;https=https://%s",
                        temp,temp,temp);
    
         //get current setting
         INTERNET_PROXY_INFO ipi;
         DWORD dwSize2 = sizeof(ipi);
    
         //先设置成不使用代理。
         ipi.dwAccessType = INTERNET_OPEN_TYPE_DIRECT;
         InternetSetOption(NULL, INTERNET_OPTION_PROXY, &ipi, dwSize2);
         InternetSetOption(NULL, INTERNET_OPTION_REFRESH, NULL, NULL);
         InternetSetOption(NULL, INTERNET_OPTION_SETTINGS_CHANGED, NULL, 0);
         if(!bUseProxy) return ERROR_NOERROR;
    
         ipi.dwAccessType = INTERNET_OPEN_TYPE_PROXY ;
         ipi.lpszProxy = strProxy.c_str();
         ipi.lpszProxyBypass = "<local>";
         if(!InternetSetOption(NULL, INTERNET_OPTION_PROXY, &ipi, dwSize2))
         {
               //MessageBox(Application->Handle,"Set proxy fail.","SetProxyFail",MB_OK|MB_ICONERROR);
               return ERROR_SETPROXY;
         }
         //下面设置用户名和密码
         //WINAPI不支持Sock5。
    //      if(UserName!="" && UserPassWord!="")
    //      {
    //            char pProxyInfo[200]={0};
    //            lstrcpy(pProxyInfo,UserName.c_str());
    //            if(!InternetSetOption(NULL, INTERNET_OPTION_PROXY_USERNAME,
    //                                           (LPVOID)pProxyInfo ,lstrlen (pProxyInfo)))
    //            {
    //                  return ERROR_SETUSER;
    //            }
    //
    //            memset(pProxyInfo,0x00,200);
    //            lstrcpy(pProxyInfo,UserPassWord.c_str());
    //            if(!InternetSetOption(NULL, INTERNET_OPTION_PROXY_PASSWORD,
    //                                            (LPVOID)pProxyInfo ,lstrlen (pProxyInfo)))
    //            return ERROR_SETPSW;
    //      }
         return ERROR_NOERROR;
    }
  • 相关阅读:
    geth搭建以太坊私链及常用操作
    什么是区块链?
    linux的命令
    MySQL的sql优化
    如何防止秒杀抢购超卖?
    try catch影响Spring事务吗?
    mysql中InnoDB与MyISAM的区别
    进程和线程的区别
    Nginx采用yum安装方式及安装后的目录
    Springboot2.0中jpa默认创建的mysql表为myisam引擎问题
  • 原文地址:https://www.cnblogs.com/wlmbz/p/4919242.html
Copyright © 2020-2023  润新知