黒龍's Blog

明日から役立つ無駄知識をあなたに(仮)

ホーム 連絡をする 同期する ( RSS 2.0 ) Login
投稿数  170  : 記事  0  : コメント  2719  : トラックバック  26

ニュース

わんくま同盟に参加させていただきました。
どうぞよろしくお願いします。

自己紹介

コミュニティ

  • わんくま同盟
    わんくま同盟

書庫

ちょっと忙しくて全然触れなかったんですが余りに悔しいのでちょっと触ってみました。前回はまったく取れなかったんですがRegisterRawInputDevicesでconsumer controlsを追加することでWM_INPUTは飛んでくるようになりました。

その後入力を検証してみるがいまいち取得方法に自信が持てないので参考にするソースを探してみる。参考にできそうなソースがVB.NETであったのでC#でリライトしてみました。が、構造体の取得でエラー。

                    '-- copy the data to a buffer
                    buffer = Marshal.AllocHGlobal(pcbSize)
                    GetRawInputData(m.LParam, RID_INPUT, buffer, pcbSize, Marshal.SizeOf(GetType(RAWINPUTHEADER)))
                    '-- convert the buffer to header data structure
                    Dim raw As RAWINPUT
                    raw = CType(Marshal.PtrToStructure(buffer, GetType(RAWINPUT)), RAWINPUT)

というVBから

                            buffer = Marshal.AllocHGlobal(pcbSize);
                            GetRawInputData(m.LParam, RawInputCommand.Input,out buffer, ref pcbSize, Marshal.SizeOf(typeof(RAWINPUTHEADER)));
                            //-- convert the buffer to header data structure
                            RAWINPUT raw;
                            raw = (RAWINPUT)Marshal.PtrToStructure(buffer, typeof(RAWINPUT));

というC#コードに変更してみたのだがMarshal.PtrToStructureのところで例外・・・。時間がないのでVBのまんまで続行。

キー入力の様子を見ると9bytesのデータが押しているキーに応じて押している間連続で飛んできている。その後キーを離すと9bytesの違う形のデータが4つのあとに9bytesの0が飛んできて終了。9bytesの0は終端だとして4つ来るデータはキーアップかな?まぁ、ナンにせよ押している間中飛んできているデータを捕捉すればよさそうなので適当に押してみて傾向を見てみる。

見ていると1byteが変わってるような感じだ。これがキーコードだろうか?先頭はキーアップ時と同じっぽいのだが念のため1byteだけ捨てて64bitデータとしてみてみると下位バイトが0x010000 ~ 0xXX0000のように変化している。

うし。んじゃこれを投げなおすだけだべ。

というわけで記憶を頼りにSendMessage(hWnd, WM_KEYDOWN, VK, IntPtr.Zero)してみるも応答無し。

調べてみるがなぜか到達しない。いろいろと情報をあさってみるがいまいちヒットせず。SendInputを使ったものが多いのでSendInputに変えてみることに。

が、応答無し。ターゲットをメモ帳にして見るもかわらず。(というかMessageが飛んでないっぽい・・・)

 

んむ~解決できそうだったのになぁ。もう暫くかかりそうです。

投稿日時 : 2006年10月22日 23:28

コメント

# jnqAPQFjWoGDPDGMj 2011/12/23 0:15 http://247options.com/
Hooray! the one who wrote is a cool guy..!

# kusOxrNIkEWN 2011/12/23 18:28 http://247options.com/
Every time I come back here again and don`t get disappointed..!

# TZZIKsCYlttJGCxluc 2011/12/29 21:41 http://www.seokiwi.com/
Pleased to read intelligent thoughts in Russian. I`ve been living in England for already 5 years!...

# faux prix rolex daytona 2017/12/24 11:00 deisaoqylelefssignowp@hotmal.com
Beneficial posts, Many thanks.

Post Feedback

タイトル
名前
Url:
コメント