Что нового

Заменить окно "Подождите" (ожидание запуска) на другое окно

snakeru54

Новичок
Сообщения
2
Репутация
0
Здравствуйте.
Я - новичок. Осилил запуск программ с помощью autoit. в скриптах научился Send('[что_нибудь]') и т. д.
Подскажите, как можно реализовать следующую задачу:
скрыть окно ожидания (или заменить на другое окно) подключения к серверу. (Ну, это просто частный случай).
При запуске программы подключения к удалённому рабочему столу появляется окно "Подключение к... бла-бла-бла".
Возможно ли скрыть это окно или заменить на что-нибудь своё?
Скажем, "прогресс-бар", статический логотип или анимированную иконку?
И чтобы при запуске программы "моё" окно закрылось.

Не жду от вас кода.
Хотелось бы получить логический алгоритм для решения задачи.
Например, для анимированной иконки мне нужна обычная ГИФ-ка, да?

С уважением.
 
Автор
S

snakeru54

Новичок
Сообщения
2
Репутация
0
Alofa сказал(а):

Благодарю за ответ. Просто и ясно.
Но я столкнулся с другой проблемой. Не знаю, как её решить.

Код:
$sFileExe = '"специальная-супер-сложная-строка"'
Run($sFileExe)
WinWaitActive("Внимание")
Send("{TAB}")
Send("{ENTER}")
WinWaitActive("Ошибка")
Send("{ENTER}")

Код выполняется, всё прекрасно. Но раздражают окна с кнопками, с которыми совершаются действия.
Окно появляется на четверть секунды, получает "ENTER", закрывается, взамен появляется новое окно...
Возможно ли, чтобы пользователю не показывались окна, над которыми совершаются действия?
Вот такой код...
Код:
WinWaitActive("Внимание")
WinSetState("Внимание", "", @SW_HIDE)

...не работает. То ли я его неправильно написал, то ли смысла во второй строке нету.
Получается, мы сначала ждём появления окна, потом его скрываем, потом жмём ему на кнопки.

Как это безобразие спрятать от пользователя?
 

Skif_off

Знающий
Сообщения
173
Репутация
12
snakeru54
Если не изменяет память, Send() не работает со скрытыми окнами. Попробуйте сначала переместить их за границы экрана с помощью функции WinMove(), а потом шлите нажатия кнопок. Что-то типа
Код:
$sFileExe = '"специальная-супер-сложная-строка"'
Run($sFileExe)
$hWnd = WinWaitActive("Внимание")
WinMove($hWnd, "", @DesktopWidth + 20, Default)
Send("{TAB}")
Send("{ENTER}")
$hWnd = WinWaitActive("Ошибка")
WinMove($hWnd, "", @DesktopWidth + 20, Default)
Send("{ENTER}")
 
A

Alofa

Гость
snakeru54 прочитайте всю тему Скрыть MsgBox и нажать на нем кнопку, будет полезно.


Добавлено:
Сообщение автоматически объединено:

Skif_off сказал(а):
... переместить их за границы экрана с помощью функции WinMove()...
Все равно схема-то такая же: сначала ждем окно, а после того как оно прорисуется - WinMove().
 

Skif_off

Знающий
Сообщения
173
Репутация
12
Alofa
Не совсем такая же схема: скрыв окно, лишаемся возможности использовать Send(), а ControlSend() в таком случае помогает не всегда, сам сталкивался. С Opt("WinWaitDelay", N) задержки можно минимизировать (сам обычно сразу ставлю 100).

К слову, CreateDesktopEx только для WinVista+.
 
Верх