Avvia Outlook automaticamente nel vassoio


11

C'è un modo per avviare Outlook automaticamente al login, ma ridotto a icona sulla barra delle applicazioni (area di notifica)? Non voglio che la mia posta in arrivo venga mostrata in faccia quando avvio il mio PC, solo una notifica discreta quando arriva la nuova posta.

Sto usando Outlook 2003, se è importante.


1
Dai un'occhiata a questo articolo: support.microsoft.com/kb/251340
Reorx

@Reorx rende questa una risposta
kinokijuf

Risposte:


15

Outlook 2010 (x86) su Windows 7 (x64): Avvia e Riduci a icona sulla barra delle applicazioni all'avvio

So che questa discussione è piuttosto vecchia; tuttavia, una ricerca web rivela numerosi account di questo problema e non sono stato in grado di trovarne uno che fornisca una soluzione funzionante. Per qualsiasi motivo, le normali soluzioni a questo problema non funzionano in tutti i casi.

Problema:

  • All'accesso iniziale, l'icona di Outlook rimane visibile sulla barra delle applicazioni costringendone a ripristinare la finestra e quindi a ridurre a icona manualmente prima che Outlook si rimuova dalla barra delle applicazioni.
  • La semplice aggiunta del collegamento di Outlook alla cartella Avvio e la selezione Nascondi se ridotto a icona dal menu di scelta rapida dell'icona del vassoio di Outlook non risolvono il problema.
  • Anche l'uso del flag / Min da un file batch o un collegamento non funziona.

Soluzione:

  1. Apri Outlook manualmente e fai clic con il pulsante destro del mouse sull'icona del vassoio di Outlook per verificare che l'opzione Nascondi se ridotto a icona sia selezionata.
  2. Crea un nuovo file di testo e inserisci il seguente codice.

    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. IMPORTANTE! Assicurati di cambiare PATH_TO_OUTLOOKper riflettere la posizione effettiva della tua installazione.

  4. Rinomina il file di testo come preferisci con .vbsun'estensione per forzare Windows a riconoscerlo come VBScript.

Opzionale:

  1. Conserva lo script dove desideri.
  2. Crea un collegamento allo script e posizionalo nella cartella Avvio.
  3. Fare clic con il tasto destro del collegamento e selezionare proprietà.
  4. Utilizzando il pulsante Cambia icona , selezionare la posizione dell'eseguibile di Outlook e selezionare l'icona di Outlook memorizzata nell'eseguibile.

Miglioramento delle prestazioni:

Invece di posizionare lo script o un collegamento allo script nella cartella Avvio, è possibile modificare il registro per eseguire immediatamente lo script all'accesso.

  1. Seguire i passaggi 1-4 nella sezione Soluzione sopra.
  2. Posiziona la sceneggiatura ovunque desideri.
  3. Aggiungere un nuovo valore di stringa o un nuovo valore di stringa espandibile, se necessario, alla chiave di registro HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run.
  4. Denominalo come preferisci.
  5. Modifica il nuovo valore che hai creato con il percorso dello script.

Ho notato che hai un utente non registrato e un utente registrato - Puoi, e sicuramente dovresti unirli utilizzando il link di contatto in fondo alla pagina
Journeyman Geek

Funziona alla grande con Windows 8.1 e Office 2013! L'unica cosa che deve cambiare è che PATH_TO_OUTLOOK dovrebbe essere Office15 anziché Office14. Inoltre devi aggiungere HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Preference\MinToTrayal registro con un valore di 1.
Nate

Quando eseguo manualmente questo script dalla mia cartella di avvio, si avvia minimizzato, ma l'icona di Outlook è bloccata nella mia barra delle applicazioni. Vorrei solo nel mio vassoio. Quando attivo Outlook con l'icona della barra delle applicazioni e quindi la minimizzo, è andato nella barra delle applicazioni e lascia la barra delle applicazioni come previsto.
rolandow,

@rolandow Il problema con l'icona che si trova nella barra delle applicazioni è menzionato nella prima parte della descrizione del problema. Se non funziona correttamente, è molto probabile che sia un problema di temporizzazione. Ho scoperto che aggiungerlo al registro come suggerito di solito risolve eventuali problemi di temporizzazione dovuti al modo in cui Windows esegue gli elementi durante l'avvio. Un'altra cosa che puoi provare è cambiare il valore del valore Wscript.Sleep (XXX).
Jason,

7

Outlook non ha funzionalità integrate per questo, ma è possibile utilizzare il startcomando:

  1. Creare un collegamento nella cartella Startup che punta al comando

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

    o un file batch contenente il comando

    @start /min "" "FullPathOfOutlook.exe"
    
  2. Fare clic con il pulsante destro del mouse sull'icona nella barra delle applicazioni e selezionare Nascondi se ridotto a icona .


Non funziona. Outlook inizia ancora ingrandito.
Kinokijuf,

Forse non ero chiaro. Sto usando il metodo sopra (con il file batch) sul mio computer. Funziona.
Dennis,

Quale versione di Outlook hai?
Kinokijuf,

Outlook 2007, ma non dovrebbe importare. Uso startper minimizzare molte applicazioni di avvio e funziona con tutte.
Dennis,

Posso confermare quello che sta dicendo Dennis. Sul mio computer XP con Outlook 2003, utilizzo start /min "" "C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.exe"in un file batch nella cartella Avvio e si apre minimizzato quando eseguo l'accesso. Faccio lo stesso con Win7 / Outlook 2010, ma solo un percorso diverso.
jb11,

0

se riesci ad aprire Outlook dalla riga di comando digitando outlook.exe, quindi crea un file batch incluso questo codice start /b /min outlook.exee inseriscilo nella cartella di avvio di Windows.


0

Quando si utilizzano le virgolette con il comando START su Windows 7 con Outlook 2010, si aprirà una nuova finestra di comando, ma Outlook non verrà avviato. Questo accade con le versioni a 32 bit delle versioni Windows 7 Pro ed Enterprise (entrambe con gli aggiornamenti più recenti). Non posso dire se succede con versioni a 64 bit o altre edizioni.

Per risolvere il problema, è necessario omettere le virgolette che circondano il "percorso \ programma" che si desidera avviare con il comando START. Tuttavia, poiché di solito ci sono spazi nel nome del percorso, è probabile che venga visualizzato un errore diverso a meno che non si tronci il percorso (abbreviandolo). I nomi troncati nel percorso possono variare se sono installati più prodotti Microsoft. Per ottenere il percorso troncato corretto, utilizzare la seguente riga di comando al prompt di DOS (in una finestra CMD): FOR / D% T IN ("C: \ Programmi \ Microsoft Office \ Office14 \ Outlook") DO ECHO% ~ sT

Ecco un esempio che ha funzionato per me quando ho usato i risultati ottenuti sopra: START / MIN C: \ Progra ~ 1 \ Micros ~ 1 \ Office14 \ Outlook

NOTA: Office14 fa riferimento alla versione 2010 mentre Office12 fa riferimento alla versione 2007. Notare inoltre che .exe alla fine di Outlook.exe non è richiesto in queste righe di comando.


C'è qualche motivo per cui pensi che sia meglio di start /min "" "FullPathOfOutlook.exe"?
Scott,

0

Ho usato il codice sopra per un tempo considerevole e vorrei ringraziare tutti i precedenti collaboratori per aver condiviso il loro lavoro / miglioramenti / suggerimenti. Di recente, tuttavia, ho riscontrato due problemi spiacevoli e fastidiosi quando viene utilizzato insieme a Windows 10 (64 bit) e Outlook 2016 (64 bit):

  1. L'icona di Outlook nella barra delle applicazioni mostra un overlay "ingranaggio" con il messaggio "Un altro programma sta utilizzando Outlook. Per disconnettere i programmi e uscire da Outlook, fare clic sull'icona di Outlook e quindi fare clic su Esci ora".

  2. Tentativi di aprire Outlook dal menu di scelta rapida "Apri Outlook" (fare clic con il pulsante destro sull'icona di Outlook nella barra delle applicazioni) fa apparire una finestra di dialogo che riporta "Nessun oggetto Explorer attivo trovato". Facendo clic sull'opzione "OK" nella risposta si avvia Outlook (sebbene il problema 1 - overlay ingranaggio) rimanga.

Al fine di risolvere i problemi di cui sopra, mi sono prefissato di trovare un codice simile che avrei potuto compilare per raggiungere gli obiettivi desiderati del poster originale (che rispecchia le mie esigenze).

Il codice seguente viene offerto "così com'è" per il più ampio vantaggio di altri SuperUser, è importante notare che mentre ho testato il codice su due sistemi W10 a 64 bit (entrambi con Office 64 bit installato), devo ancora risolvere un RunTime emissione su un sistema. L'altra funziona perfettamente. I dettagli completi possono essere visualizzati qui, se necessario: /programming/45533261/start-outlook-2016-64-bit-automatically-minimised-to-windows-10-64-bit-syste

Ti terrò valutato su eventuali sviluppi man mano che i test continuano .......

** Aggiornamento rapido ** Ora testato su laptop HP Elitebook 8440P - Windows 10 Pro 64 bit con Office 64 bit + stessi 12 componenti aggiuntivi per Outlook - Funziona perfettamente secondo i requisiti indicati nel post originale sopra .....

** Ulteriore aggiornamento ** Testato su un secondo laptop HP Elitebook 8440P - Windows 10 Pro 64 bit con Office 64 bit + stessi 12 componenti aggiuntivi per Outlook - Errore RunTime riscontrato nuovamente :(

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

Ho fatto qualche ricerca e test e finalmente ho scoperto che il codice vbscript seguente ha funzionato sul mio laptop 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

Basta impostarlo come azione in Utilità di pianificazione e farlo come il modo in cui si crea un'applicazione di avvio.


0

Mi piace la risposta migliore, ma non mi piace che sia in CScript ... Quindi l'ho fatta in PowerShell ...

Funziona perfettamente con Windows 10 e Office 365.

Colore formattato qui: 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)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.