Автоматично запускайте Outlook у лотку


11

Чи є спосіб запустити Outlook автоматично при вході в систему, але зведений до мінімуму в системний трей (область сповіщень)? Я не хочу, щоб мій папку "Вхідні" відображалася в моєму обличчі під час запуску комп'ютера, лише дискретні сповіщення, коли надходить нова пошта.

Я використовую Outlook 2003, якщо це має значення.


1
Подивіться цю статтю: support.microsoft.com/kb/251340
Reorx

@Reorx зробимо це відповіддю
kinokijuf

Відповіді:


15

Outlook 2010 (x86) на Windows 7 (x64): запуск та мінімізація до системного треї при запуску

Я знаю, що ця нитка дещо стара; однак, пошук в Інтернеті виявляє численні відомості про цю проблему, і я не зміг знайти те, що забезпечує ефективне рішення. З будь-якої причини звичайні рішення цього питання працюють не у всіх випадках.

Проблема:

  • При первісному вході піктограма Outlook залишається видимою на панелі завдань, змушуючи її відновити вікно, а потім мінімізувати вручну, перш ніж Outlook видалиться з панелі завдань.
  • Просте додавання ярлика Outlook до папки запуску та вибір пункту "Сховати, коли мінімізований" з контекстного меню піктограми лотка Outlook не вирішує проблему.
  • Використання прапора / Min із пакетного файлу чи ярлика також не працює.

Рішення:

  1. Відкрийте Outlook вручну та клацніть правою кнопкою миші піктограму лотка Outlook, щоб переконатися, що прапорець Hide When Minimized встановлено.
  2. Створіть новий текстовий файл та вставте наступний код.

    OPTION EXPLICIT
    
    CONST PATH_TO_OUTLOOK = """C:\Program Files (x86)\Microsoft Office\Office14\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
    
  3. ВАЖЛИВО! Не забудьте змінити, PATH_TO_OUTLOOKщоб відобразити фактичне місце установки.

  4. Перейменуйте текстовий файл на все, що завгодно з .vbsрозширенням, щоб змусити Windows розпізнати його як VBScript.

Необов’язково:

  1. Зберігайте сценарій де завгодно.
  2. Створіть ярлик до сценарію і замість нього помістіть його в папку "Запуск".
  3. Клацніть ярлик правою кнопкою миші та виберіть властивості.
  4. За допомогою кнопки « Змінити піктограму » перейдіть до місця виконання виконуваного файлу Outlook та виберіть піктограму Outlook, що зберігається у виконаному файлі.

Поліпшення продуктивності:

Замість того, щоб розміщувати скрипт або ярлик до сценарію в папці "Запуск", реєстр можна редагувати, щоб запустити сценарій негайно під час входу.

  1. Виконайте кроки 1-4 у розділі Рішення вище.
  2. Розмістіть сценарій куди завгодно.
  3. Додайте нове значення рядка або нове значення рядка, що розширюється, до необхідності в ключ реєстру HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run.
  4. Назвіть це все, що завгодно.
  5. Змініть нове створене вами значення за допомогою шляху до сценарію.

Я помічаю, що у вас є незареєстрований та зареєстрований користувач. Ви можете, і, звичайно, повинні об'єднати їх, скориставшись посиланням для контакту з нами внизу сторінки
Journeyman Geek

Чудово працює з Windows 8.1 та Office 2013! Єдине, що потрібно змінити, це те, що PATH_TO_OUTLOOK має бути Office15 замість Office14. Також вам потрібно додати HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Preference\MinToTrayдо реєстру зі значенням 1.
Нейт

Коли я виконую цей скрипт вручну зі своєї папки запуску, він запускається мінімізовано, але піктограма Outlook застрягла на моїй панелі завдань. Мені б хотілося це тільки в моєму лотку. Коли я активую Outlook за допомогою піктограми панелі завдань, а потім мінімізую її, вона переходить у лоток і залишає панель завдань, як очікувалося.
rolandow

@rolandow Проблема із значком, що знаходиться на панелі завдань, згадується в першій частині опису проблеми. Якщо вона не працює належним чином, швидше за все, це проблема, пов’язана з термінами. Я виявив, що додавання його до реєстру, як це пропонується, зазвичай вирішує будь-які проблеми із тимчасовим враженням через те, як Windows виконує елементи під час запуску. Інша річ, яку ви можете спробувати, - це змінити значення Wscript.Sleep (XXX).
Джейсон

7

У Outlook для цього немає вбудованої функції, але ви можете використовувати startкоманду:

  1. Створіть ярлик у папці запуску, вказуючи, що виконує команду

    cmd /c start /min "" "FullPathOfOutlook.exe"
    

    або пакетний файл, що містить команду

    @start /min "" "FullPathOfOutlook.exe"
    
  2. Клацніть правою кнопкою миші піктограму лотка та встановіть прапорець Сховати, коли її зменшено .


Не працює. Прогноз все ще починає максимізуватися.
kinokijuf

Можливо, мені було не ясно. Я використовую вищевказаний метод (з пакетним файлом) на своєму комп’ютері. Це працює.
Денніс

Яка версія Outlook у вас є?
kinokijuf

Outlook 2007, але це не має значення. Я використовую startдля мінімізації багатьох програм запуску, і він працює з усіма ними.
Денніс

Я можу підтвердити те, що говорить Денніс. На моєму комп'ютері XP з Outlook 2003 я використовую start /min "" "C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.exe"пакетний файл у папці запуску, і він відкривається мінімізовано під час входу. Я роблю те саме з моїм Win7 / Outlook 2010, але просто іншим шляхом.
jb11

0

якщо ви можете відкрити перспективи з командного рядка, ввівши outlook.exe, тоді створіть пакетний файл, що включає цей код, start /b /min outlook.exeі помістіть його у вашу папку запуску Windows.


0

При використанні лапок з командою START в Windows 7 з Outlook 2010 відкриється нове вікно команд, але Outlook не запускається. Це відбувається з 32-бітовими версіями випусків Windows 7 Pro та Enterprise (обидві з останніми оновленнями). Я не можу сказати, чи трапляється це з 64-бітовими версіями чи іншими виданнями.

Щоб вирішити цю проблему, потрібно опустити будь-які лапки, які оточують "шлях \ програму", яку ви хочете запустити за допомогою команди START. Однак, оскільки зазвичай в назві шляху є пробіли, ви, ймовірно, отримаєте іншу помилку, якщо не обрізаєте шлях (скорочуєте його). Урізані імена на шляху можуть змінюватися, якщо у вас встановлено кілька продуктів Microsoft. Щоб отримати правильний усічений шлях, використовуйте наступний командний рядок у вікні DOS (у вікні CMD): FOR / D% T IN ("C: \ Program Files \ Microsoft Office \ Office14 \ Outlook") DO ECHO% ~ sT

Ось приклад, який працював на мене при використанні результатів, отриманих зверху: START / MIN C: \ Progra ~ 1 \ Micros ~ 1 \ Office14 \ Outlook

ПРИМІТКА: Office14 посилається на версію 2010 року, тоді як Office12 посилається на версію 2007. Також зауважте, що .exe в кінці Outlook.exe не потрібен у цих командних рядках.


Чи є якась причина, чому ви вважаєте, що це краще, ніж start /min "" "FullPathOfOutlook.exe"?
Скотт

0

Я використовував вищезазначений код протягом значного часу і хочу подякувати всім попереднім учасникам за те, що вони поділилися своєю роботою / вдосконаленнями / пропозиціями. Однак останнім часом у мене виникли два неприємні та дратівливі проблеми, коли він використовується разом із Windows 10 (64 біт) та Outlook 2016 (64 біт):

  1. Піктограма Outlook у системній панелі відображає накладку "cog" із повідомленням "Інша програма використовує Outlook. Щоб відключити програми та вийти з Outlook, натисніть значок Outlook та натисніть кнопку Вийти зараз".

  2. Спроба відкрити Outlook із контекстного меню "Відкрити Outlook" (клацніть правою кнопкою миші значок Outlook у лотку) викликає появу діалогового вікна з повідомленням "Не знайдено активного об'єкта провідника". При натисканні на опцію "ОК" у відповідь запускається Outlook (хоча проблема 1 - накладання зубців) залишається.

Для вирішення вищезазначених питань я взявся знайти якийсь подібний код, який я міг би скласти, щоб відповідати бажаним цілям оригінального плаката (який відображає мої власні вимоги).

Код нижче пропонується "як є" для широкої вигоди інших SuperUsers, важливо відзначити, що в той час як я протестував код на двох системах W10 64 біт (обидві з встановленою 64-бітною системою Office), я все ще повинен вирішити RunTime випуск однієї системи. Інші функції бездоганно. Повні деталі можна переглянути тут, якщо потрібно: /programming/45533261/start-outlook-2016-64-bit-automatically-minimized-to-windows-10-64-bit-syste

Я буду тримати вас в оцінці будь-яких подій, оскільки тестування триває .......

** Швидке оновлення ** Тепер тестується на ноутбуці HP Elitebook 8440P - Windows 10 Pro 64 біт з Office 64 біт + те саме 12 Додаток Outlook - Функції бездоганно, відповідно до вимог, викладених у початковій публікації вище .....

** Подальше оновлення ** Тестовано на другому ноутбуці HP Elitebook 8440P - Windows 10 Pro 64 біт з Office 64 біт + те саме 12 Додаток Outlook - помилка RunTime знову випробувана :(

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.

0

Я здійснив пошук і тести і, нарешті, виявив, що наступний код vbscript працює в моєму ноутбуці Win10:

set shell = createobject("wscript.Shell")
shell.run "outlook.exe", 7, False     '... SH_SHOWMINNOACTIVE=7 "should" work
shell.sendkeys "% n"     ' ... Minimize Alt Space Bar - n

Просто встановіть це як дію в Планувальнику завдань і зробіть це так, як ви робите запуск програми.


0

Мені подобається головна відповідь, але мені не подобається, що це в CScript ... Тому я зробив це в PowerShell ...

Працює бездоганно з Windows 10 та Office 365.

Колір відформатований тут: https://gist.github.com/NotoriousPyro/d30a96d2a89cf783ef3081b13d4816a0

<#
.Synopsis

Automatically finds, runs and places Outlook into the system tray.

.Description

Automatically finds, runs and places Outlook into the system tray.
By default, Outlook will start full-screen even when you have the option to minimize tray enabled and start the app as minimized.

This requires that the OUTLOOK.EXE tray icon is enabled and that the minimize to tray option is on.

Author: NotoriousPyro (Craig Crawford)

#>

$autostartOutlook = $true

$outlook = Invoke-Command -ScriptBlock {
    $versions = Get-ChildItem "HKLM:\SOFTWARE\Microsoft\Office" | Where-Object { $_.Name -like '*.*' } | Sort-Object -Property Name -Descending

    $outlookexe = $versions.ForEach({
        $path = 'Registry::' + $_.Name
        try
        {
            $versionPath = Get-ItemProperty -LiteralPath (Join-Path $path 'Outlook\InstallRoot') -Name Path -ErrorAction SilentlyContinue
            $installRoot = ($versionPath).Path
        }
        catch {}

        if ($installRoot -ne $null)
        {
            $outlookexe = Join-Path $installRoot 'OUTLOOK.EXE'

            if (Test-Path -Path $outlookexe)
            {
                return $outlookexe
            }
        }
    })
    return $outlookexe
}

Add-Type -TypeDefinition '
public enum ShowStates
{
    Hide = 0,
    Normal = 1,
    Minimized = 2,
    Maximized = 3,
    ShowNoActivateRecentPosition = 4,
    Show = 5,
    MinimizeActivateNext = 6,
    MinimizeNoActivate = 7,
    ShowNoActivate = 8,
    Restore = 9,
    ShowDefault = 10,
    ForceMinimize = 11,
}
'

$User32Definition = @'
    [DllImport("user32.dll")] public static extern bool ShowWindowAsync(IntPtr hWnd, int nCmdShow);
    [DllImport("user32.dll")] public static extern bool IsWindowVisible(IntPtr hWnd);
'@

# add signature as new type to PowerShell (for this session)
$User32 = Add-Type -MemberDefinition $User32Definition -Name User32 -PassThru

$maxLoops = 10; $loops = 0

do
{
    $outlookHandle = Get-Process OUTLOOK -ErrorAction SilentlyContinue

    if (-not $outlookHandle -and $autostartOutlook)
    {
        Write-Verbose "Starting OUTLOOK.EXE from $outlook"
        Start-Process $outlook
        Start-Sleep -Seconds 2
    }

    if ($outlookHandle)
    {
        $windowHandle = $outlookHandle.MainWindowHandle

        Write-Verbose "OUTLOOK.EXE is running..."

        if ($User32::IsWindowVisible($windowHandle))
        {
            Write-Verbose "OUTLOOK.EXE is visible... attempting to minimize..."

            $minimized = $User32::ShowWindowAsync($windowHandle, [ShowStates]::Minimized)

            Start-Sleep -Seconds 2

            if (-not $minimized)
            {
                Write-Verbose "Failed to minimize OUTLOOK.EXE... Outlook may still be starting..."
                $outlookHandle = $null
            }
            elseif (-not $User32::IsWindowVisible($windowHandle))
            {
                Write-Verbose "OUTLOOK.EXE is now minimized"
                break;
            }
        }
        else
        {
            Write-Verbose "OUTLOOK.EXE not visible..."
            break;
        }
    }

    Write-Verbose "Waiting for OUTLOOK.EXE to be ready, attempt: $loops of $maxLoops"

    $loops += 1
}
until ($outlookHandle -ne $null -or $loops -ge $maxLoops)
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.