C'est ce que je reçois quand je le convertir:
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);
}
J'ai aussi posté la définition à pinvoke.net:
http://www.pinvoke.net/default.aspx/Interfaces.IInternetZoneManager
Généralement, vous devriez d'abord y chercher les définitions d'interopérabilité (et contribuer si ce n'est pas le cas).
J'ai vu celui-là mais aucune idée comment convertir ce code en .NET et l'implémenter au contrôle de Webbrowser. Il existe d'autres exemples de code C++ sur Internet, mais on ne sait pas comment les utiliser dans le monde .NET. –