.NET実践プログラミング

.NETでカスタム・プラグインを開発できる「Google Deskbar」

デジタルアドバンテージ
2004/12/15
Page1 Page2 Page3

■Visual Studio .NETを利用したプラグインの開発

 ここではまず、Visual Studio .NET 2003(以下、VS.NET)とVisual Basic .NET(以下、VB.NET)を使って、Hello World的な簡単なプラグインを作成してみる。

 Visual Studio .NETを利用する場合には、新規プロジェクトとして「クラス ライブラリ」を選択する。そしてソリューション・エクスプローラから、参照設定として、SDKに含まれている「deskbarex.dll」を追加する。

「deskbarex.dll」の参照設定の追加
SDKに含まれる「deskbarex.dll」には、プラグインの開発に必要なICustomSearchインターフェイスの定義などが含まれている。

 次に、deskbarex.dllで定義されているICustomSearchインターフェイス(名前空間はGoogle.Desktop)を実装したクラスを記述する。Google Deskbarは、このインターフェイスを経由して、プラグインで実装されている機能を呼び出すからだ。

 ICustomSearchインターフェイスでは次の3つのメソッドが定義されており、このインターフェイスを実装するクラスでは、最低限これらのメソッドの内容を記述する必要がある。

メソッド 処理内容
string Title() メニューに表示される文字列を返す
OutputType GetOutputType() 結果を表示する形式を返す
string Run(string query, OutputType browser_type) 検索キーワードを受け取り、文字列、処理結果を含んだファイルの名前、あるいはURLを返す
ICustomSearchインターフェイスで定義されている3つのメソッド

 OutputType型は、同じくdeskbarex.dllで定義されている列挙体で、以下の3つの値が定義されている。

説明
OutputType.kBrowser 処理結果をブラウザで表示
OutputType.kViewer 処理結果をmini-viewerで表示
OutputType.kDeskbar 処理結果をGoogle Deskbarのテキストボックスに表示
OutputType列挙体で定義されている3つの値

 上記3つのメソッドが呼び出される手順を次にまとめた。

  1. Titleメソッドは、Google Deskbarのメニューが表示されるときに呼び出される。このメソッドでは、単にメニューに表示される項目名を文字列として返せばよい。

  2. 検索キーワードが入力されて、メニューよりプラグインが実行されると、最初にGetOutputTypeメソッドが呼び出される。このメソッドでは、プラグインでの処理結果を表示したい形式を返す。ただし、Google Deskbarのオプションによりユーザーはmini-viewerを利用するかどうかを選択できるので、このメソッドでmini-viewerでOutputType.kViewerを返したとしても、ブラウザで表示される可能性もある。

  3. 最後に、入力された検索キーワードとともにRunメソッドが呼び出される。このメソッドの第2パラメータには、確定した処理結果の表示形式が渡される。表示形式がOutputType.kDeskbarの場合には、このメソッドが返す文字列がGoogle Deskbarのテキストボックスに表示されるだけで、ブラウザやmini-viewerは表示されない。OutputType.kDeskbar以外の場合には、処理結果をファイルとして作成し、そのファイルのフルパス名をメソッドの戻り値として返す。あるいは特定のURLを返してもよい。ブラウザあるいはmini-viewerには、そのファイルの内容、あるいはURLで指定したページが表示されることになる。

 それではコードを記述していこう。VS.NETでは、使用する名前空間を「Import Google.Desktop」と先頭行に記述し、クラスに対して実装するインターフェイスを「Implements ICustomSearch」として記述すれば、次の画面のように、実装の必要なメソッドの定義を自動作成してくれる。

VS.NETにより自動生成された3つのメソッドの定義
クラスの定義部分に「Implements ICustomSearch」を追加してリターン・キーを押せば、必要なメソッドの定義が自動的に入力される。

 ここでは、以下のリストの太字で示した3つの行を追加する。

Imports Google.Desktop

Public Class Class1
  Implements ICustomSearch

  Public Function GetOutputType() As Google.Desktop.OutputType Implements Google.Desktop.ICustomSearch.GetOutputType
    Return OutputType.kDeskbar
  End Function

  Public Function Run(ByVal q As String, ByVal browser_type As Google.Desktop.OutputType) As String Implements Google.Desktop.ICustomSearch.Run
    Return "検索語は「" + q + "」"
  End Function

  Public Function Title() As String Implements Google.Desktop.ICustomSearch.Title
    Return "Deskbarのテスト"
  End Function
End Class
Visual Basic .NETで記述したプラグインの記述例
このプラグインでは、入力された文字列を加工し、それをGoogle Deskbarのテキストボックスに表示する。Google Deskbarのメニューには「Deskbarのテスト」という項目が追加される。

 あとは、ソリューションのビルドを行って、出来上がったDLLファイル(ここではプロジェクト名を「DeskbarHelloWorld」としたので、「DeskbarHelloWorld.dll」というDLLファイルが作成される)を、Google DeskbarのPluginsディレクトリにコピーすれば作業は完了である。

 メニューを開けば、Titleメソッドで返した文字列が項目として追加されているはずだ。

メニューに登録された自作プラグイン
プラグインをDLLファイルとして作成しPluginsディレクトリにコピーすれば、メニューを開いたときにプラグインが自動的にロードされ、メニューに追加される。

 適当な文字列を入力して、この[Deskbarのテスト]の項目を実行すれば、次のように、その結果がテキストボックスに表示される。

[Deskbarのテスト]の実行結果
このプラグインは、入力された文字列を加工してテキストボックスに書き戻すだけである。

 このように、Pluginsディレクトリにコピーされたプラグインは、自動的にメモリ上にロードされてメニューに表示される(メニューの表示時に自動的にロードされる)。しかし、コードを修正して再ビルドしたDLLファイルを上書きする場合には注意が必要である。ロードされているDLLファイルはGoogle Deskbarのプロセスによりロックされるため、削除や上書きができなくなっているからである。

 このため、プラグインの削除や上書きを行うには明示的にプラグインをアンロードする必要がある。これには、検索キーワードの入力状態で、「Ctrl+Alt+Shift+U」を入力する。すると、右のようなメッセージ・ボックスが表示されて、ロードされているすべてのプラグインがアンロードされ、削除や上書きが可能となる。

プラグインのアンロード成功を示すメッセージ・ボックス

 続いては、もう少し本格的なプラグインを作ってみよう。


 INDEX
  .NET実践プログラミング
  .NETでカスタム・プラグインを開発できる「Google Deskbar」
    1.Google Deskbarの基本的な使い方
  2.Visual Studio .NETを利用したプラグインの開発
    3.コマンドプロンプトを実行するプラグイン
 


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間