• 締切済み

Win32とC++で非アクティブウィんドウでのキーの取得

Win32プログラムでプログラムのウィンドウが非アクティブのときにキーメッセージを受け取るにはどうすればよいでしょうか。

みんなの回答

回答No.2

 こんにちは。GetKeyboardState()では無理でした。すんません。  DirectInputで可能です。ただし、Direct??は使用するのが実に面倒な物です(初期化や準備が大変)。  //ダイレクトインプットデバイスを作成する  IDirectInputDevice8* g_pDIDevice = ...  //DISCL_BACKGROUNDフラグが、非アクティブでも入力受付可を意味する  hr = g_pDIDevice->SetCooperativeLevel(hwnd, DISCL_NONEXCLUSIVE | DISCL_BACKGROUND);

参考URL:
http://www.shader.jp/xoops/html/masafumi/directx9/dinput/dinput002.htm
全文を見る
すると、全ての回答が全文表示されます。
回答No.1

 こんばんは。う~ん、合っているかは解りませんが、アイドリングでGetKeyboardState()を使って検出するのは如何でしょう? while(TRUE) { if(::PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE)) { if(!::GetMessage(&msg, NULL, 0, 0)) break; ::TranslateMessage(&msg); ::DispatchMessage(&msg); } else //アイドリング { //hWndがアクティブであったらリターン //キーボード入力受け取りバッファ BYTE arrBufKey[256]; //キーボード入力受け取り ::GetKeyboardState(arrBufKey); //リターンキーが押された if(arrBufKey[VK_RETURN] & 0x80) { //何かする } } }

Jst0Op9r
質問者

お礼

回答ありがとうございます。 非アクティブ時には取得できていないようでしたが・・・

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • WIN98からWIN2000への変更について

    WIN98からWIN2000へのアップグレード(新規インストールではありません)をしようとしたところ、 アップグレードレポートの準備画面で、「このプログラムは不正な処理をしたので中断します・・」との内容の「WINNT32」というウィンドウが出て、中断されてしまいます。 OS以外に動いているプログラムはありません。 原因や対策について教えて下さい。

  • 【大至急】Winキー等を無効化

    【大至急】Winキー等を無効化 すべてのWindows(といってもWin95~Win7でかまいません)のバージョンにおいて Windows キーを無効化、及び、それの復元できる レジストリ等をわかる方は いらっしゃいますでしょうか? よろしくお願いします。

  • Win8ではなくWin7を選ぶのは有り?

    Windowsをずーと使い続けてきて、Win8.1機を今使って1年になりますが、どうもなれません。 会社ではWin7なので快適です。 今更ですが、Win7機を買うというのは有りなのでしょうか? スタートメニューからプログラムを選び、エキスプローラでファイル操作する環境が良いです。 逆にWin8をWin7ライクにして使う方が良いのでしょうか? お教えください。

  • winキーの有効化

    win8.1でwinキーの有効化の方法を教えてください 無効化したときは、microsoftのページから無効にするものをダウンロードしました。

  • win updateについて

    Win Updateについてお尋ねいたします。 OSはWin7ですが、他でも当てはまるとおもいますが。 Windows Updateを「更新プログラムを自動的にインストールする(推奨)」に設定しています。 時間が来たら自動でUpdateしている様ですが、「WindousUpdate」の画面に「このコンピューターに対する更新プログラムがあります。2個の重要な更新プログラムが利用可能です」と表示されており、自動では更新しない様です。 これは手動でないとダメなんでしょうか。 よろしくお願いします。

  • win8をwin8.1にしないようにするには?

    windows updateでwin8から8.1に変わり 不具合が出たのでPCリフレッシュで8に戻しました。 (メーカー推奨のリカバリはエラーでできませんでした) PCメーカーのサイトにある準備を整えてから再度8.1にしたいのですが、 準備項目に「win8のwindows updateを最新の状態にする」というのがあります。 他の準備が終わるまでこのupdateでwin8.1が来ないようにしたいのですが、 windows updateを手動で行い、 [Windows 8 for x64-Based System 用更新プログラム(KB3008273)] のチェックを外して非表示にしておくだけでいいのでしょうか? win8の更新に見えますがKB2885699、KB2973544、KB3008273も? 他にも気をつけることがあれば教えて下さい。 よろしくお願いいたします。 参考にしたURL↓ http://www.fmworld.net/cs/azbyclub/qanavi/jsp/qacontents.jsp?PID=5310-3319 http://www.dell.com/support/article/us/en/19/SLN294400/JA

  • Win Zip 21.0がアンインストールできない

    最近 Win Zip updater のアップデートのウィンドウが開いて困ってます。 ネットで調べて、コンピューターパネルからのアンインストールを試しても、「削除の準備中」と出て、しばらくすると、そのウインドーも消えてしまって、プログラムの一覧からWin Zip 21.0が消えていません。programsからwinzipでサーチすると、 Win Zip 21.0 Win Zip アップデート通知ツール Win Zip preloader Win Zip バックグラウンドツール と、出てきます。先月1日にインストールしたことになってましたが、覚えがありません。アンインストールの仕方をご存知のかた、よろしくお教えください。お願い致します。

  • Win Updateについて

    Win Updateの更新プログラムの確認で、「現在サービスが実行されていないため、Windows Updateで更新プログラムを確認できません。このコンピューターの再起動が必要な可能性があります。」、と表示されて実行できません。再起動しても同じです。どうしたらよいでしょうか?

  • Win XPのMicrosoftとWin Upd

    Windows XPのMicrosoftと Windows Update Win XPのMicrosoftと Win Update  いつも回答ありがとうございます。  DELL OPTIPLEX GX270を使用しています。  Windows XP のデスクトップ画面で、  スタートボタン  すべてのプログラム  を選択すると  Microsoft Update Windows Update  の二つのプログラムを選ぶことができます。  しかし、いずれのプログラムを選んでも、同じ画面が立上り Microsoft Update と表示されます。URLも、下記のように同じです。  表示内容も 高速とカスタムを  選ばせるようになっています。  もともとは、  Microsoft Update  は、Windows とOfficeなどの広い範囲のアップデート Windows Update は、Windows だけのアップデートになっていました。 ●Q01. この両者の違いは、、何でしょうか? ●Q02.なぜ、このように同じ内容になってしまったのでしょうか? Microsoft Update http://www.update.microsoft.com/microsoftupdate/v6/default.aspx?ln=ja Windows Update http://www.update.microsoft.com/microsoftupdate/v6/default.aspx?ln=ja 敬具

  • Win95とWin98の相違について

    私は日頃C言語の勉強をしていますが、ふと思い当たった事がありましたので質問させていただきます。 店に行くとソフトはWin98までの対応となっているものが殆どですが、例外的にWin95にも対応しているソフトが中にはあります。 このWin95にも対応しているものとそうでないものはプログラムの機構から見てどう異なるのでしょうか。 同様にXPでは動くがWiN2000では動かないと言うものもあります。こうしたものに対してはどう考えていいのやら、プログラムの初歩の者にはわかりにくくここに問わせて頂く次第です。

USBタップのノイズと温度
このQ&Aのポイント
  • USBCを使って充電を使用すると不快な音がする
  • USBタップが熱くなる
回答を見る

専門家に質問してみよう