☆Docuworksで「ファイル名に日付を付加する」プラグイン
Docuworksは、設定すればスキャン時に日時をファイル名に自動的に付加してくれますが、
印刷した場合等には自分で付ける必要があります。(と思います。)
そこで、作成日時か最終更新日時の内、古い方の日時をファイル名に付加する機能を 持つプラグインを作ってみます。(実は仕事で必要だったりします。)
前回のプラグインのコードと同様なので、PLG_ExecuteCommand関数のみ書きますね。
そこで、作成日時か最終更新日時の内、古い方の日時をファイル名に付加する機能を 持つプラグインを作ってみます。(実は仕事で必要だったりします。)
前回のプラグインのコードと同様なので、PLG_ExecuteCommand関数のみ書きますね。
// ExecuteCommand Entry function PLG_ExecuteCommand(pPlgStruct: PLUGGEDIN_STRUCT): LongInt; stdcall; function GetFileDateTime(const FileName: String; var CreateYMD, LastWriteYMD, LastAccessYMD: TDateTime): Boolean; var Handle: Integer; Time1, Time2, Time3: TFILETIME; SysTime: TSYSTEMTIME; SECURITYATTRIBUTES: TSECURITYATTRIBUTES; begin Result := False; with SECURITYATTRIBUTES do begin nLength := SizeOf(TSECURITYATTRIBUTES); lpSecurityDescriptor := nil; bInheritHandle := False; end; Handle := CreateFile(PChar(FileName),GENERIC_READ,0,@SECURITYATTRIBUTES, OPEN_EXISTING,FILE_ATTRIBUTE_READONLY,0); if Handle = 0 then Exit; try GetFileTime(Handle, @Time1, @Time2, @Time3); FileTimeToLocalFileTime(Time1,Time1); FileTimeToSystemTime(Time1, SysTime); CreateYMD := SystemTimeToDateTime(SysTime); FileTimeToLocalFileTime(Time2,Time2); FileTimeToSystemTime(Time2, SysTime); LastAccessYMD := SystemTimeToDateTime(SysTime); FileTimeToLocalFileTime(Time3,Time3); FileTimeToSystemTime(Time3, SysTime); LastWriteYMD := SystemTimeToDateTime(SysTime); Result := True; finally CloseHandle(Handle); end; end; var I: Integer; S: String; InputFile: String; CreateYMD, LastWriteYMD, LastAccessYMD: TDateTime; begin S := ''; for I := 0 to pPlgStruct^.ps_nFiles-1 do begin InputFile := pPlgStruct^.ps_pszFiles^[I]; if GetFileDateTime(InputFile, CreateYMD, LastWriteYMD, LastAccessYMD) then begin if CreateYMD <= LastWriteYMD then S := FormatDateTime('yyyymmdd', CreateYMD) else S := FormatDateTime('yyyymmdd', LastWriteYMD); S := ExtractFilePath(InputFile) + S + ExtractFileName(InputFile); RenameFile(InputFile, S); end; end; Result := 1; end;上記のコードで、きちんとファイル名を修正してくれるのですが、Docuworks Deskでのファイル位置が 一番最後に移動してしまいます。DocuworksのAPIには、ファイル名の変更をするものがなさそうなので、 解決できずにいます。メッセージでメニューとクリップボードを使って処理する方法もありますが、 スマートじゃないですよね。
| 固定リンク