Запуск Outlook 2016 (64-разрядная версия) автоматически сворачивается в область уведомлений Windows 10 (64-разрядная версия) - активного объекта Explorer не обнаружено

У меня проблема с автоматическим запуском Outlook 2016 при загрузке / входе в систему, который предназначен для запуска Outlook, свернутого в системный лоток Windows, так что после вызова при запуске Windows 10 почта будет собираться почтовыми учетными записями (NB . В данном случае все POP.), В то время как программа находится в системном трее и остается невидимой до тех пор, пока она не потребуется пользователю.

Приведенный ниже сценарий .vbs работает должным образом, но в большинстве случаев он вызывает две нежелательные проблемы.

  1. Значок Outlook на панели задач отображает наложение «шестеренки» с сообщением «Другая программа использует Outlook. Чтобы отключить программы и выйти из Outlook, щелкните значок Outlook, а затем нажмите« Выйти ».

  2. При попытке открыть 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

person PC Pilot    schedule 06.08.2017    source источник


Ответы (3)


Вы можете использовать как файл * .reg:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
"Outlook"="C:\\Windows\\system32\\cmd.exe /c \"start \"\" /min \"C:\\Program Files\\Microsoft Office\\Office16\\OUTLOOK.EXE\"\""

[HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Preferences]
"MinToTray"=dword:00000001
person Ovichan    schedule 11.09.2017
comment
Привет, Овичан, Большое спасибо за ваше очень чистое и простое решение .... именно то, что я искал :) Замечу, что записи реестра, которые вы предложили, взяты из ульев HKLM и HKCU ... просто интересно, может ли [HKEY_CURRENT_USER \ Software \ Microsoft \ Office \ 16.0 \ Outlook \ Preferences] MinToTray = dword: 00000001 равным образом быть составлен как [HKEY_LOCAL_MACHINE \ Software \ Microsoft \ Office \ 16.0 \ Outlook \ Preferences] MinToTray = dword: 00000001 для глобального эффект для всех пользователей? Или это проблема, которую я не предвидел? ПК Пилот - person PC Pilot; 12.09.2017

У меня есть ответ, который хорошо работает с Office 2013 в Windows 7, и я надеюсь, что он сработает и для вас.

По сути, это решение позволяет обойти проблему с попыткой свернуть Outlook после загрузки. Вместо этого он полагается на использование ярлыка, который уже настроен для загрузки программы в свернутом состоянии.

  1. Скопируйте ярлык Outlook в каталог, содержащий ваш скрипт.
  2. Щелкните ярлык правой кнопкой мыши и откройте Свойства.
  3. На вкладке «Ярлык» измените режим запуска на «Свернутый». Нажмите ОК.

Скриншот свойств ярлыка

Затем все, что вам нужно сделать в вашем файле VBScript, - это выполнить ярлык следующим образом:

Dim sh : Set sh = CreateObject("WScript.Shell")
sh.run "Outlook.lnk"

Обратите внимание: поскольку в этом решении используется ярлык, вы потенциально можете полностью удалить часть VBScript, поместив ярлык в папку «Автозагрузка всех пользователей».

person BoffinBrain    schedule 07.08.2017
comment
Спасибо за вклад, я уже пытался выполнить действия более простым способом, однако по какой-то причине эти «нормальные» решения этой проблемы не работают во всех случаях. В частности, с Outlook я понимаю, что он ведет себя иначе, чем другие офисные программы, поскольку «сворачивание» - это только одна часть действия. - person PC Pilot; 07.08.2017
comment
Чтобы уточнить: при первоначальном входе в систему значок Outlook остается видимым на панели задач, заставляя его восстановить окно, а затем свернуть его вручную, прежде чем Outlook удалит себя с панели задач в лоток. • Простое добавление предлагаемого «свернутого» ярлыка Outlook в папку «Автозагрузка», а также выбор «Скрыть при свертывании» в контекстном меню значка Outlook на панели задач не решают проблему. • Использование флага / Min из командного файла или ярлыка не работает ни для Outlook :( (см .: superuser.com/questions/467809/) - person PC Pilot; 07.08.2017
comment
О, Боже. Звучит как сложный вызов. Какая-либо конкретная причина, по которой обычного свернутого окна недостаточно? - person BoffinBrain; 07.08.2017
comment
Помимо желания не быть побитым ..... lol Серьезно, это так, что вся загрузка + запуск Outlook работают полностью в фоновом режиме, не загромождая панель задач (неопрятный .... OCD?), Но собирая почту, чтобы когда пользователь открывает его (из лотка), их работа сразу становится доступной. Как я уже сказал, он работает безупречно на 2 системах, но ошибки на других 2 ... Aghhhh! :( - person PC Pilot; 07.08.2017
comment
Компьютерное программное обеспечение + ОКР = всегда кошмар, и я могу подтвердить это! Вы пробовали отключить все надстройки Outlook? - person BoffinBrain; 08.08.2017
comment
Верно! Мое ОКР во многом определяет то, как я ожидаю от моего программного обеспечения, и мрачная решимость удовлетворить это требование не помогает! Что касается вашего другого пункта, да, я пробовал это .... интересно, что рабочие системы имеют те же самые надстройки, а вторая система сбоя НЕ имеет ни одного из приложений 4team, которые исключают их из смеси :( Мне также дали более упрощенный код (см. правку выше), который также работает / не работает в тех же системах ........ все еще озадачен! - person PC Pilot; 08.08.2017

Это снова я! У меня есть ответ, который поможет обойти любые проблемы с VBScript с помощью стороннего программного обеспечения, DisplayFusion. Не знаю, как вы к этому относитесь, но я проверил это, и здесь он работает. Я использую это дома и на работе для управления несколькими мониторами и другими вещами. Это может даже помочь решить проблемы с другими программами, которые вы используете, и сделать ненужными различные хаки VBS.

В вашем случае есть функция под названием «Триггеры». Обратите внимание, что хотя есть бесплатная версия DF, вам нужно активировать 30-дневную пробную версию для версии Pro, чтобы использовать триггеры, и после этого вам решать, стоит ли это вашего времени.

Во-первых, после установки DF вы захотите открыть его окно настроек (щелкните правой кнопкой мыши рабочий стол и выберите DisplayFusion> Настройки).

Перейдите на вкладку «Триггеры» и нажмите «Добавить».

Вкладка

Настройте триггер при создании окна. Укажите триггеру активировать только один раз для каждого идентификатора процесса, чтобы он также не пытался сворачивать последующие окна, например, при создании нового сообщения электронной почты. Найдите путь к вашему outlook.exe. Затем добавьте действие справа, чтобы свернуть окно.

Добавить окно триггера

Дважды нажмите «ОК», а затем посмотрите, работает ли он, загрузив Outlook. Для меня экран-заставка появляется как обычно, затем главное окно сворачивается, как только оно появляется.

DF работает как системная служба с правами администратора и была протестирована с множеством пакетов программного обеспечения, поэтому, если этот метод также не подходит для вас, это может указывать на более серьезные проблемы с вашей системой / конфигурацией Office.

person BoffinBrain    schedule 09.08.2017
comment
У вас нет доступа к системам прямо сейчас, чтобы попробовать DisplayFusion, как было предложено ... хотя выглядит интересным, даже если он добавляет еще одну программу! Один вопрос, на который вы могли бы ответить ... и был проблемой с другими методами сворачивания ... исчезает ли свернутый Outlook с панели задач в область уведомлений (необходимо выбрать "Скрыть при сворачивании") при сборе почты? Этого не произошло с другими решениями с минимальным запуском, оставшимися на панели задач ... Спасибо! - person PC Pilot; 09.08.2017
comment
Да, когда я включил «Скрывать при сворачивании» и использовал эту технику, он действительно исчез с панели задач. - person BoffinBrain; 09.08.2017