掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
とある機器のOCXからの関数での変数の扱いがわからないのでお助けください。 (ID:45480)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
指紋データを取得するサンプルをまとめましたが 「ライセンス的にどうよ?」って話もあるので 取り敢えずメッセージを受け取る所だけ。 とあるフォームのPublic宣言のあとに protected { Protected 宣言 } //メッセージ処理 procedure WndProc(var Msg: TMessage); override; こんな感じで追加して、実装の方は procedure TForm1.WndProc(var Msg: TMessage); begin if Msg.Msg = WM_SREXFSUX then SRexFSUxAX1EventMsg(Msg.WParam, Msg.LParam) else inherited WndProc(Msg); end; こうします。 で、肝心のSRexFSUxAX1EventMsgは procedure TForm1.SRexFSUxAX1EventMsg(wParam, lParam: Integer); var ret: integer; begin case lParam of SREX_SUCCESS: begin ret := FingerPrintModule.GetFingerInfo(@FingerDataBuffer); if ret = 0 then begin //情報を取得できた時の処理 //ModalResult := mrOk; end else begin //取得できなかった時の処理 //ShowMessage('指紋情報取得に失敗しました'#13'エラーコード:$'+IntToHex(ret,2)); //ModalResult := mrCancel; end; end; SREX_FAILED: ;//Label1.Caption := '失敗:$'+IntToHex(wParam,2); SREX_START: ;//Label1.Caption := '指紋を取得中です'; SREX_END: ;//Label1.Caption := '指紋取得終了'; SREX_STOP: ; SREX_FINGER_DETECT: ;//Label1.Caption := '指紋を取得中です'; SREX_NO_FINGER: ;//Label1.Caption := '指を置いてください'; SREX_TIMEOUT: begin //時間切れの時の処理 //Label1.Caption := '時間切れです'; //ModalResult := mrCancel; end; SREX_TOO_RIGHT: ;//Memo1.Lines.Add('右にずれています'); SREX_TOO_LEFT: ;//Memo1.Lines.Add('左にずれています'); SREX_TOO_DOWN: ;//Memo1.Lines.Add('下にずれています'); SREX_TOO_UP: ;//Memo1.Lines.Add('上にずれています'); SREX_BAD_QUALITY: ;//Memo1.Lines.Add('指紋の品質が悪い'); SREX_DIFFERENT: ;//Memo1.Lines.Add('指紋が異なる'); SREX_SLIDE: ;//Memo1.Lines.Add('指を滑らせてください'); SREX_NOISE: ;//Memo1.Lines.Add('ノイズを含んでいます'); SREX_SHORT: ;//Memo1.Lines.Add('短すぎます'); SREX_BACK: ;//Memo1.Lines.Add('滑らす方向が変わりました'); SREX_LARGE: ;//Memo1.Lines.Add('斜めに滑って大きすぎます'); SREX_FAST: ;//Memo1.Lines.Add('速すぎます'); SREX_BAD_SWIPE: ;//Memo1.Lines.Add('滑らせ方が悪い'); SREX_PENDING: ;//Memo1.Lines.Add('コマンドによる強制停止'); end; end; こんな感じ。 フォームにラベルやメモを置いてある事を想定しています。 FingerDataBufferはPrivateあたりで FingerDataBuffer: TSREX_INFO; などと宣言しておきます。 FingerPrintModuleは以前のレスのDLLの宣言のユニットです。 で、OpenDeviceしてからStartSamplingを呼び出すと メッセージを受け取れると思います。 たとえば FingerPrintModule.StartSampling(Form1.Handle, 3, 15, 0, 0, 0, 0); とすると、1回のタイムアウトが15秒で、3回指紋を読み取ると SREX_SUCCESSが返ってくると思います。 もしかしたら、VistaやWindows7でUACが有効の場合、管理者権限で実行しないと メッセージを受け取れないかもしれません。 (自分でロードしたDLLからなら大丈夫だったかな?)
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.