2011-12-16 3 views
2

私は、ユーザーからの入力を解釈するためにwin32 APIとDirectX APIを使用しましたが、元のユーザー入力と一致する入力を生成する方法はあまりありませんでした。あるアプリケーションから別のアプリケーションへのマウス&キーボード入力の生成

私の目標は、バックグラウンド、最小化、またはクイックランチエリアで透過的に実行されるプログラムを作成し、サードパーティのフルスクリーンアプリケーション用のキーボード入力とマウス入力を人為的に移植することです。

私は、どのウィンドウにフォーカスがあるかを検証するためのいくつかのコマンドと、アプリケーションのプロセス名またはIDをチェックするコードサンプルを見つけましたが、正当な入力をシミュレートするためにdirectxなどの入力を生成しません。

私はそれが自動テストを容易にするのに役立つように、実際の入力にできるだけ近いところに登録したいと思います。

この質問があまりにも一般的であるか、「調査中」である場合、私はこの点についてどこから始めるべきかについてはあまりよく分かりません。

これらの言語に精通しているため、プログラムはC++またはC#のいずれかになります。

+0

がハッキングフォーラムに見て - これじゃない。 – mozillanerd

+0

すみません。私はあなたがこれによって何を意味するか分からない。なぜ "Hacking Forums"なのですか?彼らが情報を持っていれば、それは良いことだと思いますが、あなたは念頭に置いておきますか?またはリンク?または何か他に見える? –

答えて

0

私はこの行っている:グローバルkeyboard_hockとして機能するように、そして私がメモリに直接、第二のアプリに一致するパターンを送った

1つのアプリ - 私はあなたがダウンロードできるAll-in-one code framework例から例を使用し、ロックをCSFileMappingServer & CSFileMappingClient(get/set)を2つの個別プロセスからメモリに追加します。そして、グローバルなキーボードイベントに

をキャッチするCSWindowsHookプロジェクトは、私がlitle速かった、しかし、あなたが使用できる仮想キーボード送信するには:

BOOL 
WINAPI 
PostMessageA(
__in_opt HWND hWnd, 
__in UINT Msg, 
__in WPARAM wParam, 
__in LPARAM lParam); 

をしかし、あなたはに送信winowが焦点にしておく必要があり、あなたが使用することができます。

BOOL 
WINAPI 
BringWindowToTop(
__in HWND hWnd); 

、実行中のアプリにHWINDを得るために、あなたが使用することができます。

HWND 
WINAPI 
FindWindowA(
__in_opt LPCSTR lpClassName, 
__in_opt LPCSTR lpWindowName); 
+0

問題のアプリケーションがDirectXを介してDirectInputを使用する場合、PostMessageを介して与えられる入力は通常の入力として認識されるか、DirectInputによって破棄されますか? また、マウス入力の生成にもPostMessageを使用できますか? いずれの方法でも情報をありがとう、私は今晩テストします。 :) –

+0

私はすべての詳細を知っていませんが、私はそれを理解するように、PostMessageAはキーボード仮想を作るために使用されています(そして、私はそれを試して、それが動作します)が、マウスイベントをキャプチャし、それはあなたの受取人のアプリから、私があなたに与えた例で。 – Niklas

関連する問題