プロが教えるわが家の防犯対策術!

いつもお世話になります

昨日の質問は、fujillinから教わったGetAsyncKeyState関数でうまく行きました
ありがとうございました

ところでもう一つ質問
下記のようにマウス左クリックとEnterキーでチェックしたところ
GetAsyncKeyState(vbKeyReturn)は最初 1 が入ってきます
そこでカウントを取ってプログラムは実行していますが何故だか教えていただけると
幸いです

errCount = 0
Do
If GetAsyncKeyState(vbKeyLButton) <> 0 Then
Exit Do
ElseIf GetAsyncKeyState(vbKeyReturn) <> 0 Then
If errCount > 0 Then
Exit Do
Else
errCount = errCount + 1
End If
End If
Loop
DoEvents

以上、宜しくお願い申し上げます

A 回答 (1件)

こんにちは



どのような実行状態なのかよくわかりませんので、以下は妄想での回答になりますので、あくまでもご参考までに・・・


戻り値の値は、最下位ビットと最上位ビットでそれぞれ2種類の意味を持っています。
また、「他のスレッドがキーボードフォーカスを持っている場合は0が返る」との記述があります。
https://www.tokovalue.jp/function/GetAsyncKeySta …

VBAの実行制御をどうなさっているのかわかりませんけれど、
>GetAsyncKeyState(vbKeyReturn)は最初 1 が入ってきます
Enter押し下げ(1回)を感知したいだけなら、戻り値「1」(=最下位ビット)で判断しても良いのではないでしょうか?
(それだけでよいのかは、実際の内容がわからないので、当方にはわかりかねますが・・)

あくまでも『関数呼び出し時の押し下げを感知したい』というのであれば、「 <>0 」ではなく、最上位ビットで判断すればよいものと思われます。
    • good
    • 0
この回答へのお礼

いつもお世話様です
おかげさまで進捗状況は順調です

今回の件もありがとうございます
この件、最上位ビットで検討して見ることにします
これからもお願い申し上げます
ありがとうございました

お礼日時:2023/08/26 12:43

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています