Version2.2から、ユーザー定義の検査項目がつくれるようになりました。
TOOL1.DLL、TOOL2.DLL、TOOL3.DLLという名前のDLLがDupCheckと同じフォルダ上に存在する場合に、定義1〜3に対応する項目が選択可能になります。
このDLLはVisualC++5.0以降Visual Studio 2008のC++で記述する必要があります。
なお、「作成日/属性(&C)」検査項目は、このユーザー定義検査項目として作成されています。
※ DupCheck Ver2.8では引き続きユーザー定義検査項目を利用できますが、DupCheckのUnicode化対応でインターフェイスが変更される予定となっています。
下記内容は過去の参考情報として見てください。
LPCSTR _stdcall GetTitle()
int _stdcall InitCheck()
LPCSTR _stdcall CheckFile(LPCSTR filename,WIN32_FIND_DATA* pData)
LPCSTR _stdcall ReturnMessage()
int _stdcall Release()
まず、GetTitleは検査項目名を返す必要があります。そうしないと選択項目として有効になりえません。
DupCheckは検査するファイルの一覧を作成したあとで、新規に重複検査を行う場合に、InitCheck()またはRelease()を呼び出します。
重複検査項目として指定されていればInitCheck、重複検査項目として解除されていればReleaseが新規に重複検査をするたびに呼び出されます。
いずれも戻り値は0です。
InitCheckでは必要な初期化処理を行ってください。
サンプルではダイアログを表示して、さらに細かい設定をユーザーが指示できるようにしてあります。
つぎに、DupCheckは検査するファイルごとにCheckFile()を呼び出します。
CheckFileは引数filenameにフルパス、pDataにWIN32_FIND_DATAの属性データが渡されてきます。戻り値はインデックスの一部となる文字列で、NULLや空文を返すことも可能です。
大きな文字列を返すことはお勧めできません。またバイナリデータをインデックスとしたい場合もあるかもしれません。
そのような場合はDLL内部にメモリを用意し、そのメモリへのリファレンスを設けて、バイナリまたは大きなデーターを識別するリファレンス文字列として返してください。
サンプルでは単純なリファレンスの例を示しています。
CheckFile()を呼び出した後、DupCheckはReturnMessage()を呼び出します。
ReturnMessageは警告またはエラーメッセージを返します。空文、またはヌルを返すことができます。
これは全てのファイルの検査が終わった後で一覧として表示されるものです。
このReturnMessage関数は必須ではありません。
DupCheckが終了する場合には、必ずRelease()が呼び出されます。
この時点ではDupCheckのウィンドウなども破棄されており、メッセージボックスなども表示されないことに注意してください。
Releaseの呼び出しタイミングが変更されています。
V2.2ではDupCheckの終了時にしか呼び出されませんでした。
V2.4では新規検索されるたびに呼び出されます。
ReturnMessage()はV2.4より追加された関数です。