问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501
你好,欢迎来到懂视!登录注册
当前位置: 首页 - 正文

c#如何在win7下设置IE代理的完美解决方案

发布网友 发布时间:2022-04-30 17:55

我来回答

1个回答

热心网友 时间:2022-06-28 18:28

using System;using System.Runtime.InteropServices;using System.ComponentModel;namespace PoshHttp
{ public class Proxies
{ public static bool UnsetProxy()
{ return SetProxy(null, null);
} public static bool SetProxy(string strProxy)
{ return SetProxy(strProxy, null);
} public static bool SetProxy(string strProxy, string exceptions)
{
InternetPerConnOptionList list = new InternetPerConnOptionList(); int optionCount = string.IsNullOrEmpty(strProxy) ? 1 : (string.IsNullOrEmpty(exceptions) ? 2 : 3);
InternetConnectionOption[] options = new InternetConnectionOption[optionCount]; // USE a proxy server ...
options[0].m_Option = PerConnOption.INTERNET_PER_CONN_FLAGS;
options[0].m_Value.m_Int = (int)((optionCount < 2) ? PerConnFlags.PROXY_TYPE_DIRECT : (PerConnFlags.PROXY_TYPE_DIRECT | PerConnFlags.PROXY_TYPE_PROXY)); // use THIS proxy server
if (optionCount > 1)
{
options[1].m_Option = PerConnOption.INTERNET_PER_CONN_PROXY_SERVER;
options[1].m_Value.m_StringPtr = Marshal.StringToHGlobalAuto(strProxy); // except for these addresses ...
if (optionCount > 2)
{
options[2].m_Option = PerConnOption.INTERNET_PER_CONN_PROXY_BYPASS;
options[2].m_Value.m_StringPtr = Marshal.StringToHGlobalAuto(exceptions);
}
} // default stuff
list.dwSize = Marshal.SizeOf(list);
list.szConnection = IntPtr.Zero;
list.dwOptionCount = options.Length;
list.dwOptionError = 0; int optSize = Marshal.SizeOf(typeof(InternetConnectionOption)); // make a pointer out of all that ...
IntPtr optionsPtr = Marshal.AllocCoTaskMem(optSize * options.Length); // copy the array over into that spot in memory ...
for (int i = 0; i < options.Length; ++i)
{
IntPtr opt = new IntPtr(optionsPtr.ToInt32() + (i * optSize));
Marshal.StructureToPtr(options[i], opt, false);
}

list.options = optionsPtr; // and then make a pointer out of the whole list
IntPtr ipcoListPtr = Marshal.AllocCoTaskMem((Int32)list.dwSize);
Marshal.StructureToPtr(list, ipcoListPtr, false); // and finally, call the API method!
int returnvalue = NativeMethods.InternetSetOption(IntPtr.Zero,
InternetOption.INTERNET_OPTION_PER_CONNECTION_OPTION,
ipcoListPtr, list.dwSize) ? -1 : 0; if (returnvalue == 0)
{ // get the error codes, they might be helpful
returnvalue = Marshal.GetLastWin32Error();
} // FREE the data ASAP Marshal.FreeCoTaskMem(optionsPtr);
Marshal.FreeCoTaskMem(ipcoListPtr); if (returnvalue > 0)
{ // throw the error codes, they might be helpful
throw new Win32Exception(Marshal.GetLastWin32Error());
} return (returnvalue < 0);
}
} #region WinInet structures
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public struct InternetPerConnOptionList
{ public int dwSize; // size of the INTERNET_PER_CONN_OPTION_LIST struct
public IntPtr szConnection; // connection name to set/query options
public int dwOptionCount; // number of options to set/query
public int dwOptionError; // on error, which option failed //[MarshalAs(UnmanagedType.)]
public IntPtr options;
};

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public struct InternetConnectionOption
{ static readonly int Size; public PerConnOption m_Option; public InternetConnectionOptionValue m_Value; static InternetConnectionOption()
{
InternetConnectionOption.Size = Marshal.SizeOf(typeof(InternetConnectionOption));
} // Nested Types [StructLayout(LayoutKind.Explicit)] public struct InternetConnectionOptionValue
{ // Fields
[FieldOffset(0)] public System.Runtime.InteropServices.ComTypes.FILETIME m_FileTime;
[FieldOffset(0)] public int m_Int;
[FieldOffset(0)] public IntPtr m_StringPtr;
}
} #endregion

#region WinInet enums //
// options manifests for Internet{Query|Set}Option // public enum InternetOption : uint
{
INTERNET_OPTION_PER_CONNECTION_OPTION = 75
} //
// Options used in INTERNET_PER_CONN_OPTON struct // public enum PerConnOption
{
INTERNET_PER_CONN_FLAGS = 1, // Sets or retrieves the connection type. The Value member will contain one or more of the values from PerConnFlags
INTERNET_PER_CONN_PROXY_SERVER = 2, // Sets or retrieves a string containing the proxy servers.
INTERNET_PER_CONN_PROXY_BYPASS = 3, // Sets or retrieves a string containing the URLs that do not use the proxy server.
INTERNET_PER_CONN_AUTOCONFIG_URL = 4//, // Sets or retrieves a string containing the URL to the automatic configuration script.
} //
// PER_CONN_FLAGS // [Flags] public enum PerConnFlags
{
PROXY_TYPE_DIRECT = 0x00000001, // direct to net
PROXY_TYPE_PROXY = 0x00000002, // via named proxy
PROXY_TYPE_AUTO_PROXY_URL = 0x00000004, // autoproxy URL
PROXY_TYPE_AUTO_DETECT = 0x00000008 // use autoproxy detection } #endregion

internal static class NativeMethods
{
[DllImport("WinInet.dll", SetLastError = true, CharSet = CharSet.Auto)]
[return: MarshalAs(UnmanagedType.Bool)] public static extern bool InternetSetOption(IntPtr hInternet, InternetOption dwOption, IntPtr lpBuffer, int dwBufferLength);
}
}
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com
揩布的成语揩布的成语是什么 民事诉讼法对复印件质证规定是怎样的 告诉我请小学六年级数学书上册练习二十一答案好吗 身份证上的出生年月和学历证书上的出生年月不一致,参加司法考试可以吗... 要参加司法考试毕业证和身份证上的名字不一样怎么办 胆囊炎、胆囊结石的症状 胆囊炎胆结石的症状 win10怎么把默认设置改为microsoft edge 青岛市金钥匙幼儿园交流合作 青岛市金钥匙幼儿园教师队伍 win7的ie代理设置为所有地址使用相同代理在哪 苹果手机怎么升级联通4g网络 win7如何设置ie浏览器代理? 4g网络怎么升级4g+ 手机网络升4G怎么升 photoshop里面,添充颜色的快捷键是哪个? 小学生必备古诗八十首,古诗名单 糖醋土豆丝的做法是什么? 小学生必背古诗词大全的内容简介 我刚进合众保险公司上班,我不想干了,能不能把我的工号退了? 长毛暹罗猫的介绍 保险代理人怎样消除所在公司所上工号 小学生必背古诗75+80首 全部目录 怎么快速在新华保险公司消除工号? 中央空调四根铜管还是两根铜管 epson喷墨打印机卡纸如何修复 艺的繁体字怎么写啊 个人银行流水如何计算?最好举例说明 一件卷烟(50条)有多重? 香烟尺寸是多少? 为什么我 win7IE代理总设置不了。。。 win7 IE浏览器输入网址后 显示空白页? IE8怎么不能设置代理 我是win7系统,我IE浏览器换了代理IP后部分网页打不开是什么情况。只是部分打不开。例如打开QQ空间会自动 ie代理服务器设置的问题 chrome 傲游 批处理,怎么能把IE代理显示出来 请问win7怎么设置默认通过代理服务器连接网络? 急急急请问大神WIN7注册表中如何勾选IE 局域网设置内的自动检测设置 win7 windows无法自动检测此网络的代理设置 AI旋转复制 跪求二战影视作品,【免费高清】在线观看百度网盘资源 盘点必看经典二战电影,【免费高清】在线观看百度网盘资源 盘点高分二战电影,【免费高清】在线观看百度网盘资源 跪求优秀二战电影推荐,【免费高清】在线观看百度网盘资源 盘点最新二战电影大全,【在线观看】免费百度云资源 跪求那些关于二战的电影,【免费高清】在线观看百度网盘资源 跪求二战的经典电影,【免费高清】在线观看百度网盘资源 盘点60部经典二战电影,【免费高清】在线观看百度网盘资源 盘点二战经典电影完整版,【免费高清】在线观看百度网盘资源 跪求关于二战的电影,【免费高清】在线观看百度网盘资源
  • 焦点

最新推荐

猜你喜欢

热门推荐