其实在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>
这样就可以了。
好了大家自己试试吧。