• ベストアンサー

DirectInputへキー入力情報を送る

こんにちは、現在ゲームクリアを簡単にするツールを開発しているのですが、DirectInputでキーの状態を取得しているプログラムにWin32のキー入力メッセージを送っても反応しないということがわかりました。 DirectInputでキーなどの情報を取得しているプログラムへ、キー入力やマウス入力を送るにはどうしたらいいのでしょう。 C,C++で教えていただけるとうれしいです。 キーワードでもかまいませんので、何か知っていることがあったらアドバイスお願いしますm(_ _)m

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

  • ベストアンサー
  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.1

ざっとDirectInputのドキュメントを見た感じでは、DirectInputのインターフェース(3つ)を自前のインターフェースとそっくり置き換えるのがいちばん楽そうです。 必要なスキルは (1) DirectInputの3つあるインターフェースの使い方を熟知していること (2) COMのインターフェースが作成できること (3) 既存のCOMインターフェースをそっくり置き換える方法を知っていること の3つです。 (1)はDirectInputを使用したアプリケーションが特に苦労せずに作れる、という程度で良いでしょう。DirectInputの機能の全部を知っていなくても多分大丈夫。 (2)はウィザードがかなりの部分をやってくれますが、COM自体を知らなければちょっと苦労するかもしれません。 (3)は・・・そのものずばりの方法は簡単には見つからないかもしれません。その方法そのものは私も調べていませんが、できなくはないはずです。たぶん、このやり方を見つけるのが中ではいちばん大変でしょう。

genki140
質問者

お礼

お返事ありがとうございます。 いろいろ調べてみたのですがやっぱり(3)が大変みたいです。 はっきり言ってさっぱりです^^; (2)については少しわかる程度なので、COMの内部的なことはさっぱりです(>_<) がんばって、もっといろいろ調べてみます。 また何かわかったら教えていただけると助かります。 とにかくがんばってみます。ありがとうございました。

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

関連するQ&A

  • DirectInputのキーボードがキーロガーに?

    現在 フレームを単位としてキーボードの状態変化をリプレイデータとして保存出来る DirectXを使用したゲームを作っているのですが 使用中のセキュリティソフトが DirectInputでGUID_SysKeyboardを使ってGetDeviceStateでキーボードの入力情報を操作しようとすると 「キーロガーの疑いがあります」と言ってきます。 現在のところはデフォルト動作(?)で許可はしているようですが WindowsAPIのウインドウメッセージでキーボードからの入力情報を操作しながら 同時にジョイパッドからの入力情報はDirectInput経由で操作 としていた時は出てなかった気がするので たぶんDirectInputでキーボードの入力情報をいじろうとした場合に出るのでは? と思うのですが SetCooperativeLevelで指定しているフラグは DISCL_FOREGROUND|DISCL_NONEXCLUSIVE  ですが、これで問題ないと考えていますし、害のある動作をするつもりは毛頭なく また、WindowsAPIからジョイパッドの操作情報を制御する、という事はまだ試していませんが、聞いた話では2つまでしか受け取れない(?)ようで、一つのPCで少なくとも4人ぐらいまでは同時プレイできるゲームにしたいので それがあってるなら、出来ればDirectInputがよく そして、ジョイパッドとキーボードで使うAPIの系統を変えるよりかは、DirectInputならDirectInputで統一、としておく方がよりシンプルで直感的なコードになりやすいと思うので、出来ればそうしたいのですが セキュリティソフトを全くいじらずに これを防ぐ方法はないでしょうか? あるいは、それを望む場合は (これが「結構細かい話でこの場合一般的に言って、ということはない」というのであれば) ・たぶん、キーボードについてはDirectInputを使ったらその時点で無理ではないか ・よって、その表示を防ぐにはキーボードについてはWindowsAPIサイドから、普通のウインドウメッセージを使ってやるべき ということでしょうか?

  • DirectInputの DIK_???

    DirectInputを使ったキー入力の取得をしているのですが、 キーボードの英数字の横にある記号の中に 調べても解らないものがあります。 1番目の段 1234567890-^\  の中の 『^(~)』 と 『\(|)』 2番目の段 QWERTYUIOP@[  の中の 『@(`)』 4番目の段 ZXCVBNM,./\  の中の 『\(_)』 これらの文字は DIK_??? の何に当たるのでしょうか? わかる方いらっしゃいましたら、教えて頂けると幸いです。 また上記の4段のキーの中に、 『Ctrl・Shift・Alt・Windowsキーは右側キーが無い場合が有る』 みたいな、キーボードによって無かったり、 はたまた機能が違うというものが有ったりしますでしょうか? そちらも解る方が居ましたら、教えて頂けると助かります。 よろしくお願い致します。 orz

  • DirectX キーが入力されるまで一時停止

    下記の処理で0ボタンを押すとループ処理を抜ける処理をしたいのです。 その際、キーが押されて無い場合キー入力取得の所で停止させ、押された瞬間動き始めるプログラムを組みたいのですが、出来るのでしょうか? const BYTE *keys; for( int i = 0; i == 0; i ) { // キー入力の取得 keys = iGetKey(); // 0キーはキャンセル if( keys['0'] & 0x80 ) { break; } } 開発環境 VisualStudio2008 C++ SP1 Platform SDK(多分最新) DirectX SDK(多分最新)

  • DirectInput

    VisualStudio2008で、 http://spiralray.rakusei.info/help/directx_practice.zip このソースコードをビルドすると、以下のようなエラーが出ます 1>------ ビルド開始: プロジェクト: CreateDevice, 構成: Release Win32 ------ 1>コンパイルしています... 1>main.cpp 1>D:\Program Files\Microsoft DirectX SDK (March 2008)\Include\dinput.h: DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800 1>リンクしています... 1>main.obj : error LNK2001: 外部シンボル "_c_dfDIKeyboard" は未解決です。 1>main.obj : error LNK2001: 外部シンボル "_c_dfDIJoystick2" は未解決です。 1>main.obj : error LNK2019: 未解決の外部シンボル _DirectInput8Create@20 が関数 "long __cdecl InitDirectInput(struct HWND__ *,struct HINSTANCE__ *)" (?InitDirectInput@@YAJPAUHWND__@@PAUHINSTANCE__@@@Z) で参照されました。 1>Release/CreateDevice.exe : fatal error LNK1120: 外部参照 3 が未解決です。 1>ビルドログは "file://d:\Documents\Visual Studio 2008\Projects\DirectX_Practice\Release\BuildLog.htm" に保存されました。 1>CreateDevice - エラー 4、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== DirectInputを導入しようとした矢先にコレで、何が何だかわからないのですが、どうすればいいのでしょうか? どなたかお願いします。

  • 文字入力中にAltキーを押してしまったら入力できなくなる

    Win98、ブラウザはOperaです。 ネットで文字入力をしていた時、誤ってAltキーを押してしまったら、画面左上の「ファイル」というところがいきなり選択されて、あとはなにを押しても文字入力できなくなってしまいました。(カーソルの表示がおかしくなっていて、スペースやデリートキーにも全く反応しなくなります) マウスでのページ移動などの操作はできるのですが、文字の切り取りやコピーもできなくなります。 Altキーをもう一度押したりしても全然ダメです。 ブラウザを閉じて再起動すれば直るようなのですが、よく誤って押してしまうのでそのたびに再起動しなければならず困っています。 どなたかアドバイスをどうかよろしくお願いします。

  • アクティブでない時にキー入力を拾うには?

    例えば、 最小化されている時にF11が押されたら元のサイズに戻す みたいなことをやりたいときは、どこでどうやってキー入力メッセージを拾えばいいのでしょうか。 どなたかご存じの方がいらっしゃいましたら教えて下さい。お願いします。 ちなみに開発環境は VC6 です。

  • キーの反応が鈍くて困っています。

    Win98を使っているのですが、メールやワード、エクセルなどを 使っている時に、キーの反応がものすごい鈍い時があって困っています。 何回押しても反応しなかったり、始めの一回目のキーが反応しなかったりします。(例えば「さくら」と入力する時に始めの「s」が反応しないで「あくら」になってしまう) マウスは普通に使えて、メモリー使用率は40%くらいです。 マウスとキーボードのコネクターを入れ替えても直りませんでした。 買った当初も今ほどはひどくなかったですけど、同じようなことが起きていました。 あとノートンのウイルスソフトの一番新しいものが入っています。 はじめからこんな感じなので、再インストールで直るものなのか・・・ よろしくお願いいたします。

  • DirectInput ゲームパッド

    こんにちは DirevtInputにてゲームパッドのボタン取得をやっています。 ゲームパッドはSUNWA SUPPLYのコントローラを繋いでいます。 各ボタンの取得は出来ているのですが、 ハードのアナログボタンを起動していない状態でも スティックの入力まで取ってしまって、右スティックを傾けると 1,2,3,4ボタンが反応してしまいます。 スティックを完全に使わないようにするにはどうすればよろしいのでしょうか? よろしくお願いします。

  • Javaで詳細なキー入力情報を受け取る方法を探しています。

    Javaで詳細なキー入力情報を受け取る方法を探しています。 現在友人とふたりでRPGゲームを制作しているのですが、入力処理で必要な機能が出てきました。キーボードからの入力です。 いま、私たちは複数の機能を求めています。 ・キーが押されている間常に真になるメソッド。 ・キーが押されている間、リピートのタイミングで真になるメソッド。 ・キーが押された瞬間だけ真になるメソッド。 ・キーボード入力は静的クラスRPG_Keyboardのメソッドを呼び出すことで取得できる。 ・キーボード入力はフレームごとにリフレッシュする。その際はRPG_Keyboardの更新用メソッドを呼び出す 手がかりだけでも良いので教えて頂ければありがたいです。

  • ログイン時にキー入力できない・・・助けてください・・・

    win2kにログインするときにキー入力ができなくて困っています・・・ BIOSが立ち上がってメモリチェック等の画面でもキー入力ができず BIOSの設定とかもできません。。。 どうしてキー入力ができなくなってしまったのか 全く見当がつかなくて質問させて頂きました。 因みに使っているキーボードは ロジクール製のコードレスマウスです。 あと、コレガのCPU切り替え器も使用しています。 キー入力ができなくなるまでは 特におかしな操作はしてないつもりです。 こんなことになったのは初めてなので。。。 あと、CPU切り替え器を使用せず キーボードをPS2へ直接挿してみましたが それでも状況はかわらず。。。 マウスはCPU切り替え器を通しても使用できるので CPU切り替え器の故障ではなさそうです。 今ではPCがただの邪魔な箱になってしまっていて なんだか悲しいです・・・ どなたか対処方法をご存じの方、教えてください! よろしくお願いします!! OS: windows 2000 professional SP2

このQ&Aのポイント
  • 戸塚ヨットスクールは何故暴力・苛めを奨励しているのか?
  • 戸塚校長が表明した“本能を鍛える”教育目的とは?
  • 戸塚ヨットスクールの教育方針は家庭内暴力を甘やかすものなのか?
回答を見る

専門家に質問してみよう