一、相關結構體與API:
typedef struct {<br /> DWORD dwAccessType;<br /> LPCTSTR lpszProxy;<br /> LPCTSTR lpszProxyBypass;<br />} INTERNET_PROXY_INFO, *LPINTERNET_PROXY_INFO;
HRESULT UrlMkSetSessionOption(<br /> DWORD dwOption,<br /> LPVOID pBuffer,<br /> DWORD dwBufferLength,<br /> DWORD dwReserved<br />);
二、VC源碼說明
1、建立一個對話方塊工程,並添加如下控制項、關聯變數:
2、部分源碼及說明:
void CProxyDlg::OnButtonSet()<br />{<br />// TODO: Add your control notification handler code here<br />UpdateData(TRUE);<br />if(m_IP.IsEmpty() || m_Port.IsEmpty())<br />{<br />MessageBox("IP地址或連接埠不可為空!","提示",MB_ICONERROR | MB_OK);<br />GetDlgItem(IDC_EDIT1)->SetFocus();<br />}</p><p>// lpszProxy格式為“192.168.1.1:8080”<br />m_IP = m_IP + ":" + m_Port;</p><p>INTERNET_PROXY_INFOproxy;<br />proxy.dwAccessType = INTERNET_OPEN_TYPE_PROXY;<br />proxy.lpszProxy = m_IP;<br />proxy.lpszProxyBypass = NULL;</p><p>HRESULT hr = ::UrlMkSetSessionOption(INTERNET_OPTION_PROXY,&proxy,sizeof(proxy),0);<br />if(S_OK == hr)<br />{<br />SetDlgItemText(IDC_STAT,"代理設定完成!");<br />return;<br />}<br />if(E_INVALIDARG == hr)<br />{<br />SetDlgItemText(IDC_STAT,"代理參數錯誤!");<br />return;<br />}<br />MessageBox("設定失敗!");<br />}</p><p>void CProxyDlg::OnButtonUpdate()<br />{<br />// TODO: Add your control notification handler code here<br />m_Web.Navigate("http://www.ip138.com",NULL,NULL,NULL,NULL);<br />}<br />
3、程式運行效果:
在 Process Explorer中查看屬性:
三、源碼下載:
VC6工程: http://download.csdn.net/source/1655998
免費代理: http://www.pass-e.com/proxy/