安いバーコードリーダーをお探しですか?
もしかしたらこのAndroidアプリが役に立つかも・・・




バーコードリーダー入門


バーコードリーダーを使ってみよう

トップへ戻る

第3回 COSCAペンの限界

 こりずにCOSCAペンネタです。前回ショートカットキーが送信されてきているのではないかということに気づきました。つまり、このショートカットキー([Windows]キー+[R]キー)をプログラムで排除できれば、うまくバーコード値だけをキーボード経由で取得することができそう。どうしようか、すごく迷ったがチャレンジしてみることにしました。

なぜ迷ったかといえば、ショートカットキーはプログラムよりも先にWindowsが先に捕まえちゃうので、どうしてもフォーカスが「ファイル名を指定して実行」ダイアログに移ってしまう。これを解決するにはちょっと面倒な仕組みが必要になるからです。

その仕組みは「グローバルフック」と呼ばれているものです。

プログラミングのサイトではないので、詳しいことは書きません。興味のある方は調べてみてください。キーボードだけを例にとって大雑把にいってしまうと、全てのプログラムより先にキーボード入力内容を横取りして、いろいろ制御が出来るという技です。ただ、この技は全てのキーボード入力を制御しちゃうわけですから、後始末をきちんとしてあげないと、非常に危険なのです。

早速、グローバルフックでキーボード入力を制御するプログラムを作成しました。まずは、[Windows]キーを無視することにしました。つまり[Windows]キーの入力自体を無効にしてしまうわけです。入力を受取るプログラムは「メモ帳」を使用しました。今回作成したグローバルフックを行っているプログラムは、裏方としてバックグラウンドで動作しているだけなので、画面はありません。

*

これで [R]キー以降の情報だけが、現在のカーソルに表示されるようになりました。ひとまず成功です。ショートカットキーが送られてきているという推測が間違いでないことがわかりました。

さて、この後どうしたかというと、[R]キーとそれ以降の文字列が上のようなURLで送信されてきますから、
(1)"r"から2つ目の"/"までのキー入力を無効にする。
(2)2つ目の"/"より後のキー(バーコード値)は、そのままプログラム(今回はメモ帳)に渡す。
(3)[Enter]キーが送信されてきたら、そのままプログラムに渡し、再び[Windows]キーを待つ。
というような流れを組み込みました。実際にやってみると、

お!ん?・・・

*

いやぁ、バーコード値だけを取れることは取れるんですけどね。遅いんです。読み取ってから画面に表示されるまで1秒程度かかるんです。どうやら、本来の使い方である「ファイル名を指定して実行」ダイアログが確実に表示されるための時間を確保するために、強制的にスリープが1秒前後入っているようなんです。このスリープはバーコードリーダー内でハード的に制御されちゃってるようなので、手の出しようがありません。

結論。
普通のバーコードリーダーとしては やっぱり使えません

ご清聴ありがとうございました。(ToT)/~~~



トップへ戻る

記事一覧




[stmx] - ソーシャルマーケットプレイス

[stmx] - ソーシャルマーケットプレイス
inserted by FC2 system