我正在尝试实施 IInternetZoneManager 在.NET中使用Webbrowser Control但我不知道该怎么做。

我找不到任何关于此实现的托管代码示例。关于OLE的东西我很糟糕。

有人可以提供样品吗?我花了大约2天没有运气。

有帮助吗?

解决方案

这是我转换时得到的结果:

public class Constants
{
    public const int MAX_PATH = 260;
    public const int MAX_ZONE_PATH = 260;
    public const int MAX_ZONE_DESCRIPTION = 200;
}

[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Unicode)]
public struct ZONEATTRIBUTES
{
    public uint cbSize;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.MAX_PATH)]
    public string szDizplayName;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.MAX_ZONE_DESCRIPTION)]
    public string szDescription;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = Constants.MAX_PATH)]
    public string szIconPath;
    public uint dwTemplateMinLevel;
    public uint dwTemplateRecommended;
    public uint dwTemplateCurrentLevel;
    public uint dwFlags;
}

public enum URLZONEREG
{
    URLZONEREG_DEFAULT = 0,
    URLZONEREG_HKLM,
    URLZONEREG_HKCU
}

[Guid("79eac9ef-baf9-11ce-8c82-00aa004ba90b")]
[ComImport]
public interface IInternetZoneManager
{
    void CopyTemplatePoliciesToZone(uint dwTemplate, uint dwZone, uint dwReserved);
    void CreateZoneEnumerator(ref uint pdwEnum, ref uint pdwCount, uint dwFlags);
    void DestroyZoneEnumerator(uint dwEnum);
    void GetZoneActionPolicy(uint dwZone, uint dwAction, IntPtr pPolicy, uint cbPolicy, 
        URLZONEREG urlZoneReg);
    void GetZoneAt(uint dwEnum, uint dwIndex, ref uint pdwZone);
    void GetZoneAttributes(uint dwZone, ref ZONEATTRIBUTES pZoneAttributes);
    void GetZoneCustomPolicy(uint dwZone, [In] ref Guid guidKey, ref IntPtr ppPolicy,
        ref uint pcbPolicy, URLZONEREG urlZoneReg);
    void LogAction(uint dwAction, [MarshalAs(UnmanagedType.LPWStr)] string pwszUrl, 
        [MarshalAs(UnmanagedType.LPWStr)] string pwszText, uint dwLogFlags);
    void PromptAction(uint dwAction, IntPtr hwndParent, [MarshalAs(UnmanagedType.LPWStr)] string pwszUrl,
        [MarshalAs(UnmanagedType.LPWStr)] string pwszText, uint dwPromptFlags);
    void SetZoneActionPolicy(uint dwZone, uint dwAction, IntPtr pPolicy, uint cbPolicy,
        URLZONEREG urlZoneReg);
    void SetZoneAttributes(uint dwZone, ref ZONEATTRIBUTES pZoneAttributes);
    void SetZoneCustomPolicy(uint dwZone, [In] ref Guid guidKey, IntPtr pPolicy,
        uint pcbPolicy, URLZONEREG urlZoneReg);
}

我也在 pinvoke.net 上发布了这个定义:

http://www.pinvoke.net/default.aspx/Interfaces.IInternetZoneManager

一般来说,你应该首先查看互操作定义(如果不存在则有所贡献)。

其他提示

我不知道这是否有帮助,但他似乎正在使用C ++应用程序中的界面:

监控IE设置的变化

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top