回答編集履歴
1
追記
test
CHANGED
@@ -1,9 +1,21 @@
|
|
1
1
|
区別できればいいなら
|
2
2
|
|
3
|
-
https://godai.hateblo.jp/entry/20110617/1308310209
|
3
|
+
[https://godai.hateblo.jp/entry/20110617/1308310209](https://godai.hateblo.jp/entry/20110617/1308310209)
|
4
4
|
|
5
5
|
|
6
6
|
|
7
|
-
興味あるのでサンプル作成するかも。
|
7
|
+
~~興味あるのでサンプル作成するかも。~~
|
8
8
|
|
9
9
|
pinvoke.net を見るといいと思います。
|
10
|
+
|
11
|
+
提示できないですが、サンプル作ってみました。
|
12
|
+
|
13
|
+
RawInput を取ってしまうからか、TextBox への入力がされなくなってしまいました。[`WndProc`](https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.forms.control.wndproc?view=netframework-4.8) 内で何かする必要がありそうです。ああ、[`RAWINPUT`](https://docs.microsoft.com/ja-jp/windows/win32/api/winuser/ns-winuser-rawinput)のRemarkに書いてあることをすれば良いのかな。
|
14
|
+
|
15
|
+
おそらく、`WM_KEYDOWN`, `WM_KEYUP` に相当するメッセージのタイミングで発生するようで、2回ずつ発生してしまいます。(キーを押しっぱなしだと連続して何度も発生する)
|
16
|
+
|
17
|
+
[`RAWINPUTHEADER`](https://docs.microsoft.com/ja-jp/windows/win32/api/winuser/ns-winuser-rawinputheader)の `hDevice` が、デバイスごとに変わることを確認しました(PS キーボードと USB キーボードで、USB は違うポートに差し替えていません)。最初に「プレイヤー1、何かキーを押して下さい」「プレイヤー2、何かキーを押して下さい」と、キー入力させてその `hDevice` を覚えておけば、どちらの入力かを知ることはできそうです。
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
関数名で検索すれば C++ のコードはいくらでもあるので、[PINVOKE.NET](http://pinvoke.net/)を参考に、ゴリゴリ宣言していけばできます。
|