役に立ちましたか?

解決

これは、変換時に得られるものです。

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