• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:コンソールアプリでキーの同時押しを検出する方法)

コンソールアプリでキーの同時押しを検出する方法

このQ&Aのポイント
  • コンソールアプリでキーの同時押しを検出する方法がわかりません。GUIならおとなしくDirectInputに逃げることが出来たかもしれませんが、コンソールなのでそれも出来ずに悩んでいます。環境はVisualC++2005(ExpressEdition)、WindowsXPです。
  • _getch()や_kbhit()だけではどうにも無理そうですし、残された手段は_inp()程度でしょうか。昔はPC-9801でBASICからINP()関数でI/Oポートを直接叩いてキー入力を読み出していたものでしたが、AT互換機となると若干勝手が違ってくるように思えます。ましてや9xではないWindowsXPでI/Oポートなんかすんなり読ませてくれるのか若干不安が残っています。
  • どなたかその辺の処理で詳しい方いらっしゃいませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.1

★アドバイス >残された手段は_inp()程度でしょうか。 >昔はPC-9801でBASICからINP()関数でI/Oポートを直接叩いて >キー入力を読み出していたものでした  ↑  私も昔はI/Oポートを直接読み出していました。  懐かしいですね。 ・コンソールアプリでも Win32 API は呼び出せるので次の関数で出来ると思います。  http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_getkeystate.asp→『GetKeyState』  http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpwinui/html/_win32_getkeyboardstate.asp→『GetKeyboardState』  この2つのどちらかで取得できると思います。  『#include <windows.h>』をインクルードしておきましょう。 ・以上。

参考URL:
http://wisdom.sakura.ne.jp/system/winapi/win32/win32.html
dmq
質問者

お礼

ご回答ありがとうございます。 こちらでも自力で調べてましたが最終手段としてGIVEIO.SYS導入した上で _inp(0x60)と_inp(0x64)を拾って後はKIAIで値の法則性を掴もうかと 考えていましたが助かりました。GetKeyState()がコンソールで動くとは 正直目からウロコです。早速試してみたいと思います。

関連するQ&A