ガジェット用のActiveXコントロールを作る

test54_01.gif
Windows Vistaで利用できるガジェットはhtmlとxmlファイルで構成される。htmlファイルではjavascriptなどが利用できるため、それなりに凝った動作を実装できる。とは言うもののスクリプトには限界がある。ActiveXコンポーネントなどを利用すればより自由な実装ができる。
ガジェットから使えるActiveXコンポーネントを作成しよう。Visual Studio 2005の「ファイル」メニューの「新規作成」から「プロジェクト」を選択する。

test54_02.gif
左側のプロジェクトの種類にある「Visual C++」以下の「ATL」を選択する。そしてテンプレートとして「ATLプロジェクト」を指定する。ここではプロジェクト名を「Test54」とした。

test54_03.gif
ATLプロジェクトウィザードではデフォルトの設定を用いる。

test54_04.gif
プロジェクトが自動生成したら「プロジェクト」メニューから「クラスの追加」を選択する。

test54_05.gif
そしてカテゴリ「ATL」にある「ATLコントロール」を追加する。

test54_06.gif
ここでは短い名前として「TestButton」を指定した。ほかの入力欄は自動的に埋まる。

test54_07.gif
次に「表示」タブにあるコントロールの追加から「Button」を選択する。これでコントロールの設定が終わったので「完了」ボタンを押す。

test54_08.gif
コントロールが追加されたら生成したソースファイルの中から「TestButton.h」をダブルクリックする。そしてソースコードの中から「OnBNClicked」関数を探す。

test54_09.gif この関数は名前の通りボタンが押された時に実行されるものだここにメッセージボックスを表示するための命令を追加する。
	LRESULT OnBNClicked(WORD /*wNotifyCode*/, WORD /*wID*/, HWND /*hWndCtl*/, BOOL& /*bHandled*/)
	{
		// TODO : ユーザーのコードをここに追加してください。

		::MessageBox(NULL,_T("ボタンが押されました!"),_T(""),MB_OK);

		return 0;
	}


test54_10.gif
次に作成したコントロールをWindows Vistaにセットアップするためのインストーラーを作成する。

「ファイル」メニューの「追加」から「新しいプロジェクト」を選択する。「追加」であることに注意すること。「新規作成」を利用してはいけない。

test54_11.gif
プロジェクトの種類として「セットアップと配置」を、テンプレートは「セットアップウィザード」を選択する。

test54_12.gif
これでインストーラーを作成するためのウイザードが開いた。

test54_13.gif
ここはデフォルトのまま次へ進む。

test54_14.gif
そして含めるプロジェクト出力の選択では「Test54のぷらいパリ出力」にチェックを入れる。これで「完了」ボタンを押す。

test54_15.gif
セットアッププロジェクトが生成したら「アプリケーションフォルダ」にある「Test54(アクティブ)のプライマリ出力」を右クリックして「プロパティウィンドウ」を開く。

test54_16.gif
開いたら「Register」の項目を「vsdrpCOMSelfReg」に変更する。これを行わないとインストールしても作成したActiveXコントロールが利用できない。

test54_17.gif
最後にツールバー部分のビルドモード選択欄から「Release」を選択してSetup1の右クリックメニューから「リビルド」を選択して実行ファイルを生成する。

test54_21.gif
生成したセットアップファイル2つをWindows Vistaへコピーする。

test54_22.gif
そして「Setup.exe」を起動する。

test54_23.gif
すると警告画面が現れる。ここで「許可」を選択する。

test54_24.gif
するとインストーラーが起動するのでセットアップを続ける。

test54_25.gif
インストール先フォルダなどの設定項目はそのままでいい。

test54_26.gif

test54_27.gif

test54_28.gif
これでインストールが無事完了した。

test54_29.gif
インストール中に「モジュール○○で登録に失敗しました。HRESULT -2147010895。サポート担当者に問い合わせてください。」というエラーが生じた場合は、リビルドするときに「Release」を選択せずに「Debug」のままである可能性が高い。もう一度リビルドからやり直す。

test54_18.gif
インストーラーを作る時にガジェット用のhtmlやxmlファイルを自動インストールするようにもできるが、ここではその設定を行わなかった。そのためこのままではガジェットを利用できない。

次にガジェット用のhtmlとxmlファイルを作成する。再び開発環境に戻り、プロジェクトフォルダにある「TestButton.htm」のソースコードを見る。

test54_19.gif
ここで赤線で示した部分をクリップボードにコピーしてガジェット用htmlファイル内で利用する。さらにxmlファイルも作成する。

■htmlファイル。ここではファイル名を「Test54.html」とした。
<html>
<head>
</head>

<body style="width:100%;height:100px;"onload="javascript:Test();">

<OBJECT ID="TestButton" CLASSID="CLSID:1C335D84-2F4F-43C9-A378-6197FCD35E34"></OBJECT>

</body>
</html>
■xmlファイル。ここではファイル名を「gadget.xml」とする。
<?xml version="1.0" encoding="utf-8" ?>
<gadget>
	<name>Test54</name>
	<namespace>Test54</namespace>
	<version>1.0.0.0</version>
	<description>Test54 Gadget</description>
	<author name="usefullcode.net">
		<info url="www.usefullcode.net" />
	</author>
	<copyright>2006</copyright>
	<hosts>
		<host name="sidebar">
			<base type="HTML" apiVersion="1.0.0" src="Test54.html" />
			<platform minPlatformVersion="0.3" />
			<permissions>Full</permissions>
		</host>
	</hosts>
	<version value="1.0.0.0" MinPlatformVersion="0.1"/>
</gadget>

test54_20.gif
作成したhtmlとxmlファイルを
「C:\Users\○○\AppData\Local\Microsoft\ Windows Sidebar\Gadgets\Test54.gadget」
に保存する。これでガジェットを利用するための準備が整った。

test54_30.gif
サイドバーで右クリックをして現れたメニューから「ガジェットの追加」を選択する。

test54_31.gif
そして一覧の中にある「Test54」をダブルクリックする。するとサイドバーに作成したガジェットが表示される。

test54_32.gif
htmlファイルやボタンデザインの設定を行わなかったためにボタンに見えないかもしれないが一応ボタンらしきものが表示されている。このボタンをクリックすると...

test54_33.gif
メッセージボックスが表示された。

ここではメッセージボックスの表示だけだがOnBnClickedに処理を記述すれば何でもできる。またボタン以外のコントロールとして作成することもできる。

プロジェクトファイルをダウンロード


カテゴリー「ガジェット(Vista)」 のエントリー