As/R Ver.7以降用、コマンドプラグイン

　As/R本体と同期動作させたり、バックグラウンドで動作させるコマンドをC言語のインターフェイスで作成することができます。
　スクリプトでも可能な点も多いですが、より高度なデバッグ環境や、より高度な動作を行いたい場合に使用します。

　プラグインの作成はWindowsの仕様に則ったDLLを作成することになるので、開発言語の知識やコンパイル環境の構築が必要であり、いささか敷居が高いものとなっています。
　もちろん、できることが桁違いに広がる、極めて自由度の高い機能となりますので、実力のある方は存分に使いこなしていただければと思います。

※サンプルソースコードはVisual Studio 2015で作成されていますが、インターフェイスのルールにさえ沿っていれば大抵の開発プラットフォームが使用できます。



●サンプルプロジェクトを元に、新しい名前のDLLを作成する方法
　サンプルプロジェクト名「Win32test」
　新しいプロジェクト名を「SamplePulginCommand」と仮定する

1.以下のファイル名の「Win32test」という記述を「SamplePulginCommand」に変更する
　Win32test.sln→SamplePulginCommand.sln
　Win32test.vcxproj→SamplePulginCommand.vcxproj
　Win32test(ディレクトリ名)→SamplePulginCommand

2.「Win32test」でGrepかけて、全てを「SamplePulginCommand」で置換する
　一度に置換するコツは、あらかじめ重複しない新しい名称を付けることです。
　サンプルプロジェクトは、Win32test.sln/Win32test.vcxproj/Export.defのみ記載されており他は全てコメントです。

3.プラグインのロジック部を実装する（必要に応じてヘッダを追加してください）




●実装が必要な関数

DWORD WINAPI GetFunctionInfoEx(void)
　本体からどのような情報をもらうか、自分はバックグラウンドで動くかという情報を返します。

void WINAPI DoProcessEx(const void* pPlugInData)
　プラグインコマンドの本体で、引数で本体から情報を渡されます。
　引数の中身は、GetFunctionInfoEx()で返した数値によって変わります。



●使用条件など
　本プラグインソースの使用条件はAs/R本体に準じます。



【備考】
●ファイルの用途
Win32test.sln
　ソリューションファイル、複数の生成dllや生成exeをまとめたプロジェクトの全体を管理するファイル
Win32test.vcxproj
　プロジェクトファイル、生成するdllやexeの1個ずつのコンパイルオプションなどをまとめたファイル
dllmain.cpp
　dllの動作を記述するファイル、プラグイン作成の肝要な部分
dllmain.h
　dllの関数定義をするファイル
Export.def
　dllと外部のexeをやり取りする名称/番号を記述する場所
stdafx.cpp
　Windows用のdllやexeを生成する際に使用する共通的なインターフェイスの本体を記述する場所(通常は使わない)
stdafx.h
　Windows用のdllやexeを生成する際に使用する共通的なインターフェイスのヘッダを記述する場所(通常は使わない)
targetver.h
　必要であればWindowsのバージョン番号などのプリプロセッサの記述をする場所(使わなくても良い)

