電子処方せん対応 4Dプラグイン開発(その3かな?)
4Dのプラグインを開発する
OpenSSL、PKCS#11を使った4Dのプラグインを開発する時の備忘録
4D Plugin WizardでVisual Studioのプロジェクトを作る
4D Plugin Wizard.4DProjectを4D.exeで起動
Newボタンで新しいプロジェクトを追加、名前をつけて開く
Add Theme...で新しいテーマを追加
Add Command...で新しいコマンド(関数)を追加
コマンドの名前を決めて
Addボタンで引数を追加、タイプ、名前、方向を決める。戻り値のある無し、型も指定、OKで保存
コマンドは後でいくらでも追加、修正ができるので、とりあえず適当に一つ作っておけばいい
ここのチェックはデフォルトのまま。唯一、Xcodeのプロジェクトは今回は必要ないので、チェックを外しておく
Generateボタンを押してプロジェクトを生成、保存先フォルダを指定して保存
ランタイムエラーがでるが、無視して継続を選んで最後まで実行、プロジェクト名のフォルダができてその内容が表示される。
4D Plugin-VS.slnがプロジェクトファイルだ
プロジェクトの起動とビルド
4D Plugin-VS.slnをダブルクリックするとVisual Studioが起動する、4Dが生成したプロジェクトは古いので最新のバージョンになるようにOKボタンを押して自動的に変換してもらう。
起動した。ソリューションエクスプローラーからソースファイルの4DPlugin.cppを選択するとソースが表示される。
ソースは不完全なので、このままではコンパイルできない。試しにビルドするとエラーが吐き出されるのでソースを修正する。4Dのプラグインは4DのAPIを使って引数を取り出し、4DのAPIで引数にデータを戻す。文字列(ストリング)はUTF16なのでunsigned short*であるので、ストリング関係の関数は2バイト用のを使うこと。ストリングリテラルはL"abc"という感じ。ストリングの受け渡しは少々わかりづらいので注意。BLOBはハンドルで渡される。ハンドルのロック、アンロックに注意。そのあたりを注意しておけば大丈夫だ。
詳細は省くが、こんな感じのソースにするとビルドできる。
void HPKI_test( PA_PluginParameters params )
{
PA_long32 Param1;
PA_Unistring* Param2;
PA_Unichar* Param2_uchars;
PA_Handle Param3;
Param1 = PA_GetLongParameter(params, 1);
Param2 = PA_GetStringParameter( params, 2 );
Param2_uchars = PA_GetUnistring(Param2);
Param2_uchars = (PA_Unichar * )L"789";
Param3 = PA_GetBlobHandleParameter(params, 3);
// --- write the code of HPKI_test here...
PA_SetLongParameter( params, 1, Param1 );
PA_SetUnistring( Param2, Param2_uchars );
PA_SetBlobHandleParameter( params, 3, Param3 );
}
ビルドするとsample.4Dbase→Pluginsフォルダの中に4D Plugin.bundleというプラグインができる。
sample.4Dbaseフォルダ中にはsample.4dbという4Dのデータベースが最初からあるので、これを起動すると作ったプラグインが表示されて利用可能になる。
あとは適当にテストメソッドを書いてテストする。
テスト→修正を繰り返す時は、必ず4Dを終了させること。動いているとプラグインが開いたままなので、VisualStudioからプラグインを書き換えられないのでリンクエラーとなる。
プラグインのコマンドの追加
コマンドの追加はResources¥manifest.jsonを修正する。ダブルクリックするとVSが開くので、追加するコマンドを表現したjsonオブジェクトをコレクションに追加する。
プラグインのソースの先頭のスイッチ文に新しいコマンドの関数への分岐を追加する。
関数を実装する。
4DPlugin.hヘッダーファイルで新しい関数を宣言する。
OpenSSL、PKCS#11の導入
次にOpenSSLとPKCS#11を使えるようにプロジェクトの設定を変更する。
ソースにインクルードファイルを記述、HPKIのサンプルコードのソースからコピペ
OpenSSLのインクルードファイルまでのパスを追加する。
pkcs11.hヘッダーファイルをHPKIのサンプルコードのフォルダからプラグインのフォルダにコピーする。
pkcs11.hヘッダーファイルは、置いただけでは認識されないので、プロジェクトにドラッグ&ドロップする。
プロジェクト→右クリック→プロパティで、リンカーの入力。追加の依存ファイルにlibcrypto.libを追加
同じくリンカーの全般の追加のライブラリディレクトリにC:¥Program Files¥OpenSSL-Win64¥libを追加
以上で終わりかな。漏れてたらあとで追記する。あとはひたすら書いて直す書いて直す...楽しい苦行のはじまりだ。
歯科電子カルテシステム・カルテメーカー は利用料月額16,500円(税込)
MacとWinの両方で利用可能な電子カルテです。介護保険にも対応してます。
カルテメーカーの詳細はカルテメーカー・ホームページまで。
カルテメーカーを実際に動かしてみたいときは評価版をダウンロードできます。