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

1
2
3
4
5
6
7
8
9
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 である。

1
2
3
4
5
6
7
8
9
using System.Runtime.InteropServices;
namespace net.tilfin
{
\[ComImport(),
Guid("64AB4BB7-111E-11D1-8F79-00C04FC2FBE1")\]
public class ShellUIHelper
{
}
}

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

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

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