電子書籍の厳選無料作品が豊富!

1つのキーを押すと複数のキーを押したことにするソフトを作ろうと思いました。

そこで以下の方法でキーイベントを発生させて試してみました。
・keybd_eventで処理。
・PostMessageで処理。
・SendInputで処理。

しかしメモ帳などではちゃんと機能するのですが、ゲームで機能してくれないものがあります。
JoyToKeyを使うときちんとキーボードが押された事になっているので、何か他の方法があるのだろうかと思い質問させていただきました。
よろしくお願いします。

A 回答 (2件)

DirectX(DirectInput)を使用してキーボード入力を取得しているゲームの場合、イベントを割り込ませる方法ではキーボード入力を改変することができません。



DirectInputのインターフェース自体を改変するか、あるいはドライバレベルでキーボード入力を改変することになるのではないかと思います。(この点については自信なし。)
JoyToKeyのWebサイトを見たところ、JoyToKey自体はDirectInputに部分的に対応しているとありました。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
私も一度DirectInputで取得しているから無理なんだろうと諦めたのですが、JoyToKeyでキーイベントを送れたので質問させていただきました。

お礼日時:2005/07/17 02:54

そのものの回答ではありませんが。



いくつか考えてみました。
・DirectInputの協調モードで入力を受け取り、アクティブウィンドウに送りつける
・システムフックを使ってキー入力を横取りし、アクティブウィンドウに送りつける

確か、マウスのフックを有効にするには、DLLを作る必要があるとかで、
挫折した経験があります。(キーボードも同じ様な気がします)
WindowsAPIを眺めていると、別にDLLを作らないでも良いような気はしていたのですが・・・

DirectInputは、ゲームなどでは占有モードで使用するソフトもありますので、
起動タイミングによってはインタフェイスの取得(だったかな?)に失敗したり、
ソフト側で無効になったりするかもしれません。
もっとも、DirectX5~7辺りの話なので、今は違うのかもしれませんが・・・。

簡単ですが参考になれば(・・・なるのかな(^^;)
    • good
    • 0

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