

#ifdef __cplusplus
extern "C"
#endif
{
	DWORD WINAPI GetFunctionInfoEx(void);
	void WINAPI DoProcessEx(const void* pPlugInData);
}

using namespace std;

typedef struct PLUGIN_DATA_EX1
{
	HWND hMainWnd;					//メインウィンドウハンドル

	wchar_t** lpszActivePath;		//各タブのアクティブビューのカレントディレクトリ、並び順は内部のタブ管理番号順なので必要があればソートすること
	size_t nActivePathCount;		//アクティブパスの配列の個数
	size_t nCurrentTabNo;			//上記のアクティブパスの配列の、現在アクティブなタブのインデックス番号

	HWND hListCtrl1;				//アクティブなリストコントロールハンドル
	wchar_t** lpszSelectedItems1;	//アクティブリストで選択されたファイル一覧のフルパスの配列(PlugInCommand.txtのUI制御によって受信内容が変化する)
	size_t nItemCount1;				//アクティブリストで選択されたファイル一覧のフルパスの配列の個数(PlugInCommand.txtのUI制御によって受信内容が変化する)
	wchar_t* szCurrentPath1;		//アクティブリストのカレントパス(仮想名称であってもフルパスがセットされる、エラー時にはNULLが格納される場合があるのでNULL判定をすること)
	wchar_t* szStatusText1;			//ステータス情報文字列(必ずセットされる)

	//画面分割時の情報(画面分割されていればセットされ、セットされていなければハンドルがNULLとなる)
	HWND hListCtrl2;				//反対側のリストコントロールハンドル
	wchar_t** lpszSelectedItems2;	//反対側のリストで選択されたファイル一覧のフルパスの配列
	size_t nItemCount2;				//反対側のリストで選択されたファイル一覧のフルパスの配列の個数
	wchar_t* szCurrentPath2;		//反対側のリストのカレントパス
	wchar_t* szStatusText2;			//ステータス情報文字列

	//・ステータス情報文字列を使用する際は、As/R本体のバージョンが上がると、予備領域が使用されたり末尾に項目が増える可能性があることを考慮すること
	//・各タブのアクティブビューのカレントディレクトリの配列は仮想フォルダも渡される
	//・カレントディレクトリは仮想名称のアイテムは格納しない
	//・デスクトップのような複数のフォルダーの複合パスの場合、カレントディレクトリと配列で渡される選択アイテムの一覧のパスは一致しない場合がある
	//・選択アイテムは、コマンド定義ファイルの状態によって、フォルダのみ/ファイルのみ/両方と制御する
	//・すべての文字列は、末尾NULLの文字列
	//・この構造体の値を書き換えた場合、正常動作は保障されない
	//・szCurrentPath1、szCurrentPath2は仮想パス名も渡される

}PLUGIN_DATA_EX1;

