其實在C#中使用webBrowser大家應該都會了,論壇也有很多相前的例子大家可以查詢一下就知道了
但是像直接使用浏覽器一樣設定代理 的方法可能很多人還不知道吧。
這個其實是調用一個Dll檔案進行設定的,
下面大家跟我一起來看看吧
首先還是要先建一個結構就是代理資訊的結構體
如下
[C#] 純文字檢視 複制代碼
<a href="http://www.sufeinet.com/#">?</a>
01
02
03
04
05
06
07
08
09
<code>/// <summary></code>
<code> </code><code>/// 代理結構體</code>
<code> </code><code>/// </summary></code>
<code> </code><code>public</code> <code>struct</code> <code>Struct_INTERNET_PROXY_INFO</code>
<code> </code><code>{</code>
<code> </code><code>public</code> <code>int</code> <code>dwAccessType;</code>
<code> </code><code>public</code> <code>IntPtr proxy;</code><code>//IP以及端口号</code>
<code> </code><code>public</code> <code>IntPtr proxyBypass;</code>
<code> </code><code>};</code>
下面是如何 設定代理 的具體實作
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<code> </code><code>/// 設定代理的Api</code>
<code> </code><code>/// </summary></code>
<code> </code><code>/// <returns></returns></code>
<code> </code><code>[DllImport(</code><code>"wininet.dll"</code><code>, SetLastError =</code><code>true</code><code>)]</code>
<code> </code><code>private</code> <code>static</code> <code>extern</code> <code>bool</code> <code>InternetSetOption(IntPtr hInternet,</code><code>int</code> <code>dwOption, IntPtr lpBuffer,</code><code>int</code> <code>lpdwBufferLength);</code>
<code> </code><code>/// <summary></code>
<code> </code><code>/// 代理IP以及端口号</code>
<code> </code><code>/// <param name="strProxy"></param></code>
<code> </code><code>private</code> <code>void</code> <code>RefreshIESettings(</code><code>string</code> <code>strProxy)</code>
<code> </code><code>{</code>
<code> </code><code>const</code> <code>int</code> <code>INTERNET_OPTION_PROXY = 38;</code>
<code> </code><code>const</code> <code>int</code> <code>INTERNET_OPEN_TYPE_PROXY = 3;</code>
<code> </code><code>Struct_INTERNET_PROXY_INFO struct_IPI;</code>
<code> </code><code>// Filling in structure</code>
<code> </code><code>struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY;</code>
<code> </code><code>struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy);</code>
<code> </code><code>struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi(</code><code>"local"</code><code>);</code>
<code> </code><code>// Allocating memory</code>
<code> </code><code>IntPtr intptrStruct = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI));</code>
<code> </code><code>// Converting structure to IntPtr</code>
<code> </code><code>Marshal.StructureToPtr(struct_IPI, intptrStruct,</code><code>true</code><code>);</code>
<code> </code><code>bool</code> <code>iReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, Marshal.SizeOf(struct_IPI));</code>
<code> </code><code>}</code>
使用的時候也非常的簡單
<code>RefreshIESettings(</code><code>"41.129.53.227:80"</code><code>);</code>
<code></code><code>webBrowser1.Navigate(</code><code>"http://www.sufeinet.com"</code><code>);</code>
這樣就可以了。
好了大家自己試試吧。