У меня проблема с автоматическим запуском Outlook 2016 при загрузке / входе в систему, который предназначен для запуска Outlook, свернутого в системный лоток Windows, так что после вызова при запуске Windows 10 почта будет собираться почтовыми учетными записями (NB . В данном случае все POP.), В то время как программа находится в системном трее и остается невидимой до тех пор, пока она не потребуется пользователю.
Приведенный ниже сценарий .vbs работает должным образом, но в большинстве случаев он вызывает две нежелательные проблемы.
Значок Outlook на панели задач отображает наложение «шестеренки» с сообщением «Другая программа использует Outlook. Чтобы отключить программы и выйти из Outlook, щелкните значок Outlook, а затем нажмите« Выйти ».
При попытке открыть Outlook из контекстного меню «Открыть Outlook» (щелкните правой кнопкой мыши значок Outlook на панели задач) появляется диалоговое окно с сообщением «Активный объект проводника не найден». При нажатии кнопки «ОК» в ответ запускается Outlook (хотя проблема 1 - наложение шестеренки) остается.
Никакой проблемы не возникает, когда Outlook обычно запускается с рабочего стола, поэтому может показаться, что сценарий .vbs каким-то образом ответственен. Я успешно использовал этот сценарий (см. Также ниже: https://superuser.com/questions/467809/start-outlook-automatically-in-tray) в прошлом как ярлык меню запуска и запись реестра hkcu 'run'.
Может ли кто-нибудь предложить причину или, альтернативно, подходящую версию кода для достижения правильной работы? Если это важно, Windows 10 - это 64-разрядная версия Pro, а установленная версия Office (включая Outlook) также 64-разрядная.
Это код, вызываемый сценарием .vbs:
ВАРИАНТ ЯВНО
OPTION EXPLICIT
CONST PATH_TO_OUTLOOK = """C:\Program Files\Microsoft Office\Office16\OUTLOOK.EXE"""
CONST SHOW_MAXIMIZED = 3
CONST MINIMIZE = 1
DIM shell, outlook
SET shell = WScript.CreateObject("WScript.Shell")
' Open Outlook
shell.Run PATH_TO_OUTLOOK, SHOW_MAXIMIZED, FALSE
ON ERROR RESUME NEXT
' Grab a handle to the Outlook Application and minimize
SET outlook = WScript.CreateObject("Outlook.Application")
WScript.Sleep(100)
outlook.ActiveExplorer.WindowState = SHOW_MAXIMIZED
' Loop on error to account for slow startup in which case the
' process and/or the main Outlook window is not available
WHILE Err.Number <> 0
Err.Clear
WScript.Sleep(100)
SET outlook = NOTHING
SET outlook = WScript.CreateObject("Outlook.Application")
outlook.ActiveExplorer.WindowState = MINIMIZE
WEND
ON ERROR GOTO 0
SET outlook = NOTHING
SET shell = NOTHING
Потратив несколько часов на эту проблему в выходные, я подумал, что решил проблемы и все заработало, как задумано.
Работая с аналогичными образцами кода, я скомпилировал новый сценарий (см. Ниже), который применил как ярлык в папке «Автозагрузка», так и как запись в ветке «run» реестра HKCU.
Теперь о проблеме! Тестируя скрипт на двух отдельных системах Windows 10 Pro (обе с 64-битной архитектурой), обе с 64-битным Outlook 2016, установленным как часть 64-битного пакета Office, я обнаружил, что, хотя в одной системе скрипт работает безупречно, в другой я получаю следующую среду выполнения ошибка:
Скрипт: D: \ Neil's Files \ Neil's Filing Cabinet \ Neil's Emails \ Start Outlook Minimized to Tray \ Start Outlook 2016 Minimized To Tray.vbs
Строка: 11 символов: 5 Ошибка: компонент ActiveX не может создать объект: «GetObject» Код: 800A01AD Источник: ошибка времени выполнения Microsoft VBScript
Это меня озадачило, поскольку файл сценария и связанный с ним ярлык являются физическими копиями друг друга, учитывая, что пересмотренный сценарий ниже не содержит ссылок на пути (поскольку они обрабатываются непосредственно кодом в отношении Outlook.exe), которые идентифицируются размещение ярлыка или элемента данных в строке реестра в зависимости от используемого формата.
Тем не менее, у систем есть некоторые различия, и для целей сравнения я резюмирую те, которые я считаю важными:
Система 1: (Проблемная система) представляет собой зрелый ПК X58 Asus P6T7, Intel i720 с множеством установленных программ, в частности, Outlook 2016 имеет те же 12 установленных надстроек, но, кроме того, имеет две связанные программы, которые запускаются при загрузке, корпоративные версии 4team's Sync2 для Microsoft Outlook и безопасное резервное копирование PST. Время загрузки довольно продолжительное (но приемлемое), как и запуск Outlook с его различными надстройками.
Система 2: это ПК новой сборки Asus X99-Deluxe, i7 5930 текущего поколения, на котором еще мало установлено, за исключением MS Office, Adobe CC и некоторых утилит.
В случае Системы 1 Outlook автоматически запускается по назначению, однако во время загрузки экрана-заставки (пока загружаются надстройки) отображается ошибка времени выполнения, хотя Outlook продолжает полностью открываться, но не может сворачиваться ...
Это наводит на мысль, что код ошибки - это секция, которая активирует окно, однако приведенное выше сообщение об ошибке относится к «компоненту ActiveX не может создать объект: 'GetObject» », что вместо этого предполагает проблему со строкой кода« Set OLObj = GetObject ( "", "Outlook.Application") "??
Надеюсь, кто-нибудь сможет протестировать код на аналогичной настройке и сообщить об этом? Или, наоборот, дайте мне указание на то, что происходит, и как я могу это решить. Я, конечно, также приветствовал бы любые предлагаемые улучшения кода!
** Быстрое обновление ** Теперь протестировано на ноутбуке HP Elitebook 8440P - 64-разрядная версия Windows 10 Pro с 64-разрядной версией Office + те же 12 надстроек для Outlook - работает как задумано .....
** Дальнейшее обновление ** Протестировано на втором ноутбуке HP Elitebook 8440P - 64-разрядная версия Windows 10 Pro с 64-разрядной версией Office + те же 12 надстроек Outlook - ошибка выше времени выполнения снова возникла ....... изо всех сил пытается понять, почему эти результаты происходит ?? Есть какие-нибудь мысли ???
Приведенный ниже код предлагается «как есть» для тех, кто ищет те же критерии автоматического запуска Outlook. Тестирование с Системой 2 показывает, что она работает, поэтому я надеюсь, что другие будут иметь такой же успех, пока не будут устранены нерешенные проблемы.
NB: Чтобы настроить размер окна запуска Outlook (во время 10-секундной паузы перед автоматическим сворачиванием), чтобы отразить личные предпочтения, измените числовое значение в следующей строке кода:
WshShell.Run «OUTLOOK.EXE», 3, ложь
Для максимального размера окна измените значение на 3. Для восстановленного размера окна измените значение на 2.
OPTION EXPLICIT
Dim WshShell
Dim OLObj
Set WshShell = WScript. CreateObject ( "Wscript.Shell" )
'Open Outlook: Note that inspite of the launch options, it will open the program in a normal window.
'The file location path is not necessary as Windows 10 correctly identifies Outlook's location.
WshShell.Run "OUTLOOK.EXE" , 3, false
'This will mimimise it to the system tray after a 10 second pause to allow for mail collection on Outlook launch.
WScript.Sleep (10000)
Set OLObj = GetObject("","Outlook.Application")
'Activates the window
OLObj.ActiveExplorer.Activate
'Sends the command to minimise
OLObj.ActiveExplorer.WindowState = 1
'Outlook does not immediately minimise to the system tray so that 'Send/Receive' can initiate mail collection.
Спасибо jrv с форума Microsoft «The Scripting Guys», любезно предложившего исправленный (упрощенный) код, который приведен ниже. Я могу сообщить, что, как и в случае с исходным кодом, он безупречно работает на тех же двух системах, что и раньше, в то время как в двух других возникла ошибка ... очень озадаченная !!
Ошибка выполнения:
Скрипт: D: \ Neil's Files \ Neil's Filing Cabinet \ Neil's Emails \ Start Outlook Minimized to Tray \ Start Outlook 2016 Minimized To Tray.vbs
Строка: 3 символа: 5 Ошибка: компонент ActiveX не может создать объект: «Outlook.Application» Код: 800A01AD Источник: ошибка времени выполнения Microsoft VBScript
Обновленный код:
Set WshShell = CreateObject ( "Wscript.Shell" )
WshShell.Run "OUTLOOK.EXE" , 3, False
Set ol = CreateObject("Outlook.Application")
ol.ActiveExplorer.Activate
ol.ActiveExplorer.WindowState = 1