11

キーを物理的に押すことなく、可能な限り最大レベルでキーストロークをシミュレートできる言語またはライブラリを探しています。

(キーストロークのレベルの私の特定の尺度は、コンピューターが既にキーリスナー (MouseKeys や StickyKeys など) を実行しているときに、物理的なキープレスと同じ出力を生成するかどうかです)。

キーストローク エミュレーションの多くの方法を試しました。Java AWT ライブラリ、Java win32api、python win32com sendKeys、python ctypes Key press、および python と Java 用のその他の多くのライブラリがありますが、実際のハードウェアに十分近いレベルでキーストロークをシミュレートするものはありません。
(Windows マウス キーがアクティブな場合、コロン、セミコロン、テンキーの ADD キーのキー ストロークを送信すると、それらの文字が生成されます。物理的に押すと、マウス キーのクリックが実行されます)

そのような方法では、ストロークを OS だけに渡すのではなく、アプリケーションに直接送信する必要があると思います。

私は、これらの高レベル (OS コードより上) の言語用のライブラリが適切なものを生成しないという考えに至りました。ある種の BIOS プログラミングに屈する必要があるのではないかと心配しています。

この件に関して有益な情報を持っている人はいますか?
低レベル言語でキー押下をエミュレートするにはどうすればよいですか?
ハードウェア固有のソリューション (ある種の富士通ハードウェア API) を探す必要がありますか?

ハードウェアのそばに座ってキーを押すだけのロボットをプログラムする方が簡単だと思います。

ありがとう!

4

4 に答える 4

5

2番目の解決策は、非常に複雑で、大量の仮想化、悪魔的、完全にテストされていませんが、datasnipプログラムが実際にキーボードバッファーに書き込まない限り、理論的には機能するはずですが、代わりに、あなたが試みているようにキーストロークをシミュレートします。それはひどいことであり、私は彼らの製品の説明が非常に誤解を招くと思うでしょう。

あなたは必要になるでしょう:

そして、comポートへの書き込みに関する知識があります...これは、ここに優れたpythonモジュールがあるようです:http://pyserial.sourceforge.net/

まず、選択したCOMポートに必要に応じて文字や16進コードなどを送信する小さなプログラムを作成します。次に、com0comを使用して仮想COMポートペアを作成します。この時点で、作成したCOMポートの1つにプログラムを接続し、もう一方にデータスニップを接続して、通信の両側で同じボーレート、パリティビットとストップビット、およびデータ長パラメータを使用していることを確認します。

この時点で、OSが認識できる限り、ハードウェアと同じキーボードが必要です。

于 2012-07-22T08:08:50.223 に答える
2

私はこのソリューションを使用しましたhttp://oblita.com/interception.html 私のニーズを完全に満たしています (直接入力ゲームにキーストロークを送信します)

于 2014-09-27T19:47:29.513 に答える
0

MouseKeys に対してテストするために Windows ボックスを使用していないため、動作する保証はありませんが、AutoHotkey を試しましたか?

于 2012-07-22T06:05:38.093 に答える
0

MSDN 言語を使用できますか? それらはかなりシンプルで、十分に文書化されています (通常、ナビゲーションには、msdn Web サイトよりも Google 検索の方が優れています)。

ハードウェアに十分近いレベルでキーストロークをシミュレートしているかどうかはわかりませんが、他のプログラムが認識できるキーストローク イベントを生成できるようです。これが最終的な目標です。

「Send」メソッドと「SendWait」メソッドが重要なようです。

ゴッドスピード。

于 2012-07-22T05:43:55.417 に答える