« 電子処方せん対応 4Dプラグイン開発 | トップページ | 電子処方せん 基本的な構成 »

2022年8月12日 (金)

電子処方せん対応 4Dプラグイン開発(その3かな?)

4Dのプラグインを開発する

OpenSSL、PKCS#11を使った4Dのプラグインを開発する時の備忘録

4D Plugin WizardでVisual Studioのプロジェクトを作る

4D Plugin Wizard.4DProjectを4D.exeで起動

Newボタンで新しいプロジェクトを追加、名前をつけて開く

49_20220812175001

Add Theme...で新しいテーマを追加

Add Command...で新しいコマンド(関数)を追加

48_20220812175301

コマンドの名前を決めて

Addボタンで引数を追加、タイプ、名前、方向を決める。戻り値のある無し、型も指定、OKで保存

コマンドは後でいくらでも追加、修正ができるので、とりあえず適当に一つ作っておけばいい

49_20220812175701

ここのチェックはデフォルトのまま。唯一、Xcodeのプロジェクトは今回は必要ないので、チェックを外しておく

Generateボタンを押してプロジェクトを生成、保存先フォルダを指定して保存

ランタイムエラーがでるが、無視して継続を選んで最後まで実行、プロジェクト名のフォルダができてその内容が表示される。

51_20220812180801

4D Plugin-VS.slnがプロジェクトファイルだ

プロジェクトの起動とビルド

4D Plugin-VS.slnをダブルクリックするとVisual Studioが起動する、4Dが生成したプロジェクトは古いので最新のバージョンになるようにOKボタンを押して自動的に変換してもらう。

52_20220812182101

起動した。ソリューションエクスプローラーからソースファイルの4DPlugin.cppを選択するとソースが表示される。

53

ソースは不完全なので、このままではコンパイルできない。試しにビルドするとエラーが吐き出されるのでソースを修正する。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のデータベースが最初からあるので、これを起動すると作ったプラグインが表示されて利用可能になる。

56_20220812193301

あとは適当にテストメソッドを書いてテストする。

57_20220812193701

テスト→修正を繰り返す時は、必ず4Dを終了させること。動いているとプラグインが開いたままなので、VisualStudioからプラグインを書き換えられないのでリンクエラーとなる。

 

プラグインのコマンドの追加

 

コマンドの追加はResources¥manifest.jsonを修正する。ダブルクリックするとVSが開くので、追加するコマンドを表現したjsonオブジェクトをコレクションに追加する。

58

 

プラグインのソースの先頭のスイッチ文に新しいコマンドの関数への分岐を追加する。

59

 

関数を実装する。

61_20220812204601

 

4DPlugin.hヘッダーファイルで新しい関数を宣言する。

69_20220812210701

 

OpenSSL、PKCS#11の導入

次にOpenSSLとPKCS#11を使えるようにプロジェクトの設定を変更する。

 

ソースにインクルードファイルを記述、HPKIのサンプルコードのソースからコピペ

62_20220812213701

 

OpenSSLのインクルードファイルまでのパスを追加する。

63_20220812211101

 

pkcs11.hヘッダーファイルをHPKIのサンプルコードのフォルダからプラグインのフォルダにコピーする。

67_20220812211401

 

pkcs11.hヘッダーファイルは、置いただけでは認識されないので、プロジェクトにドラッグ&ドロップする。

70

 

プロジェクト→右クリック→プロパティで、リンカーの入力。追加の依存ファイルにlibcrypto.libを追加

71

 

同じくリンカーの全般の追加のライブラリディレクトリにC:¥Program Files¥OpenSSL-Win64¥libを追加

72

 

以上で終わりかな。漏れてたらあとで追記する。あとはひたすら書いて直す書いて直す...楽しい苦行のはじまりだ。

 


歯科電子カルテシステム・カルテメーカー は利用料月額16,500円(税込)
MacとWinの両方で利用可能な電子カルテです。介護保険にも対応してます。

カルテメーカーの詳細はカルテメーカー・ホームページまで。
カルテメーカーを実際に動かしてみたいときは評価版をダウンロードできます。

 

|

« 電子処方せん対応 4Dプラグイン開発 | トップページ | 電子処方せん 基本的な構成 »

パソコン・インターネット」カテゴリの記事

カルテメーカー」カテゴリの記事

開発記録」カテゴリの記事

4D」カテゴリの記事

電子処方せん」カテゴリの記事

電子署名」カテゴリの記事

HPKIカード」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« 電子処方せん対応 4Dプラグイン開発 | トップページ | 電子処方せん 基本的な構成 »