Чтобы предотвратить кражу фокуса (или, по крайней мере, усложнить случайную кражу фокуса), Windows устанавливает некоторые препятствия на пути одного процесса, в результате чего окно другого процесса становится верхом.
Проверьте MSDN для SetForegroundWindow (особенно в разделе «Замечания») и AllowSetForegroundWindow .
Вы должны либо отправить процессу сообщение о необходимости восстановления собственного окна, либо этот процесс должен явно разрешить этому процессу сделать это.