はじめまして。。。
初めてここに書き込みをします。
VB6でタイマーを使用し常時、GetKeyStateを使用し押されたキーを取得するテストを行っているのですが、漢字キーが押されたとき&H19が返ってこなければいけないはずなのに返ってこず、&HF3のところが&HF4に切り替わります。
VirtualKeyCodeでいう&HF3と&HF4は、どういう意味(なにかがトグル状態?)
なのでしょうか?
//VitualKeyCode//
http://homepage2.nifty.com/qta/work/vk_code.htm
追記
他のPCでも試してみましたが、漢字キーを押して変わるところは
つぎの3つです。
&HF2<->&HF0
&HF3<->&HF4
&HF5<->&HF6
&HFBがずっと押されています;
GetKeyStateがおかしいのかな?
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_getkeystate.asp
ここのリファレンスを見る限り、GetKeyStateは仮想キーコードを引数で指定してそのキーが押されているかどうかを返す関数ですね。
押されているキーが何かを返してくれる関数ではありません。
ですから&H19が返ってくることはないと思います。
<押されているキーが何かを返してくれる関数ではありません。
すみません、言い方が悪かったようです。<返すという表現は誤り
もちろん返さないのは理解しています。^^
僕が行ったテストでは
Timerイベント内で
Dim VK as Long
Dim Ans_ as String
VK = 0
Do
DoEvents
if GetKeyState(VK) < 0 then
Ans_ = Ans_ & hex(vk) & ","
end if
VK = VK + 1
Loop Until VK > 255
Text1.text = mid(Ans_,1,len(Ans_)-1)
という処理をしています。
提示されたコードを試して見ましたが、
漢字キー(私のPCのキーボードでは「ALT」+「半角/全角」キー)を押したら、
「19」が、一覧に出てきますけど・・・
<漢字キー(私のPCのキーボードでは「ALT」+「半角/全角」キー)を押し
たら、
<「19」が、一覧に出てきますけど・・・
僕もやってみました、19がでてきましたね〜
(よく考えてみたらALT+半角/全角 = 漢字キーですよね;)
半角/全角キーのみでは、&HF3<->&HF4で判別すればいいですね。
他の
&HF2<->&HF0
&HF5<->&HF6
はどう言った意味なのでしょう。
http://www.math.msu.su/~vfnik/WinApi/other/virtualkeycodes.htmlに
Const VK_OEM_AUTO = &HF3
Const VK_OEM_ENLW = &HF4
Const VK_OEM_BACKTAB = &HF5
Const VK_ATTN = &HF6
と書いてありますが、意味不明です。。。。
どなたか説明お願いします>_<
ツイート | ![]() |