天天看點

C#webBrowser使用代理伺服器的方法winform

其實在C#中使用webBrowser大家應該都會了,論壇也有很多相前的例子大家可以查詢一下就知道了

但是像直接使用浏覽器一樣設定代理 的方法可能很多人還不知道吧。

這個其實是調用一個Dll檔案進行設定的,

下面大家跟我一起來看看吧

首先還是要先建一個結構就是代理資訊的結構體

如下

[C#] 純文字檢視 複制代碼

<a href="http://www.sufeinet.com/#">?</a>

01

02

03

04

05

06

07

08

09

<code>/// &lt;summary&gt;</code>

<code>   </code><code>/// 代理結構體</code>

<code>   </code><code>/// &lt;/summary&gt;</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>/// &lt;/summary&gt;</code>

<code>        </code><code>/// &lt;returns&gt;&lt;/returns&gt;</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>/// &lt;summary&gt;</code>

<code>        </code><code>/// 代理IP以及端口号</code>

<code>        </code><code>/// &lt;param name="strProxy"&gt;&lt;/param&gt;</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>

這樣就可以了。

好了大家自己試試吧。