KeybourdStateの使いかたがわからない。 – プログラミング – Home

KeybourdStateの使いかたが...
 
通知
すべてクリア

[解決済] KeybourdStateの使いかたがわからない。


VC++6のユーザー
 VC++6のユーザー
(@VC 6のユーザー)
ゲスト
結合: 20年前
投稿: 8
Topic starter  

一応CreateWindowで大きなWindowは表示させてはいますが、その上で
・ スペースキーを押されている時のみ、プログラムを止める(EXIT(4)かなんかで)
  ようにするには
  どうすればよいのでしょうか?
・ コントロールキーを押されている時のみ、プログラムを止めるようにするには
  どうすればよいのでしょうか?
・ いかなるキーを押されている時にプログラムをとめるようにするには
  どうしたらいいのでしょうか?
・ それらの実現は、デバッグモードでも可能でしょうか?
  (組み方が悪いのかもしれませんが、いつも、0が帰って来るような)


引用未解決
トピックタグ
SunPac
 SunPac
(@SunPac)
ゲスト
結合: 21年前
投稿: 105
 

こんな感じで。(スペル違うけど、GetKeyboardState()の事だよね?)

BYTE keybuf[256];
GetKeyboardState(keybuf);
if(keybuf[VK_CONTROL] & 0x80) // Control押されてる

プログラムを止めるというのはSuspendThread()かな。(EXIT(4)って何?)
これらはデバッグモードでも可能です。


返信引用
VC++6のユーザー
 VC++6のユーザー
(@VC 6のユーザー)
ゲスト
結合: 20年前
投稿: 8
Topic starter  

ありがとうございます。

さっそくやってみました。

VK_CONTROLが見つからないと言うことで、
無反応です。
何かINCLUDEするものはありますか。
また、キーの場合であなくて、MOUSEをクリックした場合に
反応させるのはどうなるのでしょうか?

ちなみにexit()は、プロセスそのものを終了する関数です。


返信引用
n
 n
(@n)
ゲスト
結合: 21年前
投稿: 90
 

>VK_CONTROLが見つからないと言うことで、
>無反応です。
>何かINCLUDEするものはありますか。

Windows.hをインクルードしてあればOKなはずですが、
綴りを間違えていないですか?

>また、キーの場合であなくて、MOUSEをクリックした場合に
>反応させるのはどうなるのでしょうか?

ウィンドウにWM_LBUTTONDOWNメッセージとかが来ますよ。


返信引用
SunPac
 SunPac
(@SunPac)
ゲスト
結合: 21年前
投稿: 105
 

> ちなみにexit()は、プロセスそのものを終了する関数です。

それは分かりますがプログラムを止めるっていうのはプロセスを終了させるって事なの
でしょうか?
押されている時のみ止めるというので、てっきりキーを離したら再開させたいのかと思っ
た。

window.hをインクルードしてないという事はひょっとしてコンソールアプリとか?
環境等は必ず示して欲しいです。


返信引用
SunPac
 SunPac
(@SunPac)
ゲスト
結合: 21年前
投稿: 105
 

CreateWindowしてるって事はコンソールアプリじゃなさそうですね。
失礼しました。
nさんのおっしゃる通り綴りミスでしょう。

マウスは左クリックはWM_LBUTTONDOWN、右クリックはWM_RBUTTONDOWNが飛んできます。


返信引用
VC++6のユーザー
 VC++6のユーザー
(@VC 6のユーザー)
ゲスト
結合: 20年前
投稿: 8
Topic starter  

すみません。
VC++6のMFCも使うユーザーで
環境は、ConsoleではなくWindows下、ヘッダーの方は、windows.hも指定しています。
確かに、私のやりたい方は、一時停止ではなくて、永久に
プログラムから抜けてしまうことですが、
VK_CONTROLの方は、スペルは間違ってはいないものの、
今確認してみましたが、VK_F12に書き直してみると、
一時停止出来ました。

当面、デバッグモードで走って、F12キーで止めてもらい。
抜けてもらおうかと。(実行モードだと、停止した状態から、
抜けるのには、往生するので)


返信引用
VC++6のユーザー
 VC++6のユーザー
(@VC 6のユーザー)
ゲスト
結合: 20年前
投稿: 8
Topic starter  

すみません。
VC++6のMFCも使うユーザーで
環境は、ConsoleではなくWindows下、ヘッダーの方は、windows.hも指定しています。
確かに、私のやりたい方は、一時停止ではなくて、永久に
プログラムから抜けてしまうことですが、
VK_CONTROLの方は、スペルは間違ってはいないものの、
今確認してみましたが、VK_F12に書き直してみると、
一時停止出来ました。

当面、デバッグモードで走って、F12キーで止めてもらい。
抜けてもらおうかと。(実行モードだと、停止した状態から、
抜けるのには、往生するので)


返信引用
SunPac
 SunPac
(@SunPac)
ゲスト
結合: 21年前
投稿: 105
 

なんでVK_CONTROLがダメなのか分かりませんが、VK_CONTROLは0x11となっています。
ちなみに左右のキーを区別するのならVK_RCONTROL(0xA2)、VK_LCONTROL(0xA3)です。
これらで試してみてはいかがでしょうか?


返信引用
n
 n
(@n)
ゲスト
結合: 21年前
投稿: 90
 

F12キーというのはもしかして、プログラムが自分で止まっているんじゃなくて、
デバッガに止めてもらっているんじゃないでしょうか。

てことはGetKeyboardStateを呼び出す部分のコードが実行されていない可能性が…


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました