☆Docuworksプラグインを作成してみる。
Fuji XeroxはDocuworksのプラグイン仕様についても丁寧な解説とヘッダーファイルを配布しておられるのですが、
C++向けとなっており、私にはよくわからないんですよね。いろいろ試した結果、下記のコードで一応動作しているようなので書いておきますね。
プラグインの実態は、DLLなので、ファイル→新規作成→その他→DLLウィザードをクリックして新規にプロジェクトを作成します。
コンパイルしてできたDLLを C:\Program Files\Fuji Xerox\DocuWorks\bin\pluginsにコピーします。
Docuworksを起動させて、プラグイン→設定を選択すると次のようなダイアログが表示されます。
実行させてみると、きちんとダイアログが表示されました。
DocuWorks Development Tool Kit 6.2.3 日本語版
http://www.fujixerox.co.jp/soft/docuworks/download301.html
[20080121 追記]
レコード型PLUGGEDIN_STRUCTを下記の記事で書き換えています。
☆「char**」 を Delphiで書くと・・・。
プラグインの実態は、DLLなので、ファイル→新規作成→その他→DLLウィザードをクリックして新規にプロジェクトを作成します。
library Project1; uses Windows, SysUtils; {$R *.res} const PLUGGEDIN_REGKEY = 'Software\\FujiXerox\\MPM3\\MPWS\\PLUGGEDIN'; MAX_PLUGGEDIN_NUMBER = 30; PLUGGEDIN_VERSION = 2; // PLUGGEDIN_NAME_INITIALIZE = '_PLG_Initialize@4'; PLUGGEDIN_NAME_FINALIZE ='_PLG_Finalize@4'; PLUGGEDIN_NAME_CANFINALIZE = '_PLG_CanFinalize@4'; PLUGGEDIN_NAME_REQUIREFILES = '_PLG_RequireFiles@4'; PLUGGEDIN_NAME_EXECUTECOMMAND = '_PLG_ExecuteCommand@4'; PLUGGEDIN_NAME_ISPARALLEL = '_PLG_IsParallel@4'; PLUGGEDIN_NAME_ISCLONINGCOMMAND = '_PLG_IsCloningCommand@4'; PLUGGEDIN_NAME_GETNEWCLONE = '_PLG_GetNewClone@8'; PLUGGEDIN_NAME_RELEASECLONE = '_PLG_ReleaseClone@4'; PLUGGEDIN_NAME_EXECUTABLE = '_PLG_Executable@8'; PLUGGEDIN_NAME_CANSETPROFILE = '_PLG_CanSetProfile@4'; PLUGGEDIN_NAME_SETPROFILE = '_PLG_SetProfile@4'; PLUGGEDIN_NAME_GETCOMMANDICON = '_PLG_GetCommandIcon@8'; PLUGGEDIN_NAME_ENUMERATECOMMANDS = '_PLG_EnumerateCommands@12'; type PLUGGEDIN_STRUCT = ^TPluggedin_struct; TPluggedin_struct = packed record ps_nPlugVersion: LongInt; ps_pszFunction: PChar; ps_execParallel: LongInt; ps_nFiles: LongInt; ps_pszFiles: PChar; ps_pnPageNumbers: LongInt; ps_pszExecFolder: PChar; ps_hwndDWDesk: LongInt; end; // Initialize Entry function PLG_Initialize(const cmdName: PChar): LongInt; stdcall; begin Result := 1; end; // Finalize Entry function PLG_Finalize(const cmdName: PChar): LongInt; stdcall; begin Result := 1; end; // CanFinalize Entry function PLG_CanFinalize(const cmdName: PChar): LongInt; stdcall; begin Result := 1; end; // RequireFiles Entry function PLG_RequireFiles(const cmdName: PChar): LongInt; stdcall; begin Result := 1; end; // ExecuteCommand Entry function PLG_ExecuteCommand(pPlgStruct: PLUGGEDIN_STRUCT): LongInt; stdcall; begin MessageBox(0, pPlgStruct.ps_pszFunction, 'Welcome to Docuworks Plugins', MB_OK); Result := 1; end; // IsParallel Entry function PLG_IsParallel(const cmdName: PChar): LongInt; stdcall; begin Result := 0; end; // IsCloning Entry function PLG_IsCloningCommand(const cmdName: PChar): LongInt; stdcall; begin Result := 0; end; // GetNewClone Entry function PLG_GetNewClone(cmdName: PChar; nBufSize: LongInt): LongInt; stdcall; begin Result := 0; end; // ReleaseClone Entry function PLG_ReleaseClone(const cmdName: PChar): LongInt; stdcall; begin Result := 0; end; // Executable Entry function PLG_Executable(const cmdName: PChar; nArgFiles: LongInt): LongInt; stdcall; begin Result := 1; end; // CanSetProfile Entry function PLG_CanSetProfile(const cmdName: PChar): LongInt; stdcall; begin Result := 0; end; // SetProfile Entry function PLG_SetProfile(const cmdName: PChar): LongInt; stdcall; begin Result := 0; end; // GetAppIcon Entry function PLG_GetCommandIcon(const cmdName: PChar; bNormalSize: LongInt): HICON; stdcall; begin Result := LoadIcon(hInstance, MAKEINTRESOURCE('MAINICON')); end; // EnumerateCommands Entry function PLG_EnumerateCommands(var cmdNameList: PChar; nBufSize: LongInt; var nBufSizeRequired: LongInt): LongInt; stdcall; const S = 'SamplePlugin by hiderin'; begin nBufSizeRequired := Length(S)+1; if (nBufSize < nBufSizeRequired) then begin Result := 0; Exit; end; StrCopy(@cmdNameList, S); Result := 1; end; exports PLG_INITIALIZE name PLUGGEDIN_NAME_INITIALIZE, PLG_FINALIZE name PLUGGEDIN_NAME_FINALIZE, PLG_CANFINALIZE name PLUGGEDIN_NAME_CANFINALIZE, PLG_REQUIREFILES name PLUGGEDIN_NAME_REQUIREFILES, PLG_EXECUTECOMMAND name PLUGGEDIN_NAME_EXECUTECOMMAND, PLG_ISPARALLEL name PLUGGEDIN_NAME_ISPARALLEL, PLG_ISCLONINGCOMMAND name PLUGGEDIN_NAME_ISCLONINGCOMMAND, PLG_GETNEWCLONE name PLUGGEDIN_NAME_GETNEWCLONE, PLG_RELEASECLONE name PLUGGEDIN_NAME_RELEASECLONE, PLG_EXECUTABLE name PLUGGEDIN_NAME_EXECUTABLE, PLG_CANSETPROFILE name PLUGGEDIN_NAME_CANSETPROFILE, PLG_SETPROFILE name PLUGGEDIN_NAME_SETPROFILE, PLG_GETCOMMANDICON name PLUGGEDIN_NAME_GETCOMMANDICON, PLG_ENUMERATECOMMANDS name PLUGGEDIN_NAME_ENUMERATECOMMANDS; begin end.
コンパイルしてできたDLLを C:\Program Files\Fuji Xerox\DocuWorks\bin\pluginsにコピーします。
Docuworksを起動させて、プラグイン→設定を選択すると次のようなダイアログが表示されます。
実行させてみると、きちんとダイアログが表示されました。
DocuWorks Development Tool Kit 6.2.3 日本語版
http://www.fujixerox.co.jp/soft/docuworks/download301.html
[20080121 追記]
レコード型PLUGGEDIN_STRUCTを下記の記事で書き換えています。
☆「char**」 を Delphiで書くと・・・。
| 固定リンク