dポイントプレゼントキャンペーン実施中!

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

A 回答 (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/directx …
    • good
    • 0

 こんばんは。

う~ん、合っているかは解りませんが、アイドリングで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)
{
//何かする
}
}
}
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

非アクティブ時には取得できていないようでしたが・・・

お礼日時:2008/08/07 02:31

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