Uruchom program Outlook automatycznie w zasobniku

11

Czy istnieje sposób automatycznego uruchamiania programu Outlook przy logowaniu, ale zminimalizowany do zasobnika systemowego (obszar powiadomień)? Nie chcę, aby moja skrzynka odbiorcza była wyświetlana na mojej twarzy, gdy uruchamiam komputer, tylko dyskretne powiadomienie o nadejściu nowej poczty.

Używam programu Outlook 2003, jeśli to ma znaczenie.

kinokijuf
źródło
1
Spójrz na ten artykuł: support.microsoft.com/kb/251340
Reorx
@Reorx to odpowiedź
kinokijuf

Odpowiedzi:

15

Outlook 2010 (x86) w systemie Windows 7 (x64): uruchamianie i minimalizowanie do zasobnika systemowego podczas uruchamiania

Wiem, że ten wątek jest nieco stary; jednak wyszukiwanie w sieci ujawnia wiele kont tego problemu i nie udało mi się znaleźć takiego, które zapewnia działające rozwiązanie. Z jakiegokolwiek powodu normalne rozwiązania tego problemu nie działają we wszystkich przypadkach.

Problem:

  • Przy pierwszym logowaniu ikona programu Outlook pozostaje widoczna na pasku zadań, zmuszając ją do przywrócenia okna, a następnie ręcznie minimalizuj, zanim program Outlook usunie się z paska zadań.
  • Po prostu dodanie skrótu programu Outlook do folderu Autostart i wybranie opcji Ukryj po zminimalizowaniu z menu kontekstowego ikony zasobnika programu Outlook nie rozwiązuje problemu.
  • Użycie flagi / Min z pliku wsadowego lub skrótu również nie działa.

Rozwiązanie:

  1. Otwórz program Outlook ręcznie i kliknij prawym przyciskiem myszy ikonę tacy programu Outlook, aby sprawdzić, czy opcja Ukryj po zminimalizowaniu jest zaznaczona.
  2. Utwórz nowy plik tekstowy i wstaw następujący kod.

    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. WAŻNY! Zmień, PATH_TO_OUTLOOKaby odzwierciedlić faktyczną lokalizację instalacji.

  4. Zmień nazwę pliku tekstowego na dowolne z .vbsrozszerzeniem, aby zmusić system Windows do rozpoznania go jako VBScript.

Opcjonalny:

  1. Przechowuj skrypt w dowolnym miejscu.
  2. Utwórz skrót do skryptu i umieść go w folderze Autostart.
  3. Kliknij skrót prawym przyciskiem myszy i wybierz właściwości.
  4. Za pomocą przycisku Zmień ikonę przejdź do lokalizacji pliku wykonywalnego programu Outlook i wybierz ikonę programu Outlook zapisaną w pliku wykonywalnym.

Poprawa wydajności:

Zamiast umieszczać skrypt lub skrót do skryptu w folderze Autostart, rejestr można edytować, aby uruchomić skrypt natychmiast po zalogowaniu.

  1. Wykonaj kroki 1-4 w sekcji Rozwiązanie powyżej.
  2. Umieść skrypt w dowolnym miejscu.
  3. Dodaj nową wartość ciągu lub nową rozwijaną wartość ciągu, jeśli to konieczne, do klucza rejestru HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run.
  4. Nazwij to, jak chcesz.
  5. Zmodyfikuj nową wartość utworzoną za pomocą ścieżki do skryptu.
Jason
źródło
Zauważyłem, że masz niezarejestrowanego i zarejestrowanego użytkownika - możesz i na pewno powinieneś połączyć je, korzystając z linku do kontaktu na dole strony
Journeyman Geek
Działa świetnie z Windows 8.1 i Office 2013! Jedyną rzeczą, którą należy zmienić, jest to, że PATH_TO_OUTLOOK powinien być Office15 zamiast Office14. Musisz także dodać HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Preference\MinToTraydo rejestru wartość 1.
Nate
Kiedy wykonuję ten skrypt ręcznie z mojego folderu Autostart, zaczyna on być zminimalizowany, ale ikona programu Outlook utknęła na pasku zadań. Chciałbym tylko na tacy. Kiedy aktywuję program Outlook za pomocą ikony paska zadań, a następnie minimalizuję go, podszedł do paska zadań i opuszcza pasek zadań zgodnie z oczekiwaniami.
rolandow
@rolandow Problem z ikoną pozostającą na pasku zadań jest wspomniany w pierwszej części opisu problemu. Jeśli nie działa poprawnie, najprawdopodobniej jest to problem z czasem. Przekonałem się, że dodanie go do rejestru zgodnie z sugestią zwykle rozwiązuje wszelkie problemy z synchronizacją wynikające ze sposobu, w jaki system Windows wykonuje elementy podczas uruchamiania. Kolejną rzeczą, którą możesz wypróbować, jest zmiana wartości Wscript.Sleep (XXX).
Jason
7

Program Outlook nie ma w tym celu wbudowanej funkcji, ale można użyć startpolecenia:

  1. Utwórz skrót w folderze Autostart, wskazując polecenie

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

    lub plik wsadowy zawierający polecenie

    @start /min "" "FullPathOfOutlook.exe"
    
  2. Kliknij prawym przyciskiem myszy ikonę zasobnika i zaznacz opcję Ukryj po zminimalizowaniu .

Dennis
źródło
Nie działa. Program Outlook nadal uruchamia się w stanie zmaksymalizowanym.
kinokijuf
Może nie byłem jasny. Używam powyższej metody (z plikiem wsadowym) na moim komputerze. To działa.
Dennis
Jaką masz wersję programu Outlook?
kinokijuf
Outlook 2007, ale to nie powinno mieć znaczenia. Używam, startaby zminimalizować wiele aplikacji startowych i działa z nimi wszystkimi.
Dennis
Mogę potwierdzić, co mówi Dennis. Na moim komputerze XP z programem Outlook 2003 używam start /min "" "C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.exe"pliku wsadowego w folderze Autostart i otwiera się on po zminimalizowaniu. Robię to samo z Win7 / Outlook 2010, ale po prostu inną ścieżką.
jb11,
0

jeśli możesz otworzyć program Outlook z wiersza polecenia, wpisując outlook.exe, a następnie utwórz plik wsadowy zawierający ten kod start /b /min outlook.exei umieść go w folderze startowym systemu Windows.

Renju Chandran chingath
źródło
0

Gdy używasz cudzysłowów z poleceniem START w systemie Windows 7 z programem Outlook 2010, otworzy się nowe okno poleceń, ale program Outlook nie uruchomi się. Dzieje się tak w przypadku 32-bitowych wersji systemu Windows 7 Pro i wersji Enterprise (obie z najnowszymi aktualizacjami). Nie mogę powiedzieć, czy dzieje się tak w przypadku wersji 64-bitowych, czy innych edycji.

Aby rozwiązać ten problem, musisz pominąć cudzysłowy otaczające „ścieżkę \ program”, którą chcesz uruchomić za pomocą polecenia START. Ponieważ jednak w nazwie ścieżki są zwykle spacje, prawdopodobnie otrzymasz inny błąd, chyba że skrócisz ścieżkę (skrócisz ją). Skrócone nazwy na ścieżce mogą się różnić, jeśli zainstalowano wiele produktów Microsoft. Aby uzyskać prawidłową ścieżkę obciętą, użyj następującego wiersza polecenia w wierszu polecenia DOS (w oknie CMD): FOR / D% T IN („C: \ Program Files \ Microsoft Office \ Office14 \ Outlook”) DO ECHO% ~ sT

Oto przykład, który zadziałał dla mnie przy użyciu wyników uzyskanych powyżej: START / MIN C: \ Progra ~ 1 \ Micros ~ 1 \ Office14 \ Outlook

UWAGA: Office14 odnosi się do wersji 2010, natomiast Office12 odnosi się do wersji 2007. Należy również pamiętać, że .exe na końcu programu Outlook.exe nie jest wymagany w tych wierszach poleceń.

Klaralina
źródło
Czy jest jakiś powód, dla którego uważasz, że jest to lepsze niż start /min "" "FullPathOfOutlook.exe"?
Scott
0

Użyłem powyższego kodu od dłuższego czasu i chciałbym podziękować wszystkim poprzednim autorom za podzielenie się swoją pracą / ulepszeniami / sugestiami. Ostatnio jednak wystąpiły dwa niepożądane i irytujące problemy, gdy jest on używany w połączeniu z Windows 10 (64-bitowy) i Outlook 2016 (64-bitowy):

  1. Ikona programu Outlook w zasobniku systemowym wyświetla nakładkę „trybik” z komunikatem „Inny program używa programu Outlook. Aby rozłączyć programy i wyjść z programu Outlook, kliknij ikonę programu Outlook, a następnie kliknij przycisk Wyjdź teraz”.

  2. Próby otwarcia programu Outlook z menu kontekstowego „Otwórz program Outlook” (kliknij prawym przyciskiem myszy ikonę programu Outlook na pasku zadań) powoduje wyświetlenie okna dialogowego z informacją „Nie znaleziono aktywnego obiektu eksploratora”. Kliknięcie opcji „OK” w odpowiedzi uruchamia program Outlook (choć problem 1 - nakładka trybiki) pozostaje.

Aby rozwiązać powyższe problemy, postanowiłem znaleźć podobny kod, który mógłbym skompilować w celu osiągnięcia pożądanych celów oryginalnego plakatu (który odzwierciedla moje własne wymagania).

Poniższy kod jest oferowany „tak, jak jest” dla szerszej korzyści innych superużytkowników, ważne jest, aby pamiętać, że chociaż testowałem kod na dwóch systemach 64-bitowych W10 (oba z zainstalowanym 64-bitowym pakietem Office), wciąż muszę rozwiązać RunTime problem z jednym systemem. Pozostałe działają bezbłędnie. W razie potrzeby można wyświetlić pełne informacje tutaj: /programming/45533261/start-outlook-2016-64-bit-automatically-minimised-to-windows-10-64-bit-syste

Będę Cię informować o wszelkich zmianach w toku testów .......

** Szybka aktualizacja ** Teraz przetestowane na laptopie HP Elitebook 8440P - Windows 10 Pro 64-bitowy z pakietem Office 64-bitowym + te same 12 dodatków programu Outlook - Działa bezbłędnie zgodnie z wymaganiami określonymi w oryginalnym poście powyżej .....

** Dalsza aktualizacja ** Przetestowano na drugim laptopie HP Elitebook 8440P - Windows 10 Pro 64-bitowy z pakietem Office 64-bitowym + te same 12 dodatków programu Outlook - Wystąpił błąd 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.
PC Pilot
źródło
0

Przeprowadziłem kilka wyszukiwań i testów, aż w końcu okazało się, że następujący kod vbscript działa w moim laptopie 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

Po prostu ustaw go jako akcję w Harmonogramie zadań i zrób to tak, jak tworzysz aplikację startową.

Aerix Chan
źródło
0

Podoba mi się najlepsza odpowiedź, ale nie podoba mi się, że jest w CScript ... Więc zrobiłem to w PowerShell ...

Działa bezbłędnie z Windows 10 i Office 365.

Kolor sformatowany tutaj: 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)
NotoriousPyro
źródło