• ベストアンサー

ゲームパッドのボタンの押下をコードで実現

キーボードの押下をコードで実現する方法として、sendkeys関数がありますが、ゲームパッドのボタンの押下をコードで実現するにはどのようにしたらいいのでしょうか? というのも、ゲームパッドにしか対応していないゲームをキーボード対応にしたいのですが、そのようなことはできるのでしょうか? キーボードにしか対応していないゲームをゲームパッド対応にするためのソフトならフリーソフトでたくさん出ているのですが、その逆のことをするためのソフトが見つからず困っています。 よろしくお願い致します。

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

  • ベストアンサー
回答No.1

Wizard_Zeroと申します。 不可能なことではないとは思いますが、実現するのはかなり難しいと思います。 まず、他のウィンドウで押されたキーを拾うには、グローバルフックを仕掛けなければならないので、この時点でVBだけでは出来ません。また、ゲームパッドの入力は、DirectInputを使うことが多いと思うのですが、これをシミュレートするのも難しいでしょう。(おそらく、デバイスドライバを直接操作することになるかと...) 逆に、DirectInputはディアクティブウィンドウ(=フォーカスを失っている状態)でも入力を受け付けることが出来、さらにsendkeys関数で簡単にシミュレートすることが出来ます。(こっちはVBでも簡単に作れる) どんなに探してもソフトがない、ということは「不可能」かそれに近いことだと、私は割り切ってます。

noname#208339
質問者

お礼

どうも有り難う御座いました。かなり難しそうなので今回はあきらめようかと思います。ありがとうございました。

その他の回答 (2)

回答No.3

グローバルフック関数 SetWindowsHookEx VBでのサンプルの履歴があったので張っておきます。 http://okweb.jp/kotaeru.php3?q=199683 このサンプルは、自分のアプリのスレッドIDを渡して、自アプリのキーボードイベントだけに反応しているので、グローバルフックじゃなくてもよさそうに見えますが、コマンドボタンのイベントより先に取得するために、グローバルフックを利用しているものだと思います。 スレッドIDにNullを(アドレス=0)を渡してあげたら、おそらくWindowsの全てのキーボードイベントを拾うと思います。 VB6で作成した自分のアプリは自宅のどこかに行方不明で、使用方法もすっかり忘れております。 さらに職場には参考のURLを実験する環境も無いので、すみませんが推測です。

noname#208339
質問者

お礼

どうも有り難う御座いました。かなり難しそうなので今回はあきらめようかと思います。ありがとうございました。

回答No.2

まず、#1さんの書き込みを見て率直な感想 「な~るほど、DirectInputか~」 (1)キーボード対応をゲームパッドで実現   DirectInputをキーイベント化 (2)ゲームパッド対応をキーボードで実現   キーイベントをDirectInput化 非常に納得です。 (1)ができるなら(2)も出来そうですね >まず、他のウィンドウで押されたキーを拾うには、グローバルフックを仕掛けなければならないので、この時点でVBだけでは出来ません。 できますよー。やったことあります。 オリジナルでランチャをVBで作ったとき、デスクトップイベントを拾うために仕込みました。 でも >どんなに探してもソフトがない、ということは「不可能」かそれに近いこと 全く同感です。 こっからは私の推測です。 ゲームポートを認識しているんじゃないかな? デーモンツールみたいな仮想CD-ROMや、Office2003/Acrobatのような仮想プリンタみたいに、仮想ゲームポートを発生させ認識させ、そこから発生させるような仕組みならできるのかなと感じました。 以前にフリーの仮想プリンタソフト(現在はシェア)を利用していたのですが、その作者のコメントで 「ドライバに関する情報はほとんど公開されておらず、作成にはデバッグの日々でした」 とありました。 あくまで推測ですが、これと同類かな? どこかでゲームポートの情報が公開されていたら、是非実験してみたいですねー もし読み通りだったら、先駆者となって、一儲けできるかもー

noname#208339
質問者

お礼

どうも有り難う御座いました。かなり難しそうなので今回はあきらめようかと思います。ありがとうございました。

関連するQ&A