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

c#のシステムフックおいて質問

環境/言語:[VB.NET, C#  .NET Framework3.5]
分類:[.NET]

C#もしくはVBでシステムフック(キーボード)のやろうとして書きページにたどり着きましたが
http://hongliang.seesaa.net/article/7539988.html
altdownという項目があるのですが、これにShiftDownや CTRLDOWNはどのようにたしたらいいのでしょうか? 実際に自分でも
ここかなっていうところにたしたのですが altdownのときの0x20のような16進数の値がわからず苦戦しております。 教えていただけたら幸いです。
> 実際に自分でもここかなっていうところにたしたのですが altdownのときの0x20のような16進数の値がわからず苦戦しております。
適当に試すのではなく、まず MSDN に目を通すようにしましょう。
Win32API 関連においては、特に列挙体やら構造体やらは日本語版はダメダメなので英語版を。英語に抵抗があるかもしれませんが、ほとんどの場合読む必要はありません。

で、フックのコールバック時の引数として渡される構造体が以下の物です。
http://msdn.microsoft.com/en-us/library/ms644967.aspx
AltDown はこの中の LLKHF_ALTDOWN を使ってるわけですが、ざっと見ればそもそも Shift/Ctrl はページ内に一切含まれていないことが分かります。つまり、この構造体から取得することはできません。

ではどうするかですが、GetAsyncKeyState 関数を使えばいいんじゃないかなー、と思います。
■No29862に返信(Hongliangさんの記事)
>>実際に自分でもここかなっていうところにたしたのですが altdownのときの0x20のような16進数の値がわからず苦戦しております。
> 適当に試すのではなく、まず MSDN に目を通すようにしましょう。
> Win32API 関連においては、特に列挙体やら構造体やらは日本語版はダメダメなので英語版を。英語に抵抗があるかもしれませんが、ほとんどの場合読む必要はありません。

ありがとうございます。 探しきれませんでした。
GetAsyncKeyState 関数 をしらべていくうちに DirectInputがあることにきづきそれで書きましたありがとうございます。
解決済み!

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