YouTube | Facebook | X(Twitter) | RSS

ArcObjectsで作成したツールバーをインストール時にデフォルトで表示状態にする方法

2008/7/23 (水)

ESRI .NET Integration Frameworkを使うとボタンやツール、ツールバーなどが大変楽に作成できますが、デフォルトではレジストリ登録だけではツールバーが表示される状態にはなりません。これをインストール時点でツールバーが表示される状態にする方法が簡単に設定できます。

実際にはComponent Categoryにレジストリ登録する際の記述が必要ですが、BaseToolbarを作成した後に、

Visual Studio 2005 > Add Component Category を開き、"ArcMap Command Bar"

を選択して"PremierToolbar"をTrueに設定すればOK。この設定で自動的にComponent Categoryに登録する際のコードを追記してくれます。実際にはRegionで隠れている部分を展開すると追加されたコードを確認することができます。

#Region "ArcGIS Component Category Registrar generated code"
''' <summary>
''' Required method for ArcGIS Component Category registration -
''' Do not modify the contents of this method with the code editor.
''' </summary>
Private Shared Sub ArcGISCategoryRegistration(ByVal registerType As Type)
Dim regKey As String = String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", registerType.GUID)
MxCommandBars.Register(regKey)

MxCommandBars_PremierToolbar(True, registerType)

End Sub
''' <summary>
''' Required method for ArcGIS Component Category unregistration -
''' Do not modify the contents of this method with the code editor.
''' </summary>
Private Shared Sub ArcGISCategoryUnregistration(ByVal registerType As Type)
Dim regKey As String = String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", registerType.GUID)
MxCommandBars.Unregister(regKey)

MxCommandBars_PremierToolbar(False, registerType)

End Sub

''' <summary>
''' Required MxCommandBars Premier Toolbar registration method -
''' Do not modify the contents of this method with the code editor.
''' </summary>
Private Shared Sub MxCommandBars_PremierToolbar(ByVal reg As Boolean, ByVal t As Type)
If reg Then
Dim settingsKey As Microsoft.Win32.RegistryKey
settingsKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\ESRI", True)
If Not settingsKey Is Nothing Then
Dim premierKey As Microsoft.Win32.RegistryKey
premierKey = settingsKey.CreateSubKey("ArcMap\Settings\PremierToolbar\{" + t.GUID.ToString() + "}")
premierKey.Close()
settingsKey.Close()
End If
Else
Dim toolbarKey As Microsoft.Win32.RegistryKey
toolbarKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\ESRI\ArcMap\Settings\PremierToolbar\{" + t.GUID.ToString() + "}", True)
If Not toolbarKey Is Nothing Then
toolbarKey.DeleteSubKey(String.Empty)
toolbarKey.Close()
End If
End If
End Sub

2008-08-14追記
ただし、このツールには不具合があり、自動生成されるコードに誤りがあるため正常に動作しません。そのため、手動で以下のコードを修正する必要があります("s"を追記)。ArcGIS 9.2 SP5でも修正されていませんが、9.3では修正されるらしいです。

.....
premierKey = settingsKey.CreateSubKey("ArcMap\Settings\PremierToolbars\{" + t.GUID.ToString() + "}")
.....
toolbarKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\ESRI\ArcMap\Settings\PremierToolbars\{" + t.GUID.ToString() + "}", True)

  • この記事を書いた人

羽田 康祐

伊達と酔狂のGISエンジニア。GIS上級技術者、Esri認定インストラクター、CompTIA CTT+ Classroom Trainer、潜水士、PADIダイブマスター、四アマ。WordPress は 2.1 からのユーザーで歴だけは長い。 代表著書『"地図リテラシー入門―地図の正しい読み方・描き方がわかる』 GIS を使った自己紹介はこちら。ESRIジャパン(株)所属、元青山学院大学非常勤講師を兼務。日本地図学会第31期常任委員。発言は個人の見解です。

-プログラミング, ArcGIS
-