помощью кода:
Run('"' revitPath '" "' projectPath '"')
Как мне запущенную программу сразу же взять в фокус?
Дело в том, что скрипт запускаю через Планировщик заданий, а мне почему-то не получается взять фокус при таком способе запуска. Вот с помощью этого кода пытался взять в фокус, но он не работает:
if WinWait("ahk_id " WinExist("ahk_exe Revit.exe"), , 360000) ; проверяем, существует ли окно в течение часа, или 3600 секунд
{
active_id := WinGetID("ahk_exe Revit.exe")
WinActivate "ahk_id " active_id
; производим манипуляции со всплывающими программами
}
ExitApp
Проблема еще в том, что ahk_class главного окна отличается от процесса к процессу, что затрудняет более точную фокусировку на нужное окно... Как правильно это делать?
Попробуй Добрый день! Для того чтобы корректно взять в фокус запущенное приложение, можно использовать AutoHotkey (AHK). Вот пример скрипта AHK, который запускает программу и берет её окно в фокус. В вашем случае мы будем использовать revitPath и projectPath. #NoEnv SendMode Input SetWorkingDir %A_ScriptDir% ; Путь к программе и проекту revitPath := "ПУТЬ_К_Revit.exe" projectPath := "ПУТЬ_К_Проекту.rvt" ; Запуск программы Run, %revitPath% "%projectPath%" ; Ожидание запуска окна программы в течение часа (3600 секунд) if WinWait("ahk_exe " . revitPath, , 3600) { ; Получение ID окна active_id := WinExist("ahk_exe " . revitPath) ; Активация окна WinActivate, ahk_id %active_id% ; Опционально: можно установить фокус на конкретное окно, если известно его название ; WinActivate, ahk_class НазваниеКлассаОкна } else { MsgBox, Программа не запустилась в течение отведенного времени. } ExitApp Объяснение кода: 1. Устанавливаем рабочую директорию скрипта. 2. Задаем пути к программе и проекту. 3. Запускаем программу с помощью Run. 4. Ожидаем появления окна программы в течение 3600 секунд (1 час) с помощью WinWait. 5. Получаем ID окна с помощью WinExist. 6. Активируем окно с помощью WinActivate. 7. Если окно не появилось в течение отведенного времени, выводим сообщение об ошибке. Этот скрипт должен работать независимо от изменения ahk_class главного окна, так как мы используем ahk_exe для идентификации процесса. Это должно помочь вам захватить окно и установить фокус на него.
Понял, спасибо! Попробую
Сработало, спасибо!
Угу gpt рулит))
Обсуждают сегодня