Webbrowser コントロールを使用して .NET にIInternetZoneManagerを実装しようとしていますが、何をすべきかわかりません。
この実装に関するマネージ コードの例は見つかりませんでした。私はOLEのことはかなり苦手です。
誰でもこれに関するサンプルを提供できますか? 私は運が悪いと約2日間過ごします。
Webbrowser コントロールを使用して .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++ アプリでインターフェイスを使用しているようです: