Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для CyraxZ

Ветеран


Сообщения: 784
Благодарности: 11

Профиль | Отправить PM | Цитировать


Цитата 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 будет автоматически запускаться на уровня трея (не придётся вручную закрывать его окно).

Последний раз редактировалось CyraxZ, 22-03-2020 в 17:08.


Отправлено: 16:59, 22-03-2020 | #7