ShellUIHelper

IE7 では、ShellUIHelper に検索プロバイダの登録機能などを定義している IShellUIHelper2 が追加実装されているので SHDocVw が次のようになる。Guid は A7FE6EDA-1932-4281-B881-87B31B8BC52C である。

using System.Runtime.InteropServices;

namespace SHDocVw
{
    [Guid("A7FE6EDA-1932-4281-B881-87B31B8BC52C")]
    [CoClass(typeof(ShellUIHelperClass))]
    public interface ShellUIHelper : IShellUIHelper2
    {
    }
}

このインスタンスをIE6環境で生成しようとすると、IShellUIHelper2 がないため InvalidCastException で落ちる。そのため、個別に COM コクラスを定義する。以前のGuid は、64AB4BB7-111E-11D1-8F79-00C04FC2FBE1 である。

using System.Runtime.InteropServices;

namespace net.tilfin
{
    [ComImport(),
    Guid("64AB4BB7-111E-11D1-8F79-00C04FC2FBE1")]
    public class ShellUIHelper
    {
    }
}

「お気に入りの整理」を呼び出すサンプル

.NET 2.0 で IDocHostUIHandler ではなくそこから参照している MSHTML をロード後に ShowBrowserUI や IE コンポーネントで印刷機能がなぜか効かなくなる。(調査中)

object oHelper = new net.tilfin.ShellUIHelper();
SHDocVw.IShellUIHelper helper = (SHDocVw.IShellUIHelper)oHelper;
helper.ShowBrowserUI("OrganizeFavorites", ref arg);