Inicie o Outlook automaticamente na bandeja


11

Existe uma maneira de iniciar o Outlook automaticamente no logon, mas minimizado na bandeja do sistema (área de notificação)? Não quero que minha caixa de entrada seja mostrada na minha cara quando inicio o PC, apenas uma notificação discreta quando novos e-mails chegarem.

Estou usando o Outlook 2003, se isso importa.


1
Dê uma olhada neste artigo: support.microsoft.com/kb/251340
Reorx

@Reorx tornar esta uma resposta
kinokijuf

Respostas:


15

Outlook 2010 (x86) no Windows 7 (x64): inicie e minimize a bandeja do sistema na inicialização

Eu sei que esta discussão é um pouco antiga; no entanto, uma pesquisa na web exibe várias contas desse problema e não consegui encontrar uma que ofereça uma solução funcional. Por qualquer motivo, as soluções normais para esse problema não funcionam em todos os casos.

Problema:

  • No logon inicial, o ícone do Outlook permanece visível na barra de tarefas, forçando um a restaurar a janela e minimizando manualmente antes que o Outlook se remova da barra de tarefas.
  • Simplesmente adicionar o atalho do Outlook à pasta Inicialização e selecionar Ocultar quando minimizado no menu de contexto do ícone da bandeja do Outlook não resolve o problema.
  • Usar o sinalizador / Min de um arquivo em lotes ou atalho também não funciona.

Solução:

  1. Abra o Outlook manualmente e clique com o botão direito do mouse no ícone da bandeja do Outlook para verificar se Ocultar quando minimizado está marcado.
  2. Crie um novo arquivo de texto e insira o seguinte código.

    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! Altere PATH_TO_OUTLOOKpara refletir o local real da sua instalação.

  4. Renomeie o arquivo de texto para o que desejar com uma .vbsextensão para forçar o Windows a reconhecê-lo como um VBScript.

Opcional:

  1. Armazene o script em qualquer lugar que você desejar.
  2. Crie um atalho para o script e coloque-o na pasta Inicializar.
  3. Clique com o botão direito do mouse no atalho e selecione propriedades.
  4. Usando o botão Alterar ícone , navegue até o local do executável do Outlook e selecione o ícone do Outlook armazenado no executável.

Melhoria de desempenho:

Em vez de colocar o script ou um atalho para o script na pasta Inicialização, o registro pode ser editado para executar o script imediatamente no login.

  1. Siga as etapas de 1 a 4 na seção Solução acima.
  2. Coloque o script em qualquer lugar que você desejar.
  3. Adicione um novo valor de cadeia ou um novo valor de cadeia expansível, se necessário, à chave do Registro HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run.
  4. Nomeie como quiser.
  5. Modifique o novo valor que você criou com o caminho para o script.

Percebo que você tem um registro e um utilizador registado - Você pode, e certamente deve se fundir estes usando o contato nos ligar na parte inferior direita da página
Journeyman Geek

Funciona muito bem com o Windows 8.1 e o Office 2013! A única coisa que precisa mudar é que o PATH_TO_OUTLOOK deve ser o Office15 em vez do Office14. Além disso, você precisa adicionar HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Preference\MinToTrayao registro o valor 1.
Nate

Quando executo esse script manualmente da minha pasta Inicialização, ele é minimizado, mas o ícone do Outlook está preso na minha barra de tarefas. Eu gostaria apenas na minha bandeja. Quando eu ativo o Outlook com o ícone da barra de tarefas e o minimizo, ele passa para a bandeja e sai da barra de tarefas conforme o esperado.
Rolandow

@rolandow O problema com o ícone na barra de tarefas é mencionado na primeira parte da descrição do problema. Se não estiver funcionando corretamente, provavelmente é um problema de tempo. Descobri que adicioná-lo ao registro, conforme sugerido, geralmente resolve problemas de tempo devido à maneira como o Windows executa os itens durante a inicialização. Outra coisa que você pode tentar é alterar o valor do valor Wscript.Sleep (XXX).
Jason

7

O Outlook não possui recurso interno para isso, mas você pode usar o startcomando:

  1. Crie um atalho na sua pasta de inicialização apontando para executar o comando

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

    ou um arquivo em lotes contendo o comando

    @start /min "" "FullPathOfOutlook.exe"
    
  2. Clique com o botão direito do mouse no ícone da bandeja e marque Ocultar quando minimizado .


Não funciona. O Outlook ainda inicia maximizado.
precisa saber é o seguinte

Talvez eu não estivesse claro. Estou usando o método acima (com o arquivo em lotes) no meu computador. Funciona.
Dennis

Qual versão do Outlook você possui?
precisa saber é o seguinte

Outlook 2007, mas isso não deve importar. Eu uso startpara minimizar muitos aplicativos de inicialização e funciona com todos eles.
Dennis

Posso confirmar o que Dennis está dizendo. Na minha máquina XP com o Outlook 2003, uso start /min "" "C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.exe"em um arquivo em lotes na pasta Inicialização e ele é aberto minimizado ao efetuar o login. Faço o mesmo com o Win7 / Outlook 2010, mas apenas com um caminho diferente.
Jb11

0

se você conseguir abrir o outlook da linha de comando digitando outlook.exe, crie um arquivo em lotes incluindo esse código start /b /min outlook.exee coloque-o na pasta de inicialização do Windows.


0

Ao usar aspas com o comando INICIAR no Windows 7 com o Outlook 2010, uma nova janela de comando será aberta, mas o Outlook não será iniciado. Isso acontece com as versões de 32 bits das edições Windows 7 Pro e Enterprise (ambas com as atualizações mais recentes). Não sei dizer se isso acontece com versões de 64 bits ou outras edições.

Para resolver esse problema, você deve omitir as aspas que cercam o "caminho \ programa" que deseja iniciar com o comando START. No entanto, como geralmente há espaços no nome do caminho, você provavelmente receberá um erro diferente, a menos que trunque o caminho (reduza-o). Os nomes truncados no caminho podem variar se você tiver vários produtos da Microsoft instalados. Para obter o caminho truncado correto, use a seguinte linha de comando no prompt do DOS (em uma janela CMD): FOR / D% T IN ("C: \ Arquivos de programas \ Microsoft Office \ Office14 \ Outlook") DO ECHO% ~ sT

Aqui está um exemplo que funcionou para mim ao usar os resultados obtidos acima: START / MIN C: \ Progra ~ 1 \ Micros ~ 1 \ Office14 \ Outlook

NOTA: Office14 se refere à versão 2010 enquanto Office12 se refere à versão 2007. Observe também que o .exe no final do Outlook.exe não é necessário nessas linhas de comando.


Existe alguma razão para você achar que isso é melhor do que start /min "" "FullPathOfOutlook.exe"?
Scott Scott

0

Eu uso o código acima há um tempo considerável e gostaria de agradecer a todos os colaboradores anteriores por compartilharem seu trabalho / melhorias / sugestões. Recentemente, no entanto, experimentei dois problemas indesejáveis ​​e irritantes quando usado em conjunto com o Windows 10 (64 bits) e o Outlook 2016 (64 bits):

  1. O ícone do Outlook na bandeja do sistema exibe uma sobreposição de 'engrenagem' com a mensagem "Outro programa está usando o Outlook. Para desconectar programas e sair do Outlook, clique no ícone do Outlook e clique em Sair agora".

  2. Tenta abrir o Outlook no item de menu 'Abrir Outlook' (clique com o botão direito do mouse no ícone do Outlook na bandeja) faz com que uma caixa de diálogo apareça relatando "Nenhum objeto explorador ativo encontrado". Clicar na opção "OK" na resposta inicia o Outlook (embora o problema 1 - sobreposição de engrenagem) permaneça.

Para resolver os problemas acima, comecei a encontrar um código semelhante que pudesse compilar para atender aos objetivos desejados do pôster original (que refletem meus próprios requisitos).

O código abaixo é oferecido "como está" para o benefício mais amplo de outros superusuários, é importante observar que, embora eu tenha testado o código em dois sistemas W10 de 64 bits (ambos com o Office de 64 bits instalado), ainda estou para resolver um RunTime problema em um dos sistemas. As outras funções funcionam perfeitamente. Detalhes completos podem ser visualizados aqui, se necessário: /programming/45533261/start-outlook-2016-64-bit-automatically-minimised-to-windows-10-64-bit-syste

Vou mantê-lo informado sobre quaisquer desenvolvimentos à medida que os testes continuarem .......

** Atualização rápida ** Agora testado no laptop HP Elitebook 8440P - Windows 10 Pro 64 bits com Office 64 bits + mesmos 12 complementos do Outlook - Funções perfeitas conforme os requisitos descritos na postagem original acima .....

** Atualização adicional ** Testado em um segundo laptop HP Elitebook 8440P - Windows 10 Pro 64 bits com Office 64 bits + mesmos 12 complementos do Outlook - Erro no RunTime novamente :(

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

Eu fiz algumas pesquisas e testes e finalmente descobri que o código vbscript a seguir funcionava no meu 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 defini-lo como uma ação no Agendador de tarefas e fazer como você cria um aplicativo de inicialização.


0

Gosto da resposta principal, mas não gosto que esteja no CScript ... Então, eu o fiz no PowerShell ...

Funciona perfeitamente com o Windows 10 e o Office 365.

Cor formatada aqui: 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)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.