【问题标题】:How do I use InternetSetOption?如何使用 InternetSetOption?
【发布时间】:2023-03-16 05:25:01
【问题描述】:

这个问题:

Using Proxy with web browser control

告诉我使用“InternetSetOption”。我该如何使用它?我如何在代码中实现它(例如?)?

谢谢!

【问题讨论】:

标签: c# proxy internetsetoption


【解决方案1】:
public struct Struct_INTERNET_PROXY_INFO
{
    public int dwAccessType;
    public IntPtr proxy;
    public IntPtr proxyBypass;
}

[DllImport("wininet.dll", SetLastError = true)]
private static extern bool InternetSetOption(
    IntPtr hInternet,
    int dwOption,
    IntPtr lpBuffer,
    int lpdwBufferLength);

private void RefreshIESettings(string strProxy)
{
    const int INTERNET_OPTION_PROXY = 38;
    const int INTERNET_OPEN_TYPE_PROXY = 3;

    Struct_INTERNET_PROXY_INFO struct_IPI;

    struct_IPI.dwAccessType = INTERNET_OPEN_TYPE_PROXY;
    struct_IPI.proxy = Marshal.StringToHGlobalAnsi(strProxy);
    struct_IPI.proxyBypass = Marshal.StringToHGlobalAnsi("local");

    IntPtr intptrStruct = Marshal.AllocCoTaskMem(Marshal.SizeOf(struct_IPI));

    // Converting structure to IntPtr
    Marshal.StructureToPtr(struct_IPI, intptrStruct, true);

    bool iReturn = InternetSetOption(IntPtr.Zero, INTERNET_OPTION_PROXY, intptrStruct, Marshal.SizeOf(struct_IPI));
}

private void Usage()
{
    RefreshIESettings("1.2.3.4:8080");
    object nullObject = 0;
    string strTemp = "";
    object nullObjStr = strTemp;
    axWebBrowser1.Navigate("http://test.com", ref nullObject, ref nullObjStr, ref nullObjStr, ref nullObjStr);
}

【讨论】:

  • 它说'axWebBrowser1'在当前上下文中不存在。 Marshal 在当前上下文中不存在。找不到 DllImport。 - 怎么了?我错过了什么?
  • @Jacob - 当然 axWebBrowser1 不存在,因为它是一个示例。您需要替换为对 WebBrowser 控件的引用。
  • 好吧,'Marshal' 和 'DllImport' 怎么样 - 没有它们就行不通?
  • @Jacob - 对于DllImport 添加'使用 System.Runtime.InteropServices'
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多