こんにちは。GetKeyStateについて質問させていただきます。
VB6にて、APIの「GetKeyState」を使用し、Tabキーのキー入力判断を行っているのですが、その他の操作(GetKeyStateを判断しているフィールドより
マウス左ボタンにて他のコントロールに移動した時等)に、Tabキーを押して
いないのに、プログラムはTabキーを押した状態のロジックが動作していま
す。下記にそのコードを記述しますので、原因・対処方法がありましたら、
教えてください。
****コード
Private Sub TXT_ATAI_LostFocus()
Dim SUBM0030 As SUBM0030_AREA
Dim X As Variant
If (GetKeyState(vbKeyTab) <> 0) Then
If FRM70.TXT_ATAI.Text <> "" Then
Call MEDIA_DECODE3_SEC(SUBM0030, "1")
If SUBM0030.RETURN_CD <> "0" Then
FRM70.GRD1.Col = 7
FRM70.TXT_ATAI.SetFocus
FRM70.MousePointer = vbDefault
Exit Sub
End If
End If
End If
End Sub
**** 開発環境
・OS:Windows98 4.10.1998
・メモリ:64MB
・CPU:P2-233
・PC:FMV6233-D9
No.2ベストアンサー
- 回答日時:
>If (GetKeyState(vbKeyTab) <> 0) Then
If (GetKeyState(vbKeyTab) < 0) Then
では?
参考URL:http://support.microsoft.com/default.aspx?scid=k …
No.4
- 回答日時:
プロパティのMultiLineをTrueにしていませんか?
その場合、そういうことがあるようです。
対応としましては、
MultiLineをFalseにするか、
下記のようにコードを固定すればいいと思います
intSts = GetKeyState(vbKeyTab) And &HFE
If intSts = 128 Then
MsgBox "Tab"
End If
参考になれば。。
No.3
- 回答日時:
すいませんTodo36さん、その通りです。
リンク先より:If the return value is negative, the key has been pressed.
たしかに・・・m(_ _)m
さらに、GetAsyncKeyState(vbKeyTab) <> "0" ←なぜか文字列で比較している
akfkさんご迷惑かけました、todo36さん、ありがとうございます。
No.1
- 回答日時:
NT40(SP6)+VB5(SP3)環境での回答とさせていただきます。
確かにGetKeyState(vbKeyTab) <> 0の記述ではその現象が発生します、理由は調べていません(--;)
目的がTABキーの状態の取得でしたら、次のコードでも実現可能です。
----------------- 標準モジュール
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
----------------- FRM70
Private Sub TXT_ATAI_LostFocus()
If GetAsyncKeyState(vbKeyTab) <> "0" Then
MsgBox "TAB"
End If
End Sub
------------------
参考になれば幸いです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンボボックスにキー入力をさ...
-
【Mouse Down】キーリピートを...
-
イベントハンドラが取得できな...
-
VB.NETでフォームがない...
-
【VB】タブ切り替え時のイベント
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
「PC Helpsoft Driver Updated...
-
uwscの画像認識に失敗します。
-
エクセルVBAで、MsgBox やInput...
-
Excelシート上のマクロを登録し...
-
iD
-
Accessでサブフォームの合計を...
-
お家デートをしててハグを長い...
-
Access 日付/時間型を検...
-
【Excel】特定の文字を含むセル...
-
excel スクロールしても常にボ...
-
IQテストの数列
-
CloseとDisposeの違い
-
アドレス帳のアイウエオ順表示...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
特定のキーを押すまでループさ...
-
Visual Basic 6.0 コンボボック...
-
WPFでの時刻入力コントロールに...
-
【VB】タブ切り替え時のイベント
-
コンボボックスにキー入力をさ...
-
(VBA)チェックボックスのclick...
-
IEで、BackSpaceで「戻る」機能...
-
タブキー押下時のイベントをひ...
-
一定時間操作されないと自動で...
-
エクセルVBAのテキストボック、...
-
Excel VBA マクロ実行中のみテンキ...
-
VB.NETでフォームがない...
-
KEYPREVIEW=TRUEについて。意味...
-
VB.NETのDropDownListをReadOnl...
-
キーイベントを擬似的に発生さ...
-
Access データ表示 完了時のイ...
-
複数のテキストボックスのカン...
-
テキストボックスの入力文字を1...
-
コマンドボタン(入力)をクリッ...
-
VBでEnterを押すとTabで飛...
おすすめ情報