Copyright: Program by NICOLE.,


NTASK-API

NICOLE TaskBar - Addon Programming Interface

Program by NICOLE., ( NIFTY-Serve ID : BXL01750 ) Copyright 1996.8

●使用上の注意（必ずお読み下さい）

●アドオンについて

●アドオンの開発に必要なもの

●アドオンのプログラムの仕方

●アドオンのインストール・アンインストールについて

●独自に開発したアドオンの配布公開について

●Delphi以外の言語でのアドオン開発のヒント

●TNicoleAddonコンポーネント

●質問や問い合わせ

●作者より


使用上の注意（必ずお読み下さい）

NTASK-API（NTASKAPI.PAS、ドキュメント、ソースリスト、サンプルプログラム）など、アドオンに関する事柄はライセンスフリーとして無保証です。従って、アドオンの開発によるトラブル、NTASK-APIをDelphiにインストールした事による不具合、独自に開発したアドオン配布に関するトラブルなど、アドオンに関係することには一切責任は持ちませんので、ご使用にあたっては、予めご了承願います。


アドオンについて

NICOLE TaskBarバージョン4.00より、外部プログラム（アドオン）により機能拡張ができる仕組み（NTASKAPI）がサポートされました。これにより NICOLE TaskBarをより便利に機能強化することができるようになります。

これは、標準Windows95タスクバーのアイコン通知領域にアイコンを追加して、様々な機能を提供するような感じに似たものでユーザーが自分の好きな機能を持ったアドオンをNICOLE TaskBarに組み込むことにより、自由にカスタマイズすることが可能になります。

アドオンを簡単に開発することができるように、Borland社のDelphi 2.0J用コンポーネント（TNicoleAddon）とサンプルプログラムを用意しましたので（自由に改造ＯＫです）Delphiユーザーの方は、是非、アドオン開発をしてみて下さい。

機能的に優れたアドオンや面白いアドオンの場合、標準アドオン集として NICOLE TaskBarの配布アーカイブに収録させていただくお願いをするかも知れませんので、その時は宜しくお願いします。


アドオンの開発に必要なもの

アドオンを作成するには、次のものが必要になります。

・NICOLE TaskBar バージョン4.00以上

・NTASK-APIコンポーネント

・Borland社のDelphi 2.0J

開発環境として Delphi を推薦する理由は、とても強力なWindowsプログラムを効率良く作成できる為です。

また、アドオンを簡単に作成する為の Delphi用コンポーネント（NTASK-APIコンポーネント）もソース付きで用意しましたので、あなたのDelphiに、NTASK-APIコンポーネントをインストールすれば、フォームにNTASKAPIのコンポーネントを張り付けプロパティを設定するだけで非常に簡単にアドオンを作成できるようになります。


アドオンのプログラムの仕方

アドオンは特に特殊なプログラム方法をするわけではなく、普通のWindowsプログラムと同じようにプログラムします。

これは、例えばWindows95標準のタスクバーのアイコン領域に対応したプログラムを作るのに似ています。

まず、Delphi 2.0Jを起動したら、NTASK-APIコンポーネント（ファイル名 NTASKAPI.PAS）をインストールします。

インストールの手順については、Delphiのマニュアルを参照してください。

そうすると、コンポーネントパレットに Nicole をいうページが追加され、そこに、NicoleButtonというコンポーネントが登録されます。

このTNicoleAddonコンポーネントは、NICOLE TaskBarとアドオンとのメッセージのやりとりをカプセル化しています。

NICOLE TaskBarとのメッセージ処理とか面倒臭いことは、このTNicoleAddonコンポーネントが全てやってくれますので、あとは、通常のDelphiのプログラム作成と同じように、フォームにTNicoleAddonコンポーネントを張り付けて、必要なプロパティやイベントを記述するだけで、アドオンが作成できるようになっています。

注意点としては、TNicoleAddonコンポーネントを複数使用する場合や、Application.OnMessageを独自に使いたい場合には、工夫が必要です。

TNicoleAddonコンポーネントは、実行時に Application.OnMessage に、NICOLE TaskBarとアドオンの間でやりとりされるメッセージ処理（MessageHandlerメソッド）をセットしてしまうからです。

作成したアドオンを実行したり、デバッグする時には、通常通り NICOLE TaskBarを起動した状態で行います。

NICOLE TaskBar側には特にデバッグモードとかは用意してありません。

アドオン開発段階で、テスト実行したときにエラーが発生して、NICOLE TaskBarにアドオンのボタンが残ってしまっても大丈夫です。NICOLE TaskBarはアドオンのボタンに対応したタスクが無効になると、それを感知して無効になったアドオンボタンを破棄してくれますので。


アドオンのインストール・アンインストール

アドオンのインストール・アンインストールについて

通常アドオンのインストールは、NICOLE TaskBarの「プロパティ」「アドオン」の画面で行います。

アドオン側からインストールをすることもできまして、その場合はTNicoleAddonコンポーネントのInstallメソッドを呼び出せば、インストールできます。

逆にアンインストールするには、Uninstallメソッドでできます。


独自に開発したアドオンの配布について

独自に開発したアドオンに対しては、完全ライセンスフリーとします。

自分が作成したアドオンは、自由に配布公開することができます。私（NICOLE）対して許可を得る必要もないし、連絡も必要ありません。

また、独自に開発したアドオンをシェアウェアにするのも、そのソースを公開するのも、開発者の完全自由です。

また、NTASK-APIコンポーネント（NTASKAPI.PAS、TNicoleAddon）やサンプルプログラムも、自由に改造してもらって良いです。

そして、それを配布公開するのも、完全自由です。

但し、私はアドオンに関してのトラブルなどには一切責任は持ちませんので、予めご了承下さい。


Delphi以外の言語でのアドオン開発のヒント

アドオンとNICOLE TaskBarとのメッセージのやりとりは、Windows-APIのSendMessageやPostMessageで行っています。

従って C/C++などで、直接Windows-APIを使ってアドオンを開発することも可能です。

詳しいメッセージ処理については、NTASKAPI.PASを参照してください。

SendMessageするには、送信先（NICOLE TaskBar）のウィンドウハンドルが必要になります、NICOLE TaskBarのウィンドウハンドルを得るには、FindWindowを使い下記のようにすると良いでしょう

void	foo(void)

{

HWND	NicoleTaskBar;

NicoleTaskBar = FindWindow(NICOLE_TaskBar, NICOLE TaskBar);

BtnWnd = SendMessage(NicoleTaskBar, NTASKBAR_BTN_CREATE, MyWindowHandle, 0);

}

アドオンとNICOLE TaskBarの間で、文字列をやりとりするには、グローバルアトムを利用します。

アトムは、受け取った側のプログラムが削除する仕様になっています。

void	SetHint(char *theHint)

{

SendMessage(NicoleTaskBar, NTASKBAR_BTN_SETHINT, BtnWnd, GlobalAddAtom(Hint));

//アドオンがアトムを送った場合は、受信側のNICOLE TaskBarが、GlobalDeleteAtomでアトムを削除してくれる

}


TNicoleAddon

TNiocleButtonコンポーネント

NICOLE TaskBarに対して、アドオンのボタンを作成したり、イベントを受け取ったりする処理をカプセル化したコンポーネントです。フォームに張り付けてプロパティやイベントを記述するだけで、NICOLE TaskBarにボタンを作成することができます。

プロパティ

Directory	NICOLE TaskBarのインストールされているパス

ExeName	NICOLE TaskBarの実行ファイル名

Filer	NICOLE TaskBarで使うファイラープログラムのパス

NicoleTaskBar	NICOLE TaskBarのウィンドウハンドル

Regist	NICOLE TaskBarがユーザー登録されているかどうか

Version	NICOLE TaskBarのバージョン

Copyright	アドオン情報

DragAccept	ドラッグ＆ドロップを受け付けるかどうか

Handle	ウィンドウハンドル

Height	高さ

Hint	ヒント文字列

Icon	アイコン

PopupMenu	ポップアップメニュー

メソッド

Create	コンストラクタ

Destroy	デスクラクタ

Click	OnClickにアタッチされたコードを呼び出す

DropFile	OnDropFileにアタッチされたコードを呼び出す

Paint	OnPaintにアタッチされたコードを呼び出す

MessageHandler	NICOLE TaskBarからのメッセージを処理する

Install	インストールする

Uninstall	アンインストールする

Blink	Ｎアイコンを点滅させる

イベント

OnClick	クリックされた

OnDropFile	ドラッグ＆ドロップされた

OnPaint	描写する

OnMouseEnter	マウスカーソルがボタン上に入ってきた

OnMouseLeave	マウスカーソルがボタン上から外れた


Directoryプロパティ

property	Directory : String

NICOLE TaskBarがインストールされているフォルダへのパスを示します

＊パスの最後には￥マークがついてます

例）	C:\PROGRAM\NTASKBAR\


ExeNameプロパティ

property	ExeName : String;

NICOLE TaskBarの実行ファイル名をフルパスで示します

例）	C:\PROGRAM\NTASKBAR\NTASKBAR.EXE


NicoleTaskBarプロパティ

property	NicoleTaskBar : HWND;

実行時のみ読込専用のプロパティです。

NICOLE TaskBarのウィンドウハンドルを示します

このプロパティは、アドオンがNICOLE TaskBarへメッセージを送るのに使用しています

また、このプロパティが０の時は、NICOLE TaskBarが起動していないことになります


Registプロパティ

property	Regist : Boolean;

実行時のみ読込専用のプロパティです。

NICOLE TaskBarがユーザー登録されているかどうかを示します。

TRUE = ユーザー登録されている

FALSE = されていない


Versionプロパティ

property	Version : String;

実行時のみ、読み出し専用のプロパティです。

現在実行されているNICOLE TaskBarのバージョンを文字列として返します

アドオンは、このプロパティをチェックして、希望のバージョンのNICOLE TaskBarが起動されているかどうか調べることができます


Filerプロパティ

property	Filer : String;

NICOLE TaskBarで標準的に使用するファイラーのプログラムへのパスを示します

このプロパティへ新たなファイラーのパスを指定すると、NICOLE TaskBarのファイラーを変更することができます

指定したファイラーのパスが間違えていると、NICOLE TaskBarはエクスプローラーをファイラーとして設定します


Copyrightプロパティ

property	Copyright : String;

アドオンに関する情報を示すプロパティです。動作に影響はありません。

例えば・・「Program by NICOLE., Version 1.00 . 1996.8」とか記述して下さい。


DragAcceptプロパティ

property	DragAccept : Boolean;

アドオンのボタンが、エクスプローラー等からのドラッグ＆ドロップを受け付けるかどうかを示します

TRUE = ドラッグ＆ドロップを受け付ける

FALSE = 受け付けない

実際にアドオンのボタンにファイル等がドロップされると、OnDropFileイベントが、ドロップされたファイルの数だけ発生します


Handleプロパティ

property	Handle : HWND;

実行時のみ、読み出し専用のプロパティです。

コンストラクタにより、NICOLE TaskBarへボタンを作成するメッセージを送り、作成されたボタンへのウィンドウハンドル（Windows-APIで使用可能な）が格納されています。


Heightプロパティ

property	Height : Integer;

ボタンの高さを示します。デフォルトの高さは35です。


Hintプロパティ

property	Hint : String;

ボタンの上にマウスカーソルがある時に表示されるヒント文字列を示します


Iconプロパティ

property	Icon : Ticon;

ボタンに表示するアイコンを格納します。特に設定しなくてもＯＫです。


PopupMenuプロパティ

property	PopupMenu : TPopupMenu;

ボタンの上でマウスの右クリックが押された時に表示されるポップアップメニューを格納します


Create（コンストラクタ）

constructor	Create(theOwner:TComponent);

ボタンのコンストラクタです。

コンストラクタはNICOLE TaskBarに対してアドオンのボタンを作成するメッセージを送ります。メッセージを受け取ったNICOLE TaskBarは、アドオン用にボタンを作成して、作成されたボタンのウィンドウハンドルを返してきます。

コンストラクタは返されたウィンドウハンドルをHandleプロパティに格納します。

また、このコンストラクタでは、Application.OnMessage に自分のMessageHandlerを設定して、NICOLE TaskBarからのメッセージを処理するようになっています。従って複数のボタンを作成する場合や、アドオン自身がApplication.OnMessageを使いたい場合には注意が必要です。


Destroy（デストラクタ）

destructor	Destroy;

デストラクタです。

これが呼ばれると、NICOLE TaskBarに対してボタンを削除するメッセージを送り後始末をし、

Application.OnMessage に nil を設定します


Clickメソッド

procedure	Click;

OnClickにアタッチされたコードを呼び出します


Blinkメソッド

procedure	Blink(theBlink:Boolean; theIcon:TIcon);

NICOLE TaskBarのＮアイコンを点滅させます。この時点滅に使用するアイコンを指定することができます。

使い方としては、アドオンからの警告を意味する点滅とかですかね・・・

例えば・・・

スケジョラーのアドオンとかで、「指定の時間になりましたよ」と点滅させるとか

メモリ管理のアドオンで、「メモリが足りないよー」と点滅させるとか

単に好きなアイコンを表示させるとか

いろいろと活用できると思います。

引数

theBlink	TRUE	点滅する

FALSE	点滅しない

theIcon	点滅に使用するアイコン。NILを指定するとデフォルトに戻ります


DropFileメソッド

procedure	DropFile(Filename:String);

OnDropFileにアタッチされたコードを呼び出します。


Paintメソッド

procedure	Paint;

OnPaintにアタッチされたコードを呼び出します


MessageHandlerメソッド

procedure	MessageHandler(var Msg: TMsg; var Handled: Boolean); virtual;

通常、Application.OnMessage にセットされ、NICOLE TaskBarからアドオンに送られてきたメッセージを処理するメソッドです。

NICOLE TaskBarから送られてくるメッセージの内容としては、

WPARAM にはメッセージを受け取るボタンのウィンドウハンドル

LPARAM には、アトム値など、色々・・・

という感じになっています。

MessageHandlerは、WPARAMの内容が自分のHandleプロパティと同じなら処理を行うようになっています。


Installメソッド

function	Install : Integer;

NICOLE TaskBarへ自分自身をアドオンとしてインストールします。成功すれば０を返します。

Application.Title をアドオンのタイトル、Application.ExeNameをアドオンのパスとして、NICOLE TaskBarへメッセージを送ります。


Uninstall

functions	Uninstall : Integer;

NICOLE TaskBarへ自分自身をアンインストールするよう、メッセージを送ります

成功すると０を返します


OnClickイベント

property	OnClick : TNotifyEvent;

ボタンがクリックされると、このイベントが発生します。

備考）このイベントが発生した次点では、NICOLE TaskBarがアクティブなタスクになっています


OnDropFileイベント

property	OnDropFile : TNicoleDropFileEvent;

ボタンにエクスプローラーなどからファイルがドラッグ＆ドロップされると、このイベントが発生します。

複数のファイルがドロップされた場合、そのファイルの数だけ、このイベントが発生します。

ドラッグ＆ドロップを受け付けるかどうかを指定するには、DragAcceptプロパティを使います。

宣言）TNicoleDropFileEvent = procedure (Sender:TObject; FileName:string) of object;


OnPaintイベント

property	OnPaint 	: TNicolePaintEvent

ボタンが描写される時に、このイベントが発生します。

アドオンは、ここでボタンに自由に描写を行うことができます。

ボタンに描写するには、引数のCanvasを使います。

ボタンが押されているかどうかは、引数の Pushed を調べます

Pushed = TRUE 	ボタンは押されている

Pushed = FALSE	押されていない

宣言）TNicolePaintEvent = procedure (Sender:TObject; Canvas:TCanvas; Pushed:Boolean) of object;


OnMouseEnterイベント

property	OnMouseEnter : TNotifyEvent;

マウスカーソルがボタン内に移動してくると、このイベントが発生します


OnMouseLeaveイベント

property	OnMouseLeave : TNotifyEvent;

マウスカーソルがボタン上から外へ移動すると、このイベントが発生します


質問や問い合わせ

アドオン作成についての質問などは、できるだけ、このヘルプやサンプルのソースコードを参照してださい。

どうしても分からないときだけ、質問してください。

また、事情により返事が遅れたり、返事できない場合がございますので、その時は「NICOLE さんは忙しいんだな」と思って勘弁してくださいネ。

また、私はプロのプログラマではないので、超難解で技術的な質問は、できるだけしないようにして下さい。

作者（NICOLE）への連絡先

NIFTY-Serve ID : BXL01750

サポート会議室

NIFTY-Serve FWINAL ５番会議室


作者より

NICOLE TaskBarをご愛用いただいている方々へ、また、参考にさせて頂いた方々へ感謝いたします。