DOBON.NETプログラミング道掲示板

■35479 / 親記事)  キーボード+バーコードでキーボード入力を無効にしたい
  
□投稿者/ たろう 一般人(4回)-(2023/08/04(Fri) 10:03:12)
  • アイコン環境/言語:[windows11/Visual Studio 2022/C#] 
    分類:[.NET] 

    バーコードを利用したシステムで、バーコードから情報を読みこんでいるときにキーボードを触るとバーコードから読み込んだ文字列の間に文字が入ってしまいます。

    バーコードはキーボードエミュレーションのため上記は仕方がないのですが、なにか対策をしなければいけません。

    バーコード入力時は特定のテキストボックスにフォーカスがあるので、その時だけキーボードを無効にしてバーコードのみを有効にするような事ができれば良いのですが・・・。

    なにか手だてはないでしょうか。


マルチポストを報告
違反を報告
引用返信 削除キー/
■35480 / ResNo.1)  Re[1]: キーボード+バーコードでキーボード入力を無効にしたい
□投稿者/ 魔界の仮面弁士 大御所(1558回)-(2023/08/04(Fri) 12:59:25)
  • アイコンNo35479に返信(たろうさんの記事)
    > バーコードはキーボードエミュレーションのため上記は仕方がないのですが、
    そういった恐れのある環境では、
    HID エミュレート型ではなく、
    Serial 型の製品が採用されます。

    コード入力とかなら、文字数やチェックデジットで弾けるので
    運用上は、そこで再スキャンしてもらえば済む話。
    http://bbs.wankuma.com/index.cgi?mode=al2&namber=66346&KLOG=112


    なお、複数のキーボードが入力されているケースなどでは、
    SharpDX.RawInput を使うことで、どちらのキーボードの
    キーが押されたのかを拾うことはできていますが、
    バーコードリーダー/バーコードスキャナにも通用するかどうかは
    手元に実機が無いので検証できません。
違反を報告
引用返信 削除キー/
■35481 / ResNo.2)  Re[2]: キーボード+バーコードでキーボード入力を無効にしたい
□投稿者/ たろう 一般人(5回)-(2023/08/04(Fri) 13:48:31)
  • アイコンNo35480に返信(魔界の仮面弁士さんの記事)
    > そういった恐れのある環境では、
    > HID エミュレート型ではなく、
    > Serial 型の製品が採用されます。

    そうですよね・・・。
    いえ、まったくおっしゃる通りです。
    このバーコードもキーボードエミュレーションではないモードを持っているようですが
    元請けからできるだけいまの仕組みを変えたくないと言われている状況で何か方法がないか検討しておりました。


    > なお、複数のキーボードが入力されているケースなどでは、
    > SharpDX.RawInput を使うことで、どちらのキーボードの
    > キーが押されたのかを拾うことはできていますが、

    なるほど、キーボードが2つある場合は判断ができるのですね。
    バーコードでも可能かどうかは分かりませんが、参考にさせていただきます。


違反を報告
引用返信 削除キー/
■35483 / ResNo.3)  Re[1]: キーボード+バーコードでキーボード入力を無効にしたい
□投稿者/ とくま 一般人(3回)-(2023/08/04(Fri) 20:37:31)
  • アイコンNo35479に返信(たろうさんの記事)
    ざっくり検索して内容検証してないですが、ウィンドウズメッセージを解析する方向なら
    RAWINPUTHEADERの hDeviceが違うんじゃないかみたいな話とか
    https://teratail.com/questions/215793
    C++の分野だとか、デバイスドライバを自分で作るような話という方向の話はあるようです。

    本音は、
    バーコードリーダーが壊れたときとか、キーボード入力での代替作業が必要となるトラブルは
    必ず起こるので、そのような仕様自体、避けますけどね。現場に直接言われたなら、
    『USB端子をPCの前面に配置しますので、キーボード入力を避けたい場合は、物理的に抜く
    運用でどうでしょうか?』って言っちゃうw趣味で開発するならまだしも、費用対効果を考える
    システムでやる内容ではないようにも思います。
違反を報告
引用返信 削除キー/
■35484 / ResNo.4)  Re[3]: キーボード+バーコードでキーボード入力を無効にしたい
□投稿者/ kiku 一般人(1回)-(2023/08/07(Mon) 19:01:16)
  • アイコンNo35481に返信(たろうさんの記事)
    > ■No35480に返信(魔界の仮面弁士さんの記事)
    >>そういった恐れのある環境では、
    >>HID エミュレート型ではなく、
    >>Serial 型の製品が採用されます。
    >
    > そうですよね・・・。
    > いえ、まったくおっしゃる通りです。
    > このバーコードもキーボードエミュレーションではないモードを持っているようですが
    > 元請けからできるだけいまの仕組みを変えたくないと言われている状況で何か方法がないか検討しておりました。
    >
    >
    >>なお、複数のキーボードが入力されているケースなどでは、
    >>SharpDX.RawInput を使うことで、どちらのキーボードの
    >>キーが押されたのかを拾うことはできていますが、
    >
    > なるほど、キーボードが2つある場合は判断ができるのですね。
    > バーコードでも可能かどうかは分かりませんが、参考にさせていただきます。

    魔界の仮面弁士さんのコメントが妥当と思います。

    もし、入力文字列の長さが固定であれば、
    文字列長で判定し、キーボードからの入力があった場合
    文字列長が想定より長くなることで、
    判定できるのではと思いました。

違反を報告
引用返信 削除キー/
■35485 / ResNo.5)  Re[2]: キーボード+バーコードでキーボード入力を無効にしたい
□投稿者/ たろう 一般人(6回)-(2023/08/08(Tue) 10:48:27)
  • アイコンNo35483に返信(とくまさんの記事)

    デバイスドライバを作ったりということはさすがに難易度が高いので難しいですね…

    とりあえず、「キーボードを触らないで」とお願いする方向になるかもです。
    (「触ってねぇよ。システムの不具合だろう」って言われそうな気もしますが)

違反を報告
引用返信 削除キー/
■35486 / ResNo.6)  Re[4]: キーボード+バーコードでキーボード入力を無効にしたい
□投稿者/ たろう 一般人(7回)-(2023/08/08(Tue) 10:51:27)
  • アイコンNo35484に返信(kikuさんの記事)
    > 魔界の仮面弁士さんのコメントが妥当と思います。

    そうですね…
    文字列は固定長とは限らず、チェックデジットもないというか、フリーフォーマットのようで、用紙ごとに何が書いてあるかは分からないそうで、なかなか難しいです。

    キーボード入力だけはじくというのは簡単ではなさそうなので、本件はこれにて終了といたします。


解決み!
違反を報告
引用返信 削除キー/



スレッド内ページ移動 / << 0 >>

このスレッドに書きこむ

Mode/  Pass/


- Child Tree -