1
  • キーボード入力を変更するWindowsプログラムを作成するための小さなプロジェクト(私のOSコースの一部として)が与えられました。これにより、入力された小文字を大文字に変換します(caps-lockを使用せずに)。したがって、キーボードで入力すると、入力内容が大文字に変換されて表示されます。

    • geninterrupt()を呼び出し、変数_AH、_ALを使用して、Turbo Cを使用してこれを非常に簡単に実行しました。次を使用して、文字を読み取る必要がありました。

      _AH = 0x07; //エコーなしで文字を読み取るgeninterrupt(0x21); //割り込みを行います

    • 次に、それを大文字に変換するには、次を使用して5番目のビットをマスクする必要があります。

      _AL = _AL&0xDF; //入力した文字を11011111でマスクします

    • 次に、任意の出力ルーチンを使用して文字を表示します。

現在、このソリューションは古いCDOSコンパイラでのみ機能します。しかし、私たちがやろうとしているのは、WindowsXPで最新のC/ C ++コンパイラを使用して、これに近いまたは同様のソリューションを作成することです。私が最初に考えたのは、キーボードISRを変更して、入力された文字の5番目のビットをマスクして大文字にすることです。しかし、私はこれを正確に行う方法がわかりません。次に、Win32コンソールプログラムを作成して、同じソリューションを実行するか(ただし、役に立たない)、Windows互換のソリューションを作成したかったのですが、使用する関数がわかりません。第三に、自分のニーズに合わせてISRを直接変更するWindowsプログラムを作成しようと思いました。そして私はまだこれを行う方法を探しています!

どうぞよろしくお願いします。これについて私を助けていただければ幸いです。

前もって感謝します !

(私はmingw-GCCコンパイラを搭載したIntelX86でWindowsXPを使用しています。)

4

2 に答える 2

2

Ring 0デバイスドライバーを作成しない限り、キーボードISRにアクセスすることはできません。WindowsHookAPIを調査することをお勧めします。これらは同じことを達成します。

ここから開始:http://msdn.microsoft.com/en-us/library/ms644990%28v=VS.85%29.aspx

于 2010-05-11T19:58:32.703 に答える
1

どれくらい早く卒業する予定ですか?時間があるといいのですが、Windowsはもうこのようには機能しません。WDKを使用してキーボードフィルタードライバーを作成する必要があります。src \ input\kbfiltrディレクトリにサンプル実装が付属しています。使い慣れたツールを使用することはできません。WDKにはコンパイラとカーネルデバッガが含まれています。無料でご利用いただけます。開始するには、こちらにアクセスしてください。

于 2010-05-11T20:06:20.240 に答える