他プロセスからのキー入力を許可していないプロセスのウィンドウに強引にメッセージを送るには?

解決


廃棄物  2006-10-24 16:26:18  No: 63404

他プロセスからのキー入力を許可していないプロセスのウィンドウにどうにかして WM_KEYDOWN や UP のメッセージを送りつけて入力させたいのですが、うまくいきません。 SetForegroundWindow を行ってから、SendInput と keybd_event による入力もできませんでした(メモ帳ではできたのですが)。
dll によるフックやその他の手法で強引に入力させる事は可能でしょうか? 入力を不許可にしている部分のコードをバイナリで書き換える方法には頼りたくありません。 手がかりでも良いので、何か方法があればご教授願います。

VC++ 6.0 
WinXP SP2


PATIO  2006-10-25 00:41:34  No: 63405

そもそもそのプロセスがどういうプログラムかも分からないので
的外れになるかもしれませんけれど、
受け取ってほしいプロセス側にそれらのイベントを受け取る為の口が無いので
あれば、事実上送り込む事はできないと思いますがいかがでしょう?
簡単な例で言うなら、printfでひたすらHello Worldと表示するしか能がない
プロセスに対してキーコードやイベントを送りつけて反応するでしょうか?
受け取り側に処理するためのコードがないのであれば、外側でどんなに頑張ったところで無理と言うものです。
今、書き込まれている範囲の情報ではこの程度のレスしかできないと思いますよ。


廃棄物  2006-10-25 01:30:34  No: 63406

>>PATIO さん
情報不足で申し訳ありません。
メモ帳の場合、

SetForegroundWindow(hMemoWnd);
Sleep(100);
// SendInput or keybd_event によるキー入力

というようなコードで、指定した仮想キーコードのキーがエディットボックスに表示されるのですが、あるプログラムでは上記のようなコードではキー入力を送信する事ができないのです。 そのプログラムは、通常 A キーを押すと、チャットする為のウィンドウに A と表示されるのですが、上記のコードで外部プログラムから A と入力させようとキー入力を送っても無反応になります。 恐らく、キーフックか何か特別な処理で外部からの入力を受け付けないようになっているんでしょうが、それをどうにかして強引にキー入力を送りつけて A と表示させることは可能でしょうか? そのプログラム自体を書き換える方法以外で何か手法があれば、ご教授願います。


tetrapod  2006-10-25 01:54:54  No: 63407

なんか悪用のために小細工をしたいとしか読めないなぁ


YuO  2006-10-25 02:31:03  No: 63408

同感です>tetrapodさん。
http://madia.world.coocan.jp/cgi-bin/Vcbbs/wwwlng.cgi?print+200610/06100049.txt
を回答していて,やばい臭いがプンプンと……。
# IPを見る限り,Wr25さんと廃棄物さんは同じ所にいるように見えます。


廃棄物  2006-10-25 03:29:20  No: 63409

>>tetrapod さん
>>YuO さん
プログラムで、外部からキーイベント等のメッセージを送ることで制御されないようなセキュリティを実装する必要があるかもしれないので参考にしようと質問させて頂きました。 皆さんによれば、どうやらそれは可能ではないみたいですね…。 

皆さん、情報不足の質問でも答えて下さって、有難う御座いました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加