Как я могу предотвратить деактивацию окна? - PullRequest
0 голосов
/ 28 февраля 2011

Есть ли способ предотвратить деактивацию окна? Окно находится в другом процессе, чем мое.

Это для Windows.

Ответы [ 2 ]

3 голосов
/ 28 февраля 2011

Это может быть опасно, но решение - обработать сообщение WM_ACTIVATE и проверить, является ли wParam WA_INACTIVE.Это означает, что окно было деактивировано.Когда это происходит, вы можете просто активировать его.

Чтобы сделать это для окна другого процесса, вам нужно будет установить перехват сообщений с помощью SetWindowsHookEx.

Однако это возможночто другое приложение может делать то же самое, помещая друг друга в бесконечный цикл активации / деактивации.

Это также то, что никогда не должно выполняться программным обеспечением, предназначенным для работы на персональном компьютере.

0 голосов
/ 28 февраля 2011

Вы можете поймать 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...