天天看点

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>

这样就可以了。

好了大家自己试试吧。