Я пытаюсь найти надежный способ активировать / установить фокус на окно внешнего приложения, используя C #. В настоящее время я пытаюсь добиться этого с помощью следующих вызовов Windows API:
SetActiveWindow(handle);
SwitchToThisWindow(handle, true);
Ранее я также выполнял ShowWindow(handle, SW_SHOWMAXIMIZED);
перед двумя другими, но удалил его, потому что это вызывало странное поведение.
Проблема с моей текущей реализацией заключается в том, что иногда фокус не будет установлен правильно. Окно станет видимым, но его верхняя часть будет отображаться серым, как если бы оно не было в фокусе.
Есть ли способ сделать это надежно, который работает 100% времени, или это противоречивое поведение - побочный эффект, от которого я не могу уйти? Пожалуйста, дайте мне знать, если у вас есть предложения или реализации, которые всегда работают.