0

ウィンドウが非アクティブ化されないようにする方法はありますか? ウィンドウは私のものとは異なるプロセスにあります。

これは Windows 用です。

4

2 に答える 2

4

これを行うのは危険ですが、解決策は WM_ACTIVATE メッセージを処理し、wParam が WA_INACTIVE かどうかを確認することです。これは、ウィンドウが非アクティブ化されたことを意味します。これが発生した場合は、再アクティブ化できます。

別のプロセスのウィンドウに対してこれを行うには、 でメッセージ フックをインストールする必要がありますSetWindowsHookEx

ただし、別のアプリケーションが同じことを行い、相互にアクティブ化/非アクティブ化の無限ループに陥る可能性があります。

これは、パーソナル コンピューターで実行することを意図したソフトウェアによって実行されるべきではないことでもあります。

于 2011-02-28T13:31:02.887 に答える
0

WM_ACTIVATEAPP次のようにトラップできます。

protected override void WndProc(ref Message m) {
  // Trap WM_ACTIVATEAPP
  if ((m.Msg == 0x1c) && (m.WParam == IntPtr.Zero))
  {
     // If WM_ACTIVATEAPP and WParam is deactivated, return
     return;
  }
  base.WndProc(ref m);
}
于 2011-02-28T13:34:48.267 に答える