C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: 複数のキーボード入力で入力機器を判別する


(過去ログ 112 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■66346 / inTopicNo.1)  複数のキーボード入力で入力機器を判別する
  
□投稿者/ 権ノ助 (1回)-(2013/04/17(Wed) 10:05:17)

分類:[VB.NET/VB2005 以降] 

VB2005を使用しています。

1台のパソコンに複数のUSB入力機器を接続します。
具体的には、キーボード1台、テンキー2台、USBスキャナ1台です。
USBスキャナは、キーボード入力と同じ動作をします。

Formにtextboxを1つ載せます。
キーボードで「ABC」と打てば、Textboxには「ABC」と出ます。
テンキー1で「123」と打てば、Textboxには「123」と出ます。
テンキー2で「987」と打てば、Textboxには「987」と出ます。
スキャナで「Q67」のコードを読めば、Textboxに「Q67」と出ます。

これをTextboxの処理で、「ABC」はキーボードで読まれたとか、「123」はテンキー1で読まれたとか判別する方法はありませんか?

引用返信 編集キー/
■66351 / inTopicNo.2)  Re[1]: 複数のキーボード入力で入力機器を判別する
□投稿者/ 774RR (77回)-(2013/04/17(Wed) 12:48:09)
そういう区別をすべきでない=
どのキーボードやどのマウスで操作されたのであっても透過的に動作すべき
というのが Windows UI の設計思想なので、まず「区別したい」という要望の妥当性から再検討。

「バーコードリーダーで読み取った値は常に特定の TextBox に入れたい」
なんて要望はよくあるんだけど、そういう場合は
バーコードリーダー側の設定変更で可能かどうかを最初に検討すべきであろう。
Q67 をバーコードリーダーで読んだら ***Q67*** のように入力されたことになる、
(ここの *** は、通常キーボードからでは入力できない文字を選ぶ)とかしておけば簡単。

何が何でも入力機器を区別したいのであれば RawInput が使えるかもしれない。
RegisterRawInputDevices とか GetRawInputData とかで調査したらいい。
(VB からどう使えばいいかは、俺は VB 詳しくないので他の人にお任せ)

引用返信 編集キー/
■66354 / inTopicNo.3)  Re[2]: 複数のキーボード入力で入力機器を判別する
□投稿者/ Hongliang (52回)-(2013/04/17(Wed) 14:36:44)
> バーコードリーダー側の設定変更で可能かどうかを最初に検討すべきであろう。
> Q67 をバーコードリーダーで読んだら ***Q67*** のように入力されたことになる、
> (ここの *** は、通常キーボードからでは入力できない文字を選ぶ)とかしておけば簡単。

バーコードリーダーの入力とキーボードの入力が同時に行われたとき、
***hQo6g7e*** になったりしないもんですかね?

> 何が何でも入力機器を区別したいのであれば RawInput が使えるかもしれない。
> RegisterRawInputDevices とか GetRawInputData とかで調査したらいい。

なお、GetRawInputDataで取得する値だけでは、デバイスを区別することはできますが、デバイスを特定することはできません。
特定する必要がある場合は、多分ですがGetRawInputDeviceInfoでインスタンスIDを取得して、SetupDi系の諸々のWin32API関数と突き合わせて確認する形になるかと思います。
引用返信 編集キー/
■66356 / inTopicNo.4)  Re[3]: 複数のキーボード入力で入力機器を判別する
□投稿者/ 774RR (78回)-(2013/04/17(Wed) 15:01:31)
> ***hQo6g7e*** になったりしないもんですかね?
バーコードリーダやキーボードによって違いそうだしなんともいえないよね。
仮にそうなったとしても運用で逃げちゃえばいいし(爆)
JAN コードとかだと必ずチェックデジットがついてるので、そっちでハネるのは可能。

# スキャナで OCR した値は、特定のテキストボックスに入れたい・・・
# という案件であると妄想したので先のような文書になったわけだが
# そうでないのだとすると無駄なコメントなわけで、元発言者のフォローを期待。

RawInput 系を使うということは大いにデメリットがあって
・スクリーンキーボード等の補助入力をどう扱うか
・キーマップを変更しているユーザーをどう扱うか
等は採用前に十分検討しておく必要がある。

区別と特定の違いに関しては御意。

引用返信 編集キー/
■66387 / inTopicNo.5)  Re[4]: 複数のキーボード入力で入力機器を判別する
□投稿者/ 甕星 (9回)-(2013/04/19(Fri) 07:14:47)
もし本当に入力元を判断する必要があるなら、キーボードエミュレーションではなく、232C接続のもの(物理接続はUSBで232cポートとして認識するものもある)使うのがよいかと思います。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -