我正在尝试使用 Webbrowser Control 在 .NET 中实现IInternetZoneManager,但我不知道该怎么做。
我找不到有关此实现的任何托管代码示例。我对 OLE 的东西很不满意。
任何人都可以提供一个样本吗?我花了大约 2 天没有运气。
我正在尝试使用 Webbrowser Control 在 .NET 中实现IInternetZoneManager,但我不知道该怎么做。
我找不到有关此实现的任何托管代码示例。我对 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++ 应用程序中的界面: