2009-01-06 6 views
0

J'essaie d'implémenter IInternetZoneManager dans .NET avec Webbrowser Control mais je n'ai aucune idée de ce qu'il faut faire.Implémentation de IInternetZoneManager dans .NET

Je n'ai trouvé aucun exemple de code managé concernant cette implémentation. Je suis assez mauvais à propos des trucs OLE.

Quelqu'un peut-il fournir un échantillon à ce sujet? Je passe environ 2 jours sans chance.

Répondre

1

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).

0

Je ne sais pas si cela aide, mais il semble utiliser l'interface dans une application C++:

Monitoring Changes in IE Settings

+0

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. –

Questions connexes