Wscript.sleep ухудшит ситуацию. Ты не хочешь спать.
Есть правила. Ваша программа ДОЛЖНА придерживаться одного из этих правил, чтобы иметь возможность устанавливать переднее окно.
С https://docs.microsoft.com/en-us/windows/desktop/api/winuser/nf-winuser-setforegroundwindow
Система ограничивает, какие процессы могут устанавливать окно переднего плана. Процесс может установить приоритетное окно, только если выполняется одно из следующих условий:
• Процесс является приоритетным процессом.
• Процесс был запущен процессом переднего плана.
• Процесс получил последнее входное событие.
• Процесс переднего плана отсутствует.
• Процесс отлаживается.
• Процесс переднего плана не является современным приложением или началом
Экран.
• Передний план не заблокирован (см. LockSetForegroundWindow).
• Истекло время ожидания блокировки переднего плана (см.
SPI_GETFOREGROUNDLOCKTIMEOUT в SystemParametersInfo).
• Нет активных меню.
Приложение не может заставить окно на передний план, пока пользователь
работает с другим окном. Вместо этого Windows мигает панель задач
кнопка окна для уведомления пользователя.
Это означает, что у вас есть две секунды (FOREGROUNDLOCKTIMEOUT) с момента, когда ваш скрипт начинает устанавливать другое окно, если ваш скрипт не имеет пользовательского интерфейса (так как он не может быть окном переднего плана). Окно сообщения как первое, что вы сделаете, будет соответствовать (пока что-то еще не произойдет). Также в Wscript есть окно сообщения, время ожидания которого истекло - WshShell.Popup
.
Это делается для того, чтобы предотвратить медленный запуск программ, когда пользователю стало скучно и теперь он работает в другой программе, и затем украсть фокус.
Превентивный комментарий Обычно люди хотят спорить со мной об этом. Пожаловаться на Microsoft не мне. И вы не можете спорить с правилами. Вы можете просто соблюдать их.