トップページ > 過去ログ > 記事閲覧
キーボードからの入力を取得できない?
名前:レンタッカ 日時: 2012/07/23 09:58

知り合いのPCで動かしてもらったところ、 Win7においてキーボードから入力を取得できない そうです。今回は代替の方法で一応取得はできたん ですけど、できたらDXライブラリで取得できたら いいなって考えてます。 DXライブラリDotNet Ver3.08cを使用しています。 あと、知り合いのPCは32bitだそうです。 0:システムの情報を出力します 0: DXライブラリ Ver3.08c 0: 論理プロセッサの数 : 2 1: OS Windows7 ( Build 7600 ) 101: CPU動作速度:大体2.68GHz 101: MMX命令を使用します 101: SSE命令が使用可能です 101: SSE2命令が使用可能です 101: CPUベンダ:GenuineIntel 102: CPU名:Pentium(R) Dual-Core CPU E5400 @ 2.70GHz 102:COMの初期化... COMの初期化に失敗しました 103:メモリ総量:2013.24MB 空きメモリ領域:558.93MB 103:タイマーの精度を検査します 103:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60 103: パフォーマンスカウンターを使用します タイマー精度 : 2630.166000 KHz 104: ソフトの二重起動検査... 二重起動はされていませんでした 104:ウインドウクラスを登録します... 登録に成功しました 104:ウインドウモード起動用のウインドウを作成します 105:ウインドウの作成に成功しました 139:IMEを無効にしました 140:ウインドウスタイルをウインドウモード用に変更します... 完了 142:DirectInput関係初期化処理 142: DirectInput7 の取得中... 成功 156: 引き続き初期化処理... 初期化成功 157: ジョイパッドの初期化... 168: ジョイパッドの初期化は正常に終了しました 168: マウスデバイスの初期化... 初期化成功 169: キーボードデバイスの初期化... 初期化成功 170:DirectInput 関連の初期化は正常に終了しました 170:DirectSound の初期化を行います 171:DirectSound インターフェースの取得を行います.... 成功 172:引き続きインターフェースの初期化処理... 成功 238: DirectSound デバイスを列挙します 239: モジュール名: ドライバ記述:プライマリ サウンド ドライバー 239: モジュール名:{0.0.0.00000000}.{6d53de12-5063-443b-b52a-5e3145ec1256} ドライバ記述:ヘッドホン (High Definition Audio デバイス) 239: モジュール名:{0.0.0.00000000}.{321ed0fc-4063-4634-86a2-cbc9aabe32cb} ドライバ記述:デジタル オーディオ (S/PDIF) (High Definition Audio デバイス) 239: 最大サンプリングレート:200.00KHz 最小サンプリングレート:0.10KHz 240: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB 240: 利用可能サンプリング精度 240: プライマリ 16bit = OK 8bit = OK 240: セカンダリ 16bit = OK 8bit = OK 240: 利用可能チャンネル 240: プライマリ MONO = OK STEREO = OK 241: セカンダリ MONO = OK STEREO = OK 241:DirectSound の初期化は正常に終了しました 241:DirectDraw オブジェクトの取得を行います.... 成功 243:引き続き初期化処理... 初期化に成功しました 252:IDirect3D9Ex オブジェクトを取得します.... 成功 254:IDirect3DDevice9Ex オブジェクトを取得します.... ハードウエア頂点演算を使用します 542:成功 542:Driver:igdumdx32.dll Description:Intel(R) G41 Express Chipset 542:画面のフォーマットは D3DFMT_X8R8G8B8 です 542:Zバッファのフォーマットは D3DFMT_D16 です 543:16bit カラーフォーマットは D3DFMT_R5G6B5 です 543:32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 543:アルファ付き 16bit カラーフォーマットは D3DFMT_A4R4G4B4 です 543:アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 543:アルファテスト用 16bit カラーフォーマットは D3DFMT_A1R5G5B5 です 543:アルファテスト用 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 543:DXT1テクスチャフォーマットはD3DFMT_DXT1 です 544:DXT2テクスチャフォーマットは D_D3DFMT_DXT2 です 544:DXT3テクスチャフォーマットはD3DFMT_DXT3 です 544:DXT4テクスチャフォーマットはD3DFMT_DXT4 です 544:DXT5テクスチャフォーマットはD3DFMT_DXT5 です 544:描画用 16bit カラーフォーマットは D3DFMT_R5G6B5 です 544:描画用 32bit カラーフォーマットは D3DFMT_X8R8G8B8 です 544:描画用アルファ付き 32bit カラーフォーマットは D3DFMT_A8R8G8B8 です 545:描画用ABGR整数16ビット型カラーフォーマットは D3DFMT_A16B16G16R16 です 545:描画用ABGR浮動小数点16ビット型カラーフォーマットは D3DFMT_A16B16G16R16F です 545:描画用ABGR浮動小数点32ビット型カラーフォーマットは D3DFMT_A32B32G32R32F です 545:描画用1チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8R8G8B8 です 545:描画用1チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です 545:描画用1チャンネル浮動少数点16ビット型カラーフォーマットは D3DFMT_R16F です 545:描画用1チャンネル浮動少数点32ビット型カラーフォーマットは D3DFMT_R32F です 545:描画用2チャンネル整数8ビット型カラーフォーマットは D3DFMT_A8B8G8R8 です 546:描画用2チャンネル整数16ビット型カラーフォーマットは D3DFMT_G16R16 です 546:描画用2チャンネル浮動少数点16ビット型カラーフォーマットは D3DFMT_G16R16F です 546:描画用2チャンネル浮動少数点32ビット型カラーフォーマットは D3DFMT_G32R32F です 546:同時にレンダリングできるバッファの数:4 546:最大テクスチャサイズ 幅:4096 高さ:4096 546:テクスチャステージテンポラリレジスタ:使用可 547:減算合成のハードウェア対応:ネイティブ 547:ハードウェア頂点シェーダーバージョンコード:300 547:エミュレーション頂点シェーダーバージョンコード:エミュレーション無し 547:ピクセルシェーダーバージョンコード:300 571:バックバッファロック転送の時間:3829nsec 一時的な描画可能バッファを使用した転送の時間:2075nsec 572:バックバッファロックを使用しません 572:Zバッファを作成します.... 成功 588:プログラマブルシェーダーを使用します 659:フォントの初期化を行います 661:フォントの初期化は正常に終了しました 673:文字コードバッファの初期化を行います... 完了しました

Page: 1 |

Re: キーボードからの入力を取得できない? ( No.1 )
名前:いっち 日時:2012/07/24 20:52

おそらくキーボードの入力に DirectInput を使用しているためだと思います。 SetUseDirectInputFlag を意図的に TRUE にしているのであればその部分を削除して下さい。 (vista 以降の環境では SetUseDirectInputFlag はデフォルトで FALSE のはずです。 もしそういった部分が無ければ SetUseDirectInputFlag を FALSE に設定してみてください。) 以下は参考になりそうなスレッドです。 > ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=1368 > ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=1665 ちなみに代替の方法とはどのようなものでしょうか?
Re: キーボードからの入力を取得できない? ( No.2 )
名前:レンタッカ 日時:2012/07/25 16:40

代替の方法は.Netによるキーボードの入力取得ですねw SetUseDirectInputFlag( TRUE ) ; はまだ試していないので試してみますw
Re: キーボードからの入力を取得できない? ( No.3 )
名前:いっち 日時:2012/07/25 19:04

SetUseDirectInputFlag( TRUE ); を削除するか SetUseDirectInputFlag( FALSE ); にするかです。念のため。
Re: キーボードからの入力を取得できない? ( No.4 )
名前:レンタッカ 日時:2012/07/25 23:55

SetUseDirectInputFlag( TRUE );での動作は大丈夫でしたw  あと、SetUseDirectInputFlag( TRUE ); を削除したら、動かないですw  それで、SetUseDirectInputFlag( FALSE );にするとWin7だと動かないですねw  過去ログを読んだかぎりだと、SetUseDirectInputFlag( FALSE );の場合でも、 Vistaだと動く感じでしたので、 Win7でまたOSの仕様がかわったのかもしれませんねw SetUseDirectInputFlag( TRUE ); で強制的に DirectInputを使用してみようと思いますw  いっちさんありがとうございますw
Re: キーボードからの入力を取得できない? ( No.5 )
名前:いっち 日時:2012/07/26 19:30

すみません勘違いしていました。 キーボード入力にデフォルトでは DirectInput を使用しない vista 以降では、 ログに以下のような記述が普通は出力されないものと思い込んでいました。 > 169: キーボードデバイスの初期化... 初期化成功 ところで、根本的な問題として DirectInput を使用しないキーボード入力でも 通常は問題なく動作するはずなのですが、 事象の発生するアプリでは何か特殊なキーボード監視を行っているのでしょうか? (非アクティブ状態でのキーボード監視など)
Re: キーボードからの入力を取得できない? ( No.6 )
名前:レンタッカ 日時:2012/07/27 00:00

DXライブラリを初期化するときに、 DX.SetAlwaysRunFlag(DX.TRUE); になっていますねw 非アクティブ状態でのキーボードの取得になっていますねw

Page: 1 |