Цитата iglezz:
Нет, просто, как обычно, сунули в пыльный шкаф в углу самого дальнего коридора на нижнем ярусе подвала в забытом офисе. Примерно так. »
|
Вот и в
оригинале:
Terminate Method (WshScriptExec)
The Terminate method does not return a value. Use the Terminate method only as a last resort since some applications do not clean up properly. As a general rule, let the process run its course and end on its own. The Terminate method attempts to end a process using the WM_CLOSE message. If that does not work, it kills the process immediately without going through the normal shutdown procedure.
Только вышеприведённый код (
Terminate + подавление ошибки) на самом деле
нерабочий. Да, окно Lingvo закрывается. Да, ошибка не выскакивает. Да, значок Lingvo появляется в трее. Но при этом сам Lingvo при выполнении
Terminate выгружается из памяти, не смотря на снятую галку "
Выгружать ABBY Lingvo из памяти при закрытии главного окна" в настройках Lingvo. Судя по наличию ошибки (которую в этом коде мы подавляем),
WM_CLOSE по тем или иным причинам не срабатывает (генерируется ошибка 80070578 "
Недопустимый дескриптор окна") и выполняется принудительная выгрузка процесса из памяти. Т.е. от варианта с
Terminate отказываемся и делаем по-другому.
Вот рабочий вариант скрипта:
Код:

Set WshShell = CreateObject("WScript.Shell")
Set WshExec = WshShell.Exec("""C:\Program Files (x86)\ABBYY Lingvo x6\Lingvo.exe""")
Do While Not WshShell.AppActivate ("Lingvo")
WScript.Sleep 300
Loop
WshShell.SendKeys "%{F4}"
Здесь сначала запускается Lingvo x6, затем выполняется ожидание, пока окно программы запустится и получит фокус, затем имитируется нажатие комбинации клавиш Alt+F4 (закрытие текущего окна). И всё: окно закрывается, Lingvo остаётся в памяти, значок в трее присутствует. Можно выполнять перевод слов (согласно настройкам Lingvo x6).
Последовательность действий для автозагрузки Lingvo x6 при старте Windows:
1) В настройках Lingvo x6 cнять галку "
Общие" - "
Выгружать ABBY Lingvo из памяти при закрытии главного окна"
2) Скопировать вышеприведённый скрипт "
Lingvo x6 autorun.vbs" в автозагрузку ("
C:\Users\ПОЛЬЗОВАТЕЛЬ\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup")
После этого при запуске OC Windows Lingvo x6 будет автоматически запускаться на уровня трея (не придётся вручную закрывать его окно).