1

WM_ACTIVATEB が最上位のアプリケーションになるのを防ぐために、アプリケーション B のウィンドウへのメッセージをインターセプトするアプリケーション A を作成する必要があります。

DLL インジェクションなしでこれを行うことは可能ですか(そのメッセージにフックを追加し、一連の WinAPI 呼び出しでそれを処理して「無力化」します)?

4

1 に答える 1

2

これがあなたが求めているものだと思います:

LockSetForegroundWindow

http://msdn.microsoft.com/en-us/library/windows/desktop/ms633532(v=vs.85).aspx

解説 ユーザーが Alt キーを押すか、システム自体がフォアグラウンド ウィンドウを変更する何らかのアクション (バックグラウンド ウィンドウをクリックするなど) を実行すると、システムは SetForegroundWindow の呼び出しを自動的に有効にします。この関数は、アプリケーションが他のアプリケーションがユーザーとの対話を中断する可能性のあるフォアグラウンドの変更を行うのを防止できるように提供されています。

ロックを解除することを忘れないでください:)

編集:

ここで説明されているように SetWinEventHook を試してください。

アクティブ ウィンドウに変更された Windows システム イベントはありますか?

次に、不要なウィンドウが前面に来ると、それをバックグラウンドに送信できます。

于 2013-05-17T08:30:44.570 に答える