_ 何か+ 拡張プラグイン "NPP"仕様書
何か+ プラグインインストーラ "NPI"仕様書
Last Update 2001-06-17

メールトップページ何か関連ダウンロードページさくらみかげ

最新:NPP/1.3(2001-06-17) NPI/1.0(2001-05-13)

[概要]


簡単な定義ファイル及び、プログラムを用意することで、何か+内のメニューに項目を追加し、何か本体に機能を拡張することが出来ます。拡張手段がDLLではなくEXEのため、VBなどのDLLが作成できない環境でもプラグインを作成することが可能です。定義ファイルによってメニューの追加内容を定義し、メニューが実際にクリックされた場合、定義された実行ファイルが呼び出されます。

[構成]

home
  +-npplugin
    +-xxxxxx
      +-npplugin.txt,yyyyy.exe

※npplug以下1階層下のフォルダを検索します。

[npplugin.txt]

▼NPP/1.0

npplugin.txtは定義ファイルです。何か+にどんな名前のメニューを追加し、どんなコマンドを実行するのか指定します。
定義ファイルの一行目には必ずNPP/1.0(1.0はバージョンをあらわし、今後、変更される可能性があります)という文字をおいてください。これがないとプラグインファイルとはみなされず、何か+のメニューには機能が追加されません。2行目以降には、実際に追加する機能のデータを記述します。フォーマットは以下です。

メニューに表示される文字,実行ファイル名,コマンドラインオプション

※パスは記述しないでください。ただし、npplugin.txtがあるフォルダからの相対パスを記述する場合はかまいません。
※コマンドラインオプションは省略可能です。

ex.)npplugin.txt

NPP/1.0
メモリチェック(通常モード),MEMCHK.EXE,/NORMAL
メモリチェック(簡易モード),MEMCHK.EXE,/EASY
ディスクチェック,DSKCHK.EXE


この場合、メニューにメモリチェック(通常モード)、メモリチェック(簡易モード)、ディスクチェックという項目を追加し、それらがクリックされた場合、それぞれ、MEMCHK.EXE /NORMAL,MEMCHK.EXE /EASY,DSKCHK.EXEというファイル名+コマンドラインオプションを呼び出します。(実際に実行される際には/hオプションが追加されます。これについては後述。)

[yyyyy.exe]
実際に呼び出される実行ファイルです。
呼び出される際には、

yyyyy.exe /h何かのウィンドウハンドル コマンドラインオプション

ex.)memchk.exe /h123456 /NORMAL


という形で呼び出されます。DirectSSTPなどを使用する場合には/hオプションで渡されるウィンドウハンドルに対してメッセージを送信してください。このウィンドウハンドルは実際にメニューがクリックされたウィンドウのウィンドウハンドルです。”何か”が複数起動していても区別されます。

[SAKURAP.DLL]

何か+を使用する際に便利な命令がいくつかインプリメントされています。DLLはプラグインが存在する二つ上の階層のディレクトリ(..\..\)にあることが保証されます。

■NPRefresh(NPP/1.1)
C)
__declspec( dllexport ) long __stdcall NPRefresh(void)
VB)Declare Function NPRefresh Lib "sakurap.dll" () As Long

メニューを更新します。”何か”がメニューを表示する際に”何か+”は毎回メニューを更新しますが、自分でメニューを更新したい場合にこの命令を呼んでください。ただし、通常は必要ないはずです。
Phase 1.2(NPP/1.1)から仕様が変更になりました。メニューを更新する場合にはこのAPIを呼ばなければなりません。

戻り値 0:成功 -1:失敗

■NPGetVersion(NPP/1.1)
C)
__declspec( dllexport ) long __stdcall NPGetVersion(void)
VB)Declare Function NPGetVersion Lib "sakurap.dll" () As Long

NPPのバージョンを得ます。本体のバージョンではなくNPPのバージョンであることに注意してください。戻り値が110ならNPP/1.1、120ならNPP/1.2です。

▼NPP/1.2

NPP/1.2では、NPP/1.0、NPP/1.1のフルサポートに加え、ポップアップメニュー内にポップアップメニューを作成するおよび、メニュー内のセパレート(区切り)の作成、sakurap.exeのロード/アンロード時の実行ファイル呼び出しが可能です。以下にnpplugin.txtの例を示します。

NPP/1.2
LOAD,LOAD.EXE,/LOAD
UNLOAD,LOAD.EXE,/UNLOAD
メモリ関連\メモリチェック通常モード,MEMCHK.EXE,/NORMAL
メモリ関連\メモリチェック簡易モード,MEMCHK.EXE,/EASY
メモリ関連\SEPARATOR
メモリ関連\メモリ空き容量,MEMFREE.EXE
SEPARATOR
ディスク関連機能\ディスクチェック,DSKCHK.EXE

・ポップアップメニュー内のポップアップメニュー
ポップアップメニュー内にポップアップメニューを作成するには「\」で区切って名前を指定してください。「\」より前が親、「\」より後ろが子になります。なお現在、一階層下までしかポップアップメニューを作成しません。NPP/1.1までで「\」を使った場合には「
メモリ関連\メモリチェック通常モード」のように表示されます。

・セパレート作成機能
セパレートを作成するには「SEPARATOR」という文字を置き、第2引数と第3引数は省略してください。この場合も、ポップアップメニューの指定が可能です。


・sakurap.exeのロード時/アンロード時の実行ファイルの呼び出し
sakurap.exeのロード時/アンロード時に特定の実行ファイルを呼ぶには第一引数に「LOAD」/「UNLOAD」という文字を置き、第2引数に実行するファイル名、第3引数にコマンドラインオプションを記述してください。なお、この時点でメニューの作成は終了しているのでメニューを更新したい場合にはNPRefreshを呼んでください。


▼NPP/1.3

NPP/1.3では、NPP/1.0、NPP/1.1、NPP/1.2のフルサポートに加え、一定間隔で実行ファイルを呼び出すことが可能です。以下にnpplugin.txtの例を示します

NPP/1.3
LOAD,LOAD.EXE,/LOAD
UNLOAD,LOAD.EXE,/UNLOAD
SEC[900],MEMCHK.EXE,/EASY
SEC[3600],MEMCHK.EXE,/NORMAL
メモリ関連\メモリチェック通常モード,MEMCHK.EXE,/NORMAL
メモリ関連\メモリチェック簡易モード,MEMCHK.EXE,/EASY
メモリ関連\SEPARATOR
メモリ関連\メモリ空き容量,MEMFREE.EXE
SEPARATOR
ディスク関連機能\ディスクチェック,DSKCHK.EXE


実行ファイルを一定時間ごとに呼び出したい場合は第一引数にSEC[sec]という文字を置いてください。secには呼び出したい間隔を秒単位で指定してください。また、第2引数、第3引数はそれぞれ呼び出す実行ファイルとコマンドラインオプションです。

上の例では、900秒(=15分)ごとにMEMCHK.EXEを/EASYオプションをつけて実行し、3600秒(=1時間)ごとにMEMCHK.EXEを/NORMALオプションをつけて実行します。


[何か+の存在を確認する方法] NPP/1.1以降

何か+は"NPP"という名前のMUTEXを保持します。OpenMutexAPIで簡単に存在を確認できます。OpenMutexでハンドルを開いた後、必ずCloseHandleでそのハンドルを開放してください。




NPI/1.0
<Nanika Plus Install system>

Phase 1.3以降で対応

Phase 1.4以降では「何か。」本体へのドラッグ&ドロップでもインストール可能。

[概要]

配布ファイルをアーカイブした lzh ファイルもしくは zip ファイルに適切な設定を施すと、そのファイルを「何か。」本体にドロップするだけでインストールすることができるようになります。基本的に”何か。”本家のInstall/1.0互換ですが、一部制限があります。なお実行にはUNLHA32.DLLおよびUNZIP32.DLLが必要になります。

[構成]

「適切な設定」とは、書庫のルートディレクトリに install.txt を含めることと、書庫自身が独自のディレクトリを掘らないことの2点です。

home
  +-install.txt

[install.txt]

type,npplugin
name,npin

type はそのファイルセットの種別です。現在npplugin のみが設定できます。nameはそのファイルセットが作成するディレクトリの名称です。バッティングした場合確認なく上書きします。
ファイルを記述する際には必ずこの順序(type→name)の順でお願いします。また空行等も置かないでください。

※仕様書を書くにあたり本家のInstallの仕様書を参考にさせていただきました。ありがとうございます。


トップに戻る