トレイでOutlookを自動的に起動します


11

ログイン時にOutlookを自動的に起動する方法はありますが、システムトレイ(通知領域)に最小化されていますか?PCを起動したときに受信トレイが顔に表示されるのは望ましくありません。新しいメールが到着したときに通知が個別に表示されるだけです。

問題があれば、Outlook 2003を使用しています。


1
この記事を
ご覧

この回答作る@Reorx
kinokijuf

回答:


15

Windows 7(x64)上のOutlook 2010(x86):起動時にシステムトレイを起動して最小化する

私はこのスレッドがやや古いことを知っています。ただし、Web検索ではこの問題の多数のアカウントが検索されるため、実用的なソリューションを提供するアカウントを見つけることができませんでした。何らかの理由で、この問題の通常の解決策はすべての場合に機能しません。

問題:

  • 最初のログイン時に、Outlookアイコンがタスクバーに表示されたままになり、ウィンドウを復元し、手動で最小化してからOutlookがタスクバーから自身を削除します。
  • Outlookショートカットをスタートアップフォルダーに追加し、Outlookトレイアイコンのコンテキストメニューから[最小化時に非表示]を選択するだけでは問題は解決しません。
  • バッチファイルまたはショートカットから/ Minフラグを使用しても機能しません。

解決:

  1. Outlookを手動で開き、Outlookトレイアイコンを右クリックして、[最小化時に非表示]がオンになっていることを確認します。
  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. スクリプトへのパスで作成した新しい値を変更します。

あなたがすることができ、そして確かに私たちは、右ページの下部にリンクして連絡先を使用して、これらをマージする必要があります-私はあなたが未登録と登録ユーザーを持って気づく
ジャーニーマンオタク

Windows 8.1およびOffice 2013に最適です!変更する必要があるのは、PATH_TO_OUTLOOKがOffice14ではなくOffice15であることだけです。また、あなたが追加する必要がHKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Preference\MinToTray1の値をレジストリに
ネイト

このスクリプトをスタートアップフォルダーから手動で実行すると、最小化された状態で起動しますが、Outlookアイコンがタスクバーに残っています。トレイだけに入れてほしい。Outlookをタスクバーアイコンでアクティブにしてから最小化すると、トレイに移動し、期待どおりにタスクバーを離れます。
ローランドー16

@rolandowタスクバーにアイコンが残る問題は、問題の説明の最初の部分で説明されています。正しく動作しない場合は、タイミングの問題である可能性があります。提案されたようにレジストリに追加すると、通常、起動時にWindowsがアイテムを実行する方法に起因するタイミングの問題が解決されることがわかりました。もう1つ試すことができるのは、Wscript.Sleep(XXX)値の値を変更することです。
ジェイソン

7

Outlookにはこの機能は組み込まれていませんが、start次のコマンドを使用できます。

  1. コマンドを実行するショートカットをStartupフォルダーに作成します

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

    またはコマンドを含むバッチファイル

    @start /min "" "FullPathOfOutlook.exe"
    
  2. トレイアイコンを右クリックして、最小化時に非表示をオンにします。


動作しません。Outlookは引き続き最大化されます。
-kinokijuf

たぶん私は明確ではなかった。コンピューターで上記の方法(バッチファイル)を使用しています。できます。
デニス

Outlookのバージョンは何ですか?
-kinokijuf

Outlook 2007、しかしそれは問題ではありません。私はstart多くのスタートアップアプリケーションを最小化するために使用し、それらのすべてで動作します。
デニス

デニスが言っていることを確認できます。Outlook 2003を搭載したXPマシンでstart /min "" "C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.exe"は、Startupフォルダーのバッチファイルで使用し、ログインすると最小化されて開きます。Win7/ Outlook 2010でも同じことを行いますが、パスは異なります。
jb11

0

と入力してコマンドラインからOutlookを開くことができる場合はoutlook.exe、このコードstart /b /min outlook.exeを含むバッチファイルを作成 し、Windowsスタートアップフォルダーに配置します。


0

Outlook 2010を搭載したWindows 7でSTARTコマンドで引用符を使用すると、新しいコマンドウィンドウが開きますが、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を指します。また、Outlook.exeの最後にある.exeはこれらのコマンドラインでは必要ないことに注意してください。


これがより良いと思う理由はありますstart /min "" "FullPathOfOutlook.exe"か?
スコット14

0

私はかなりの時間にわたって上記のコードを使用しましたが、以前の貢献者全員に作業/改善/提案を共有してくれたことに感謝します。しかし、最近、Windows 10(64ビット)およびOutlook 2016(64ビット)と組み合わせて使用​​すると、次の2つの好ましくない刺激的な問題が発生しました。

  1. システムトレイのOutlookアイコンには、「別のプログラムがOutlookを使用しています。プログラムを切断してOutlookを終了するには、Outlookアイコンをクリックし、[今すぐ終了]」というメッセージとともに「歯車」オーバーレイが表示されます。

  2. 「Outlookを開く」コンテキストメニュー(トレイのOutlookアイコンを右クリック)項目からOutlookを開こうとすると、ダイアログボックスに「アクティブなエクスプローラーオブジェクトが見つかりません」と表示されます。応答で[OK]オプションをクリックすると、Outlookが起動します(ただし、問題1-cogオーバーレイ)。

上記の問題を解決するために、元のポスターの目的(自分の要件を反映している)を満たすためにコンパイルできる類似のコードを見つけることを設定しました。

以下のコードは、他のスーパーユーザーの幅広い利益のために「現状のまま」提供されますが、2つのW10 64ビットシステム(両方とも64ビットOfficeがインストールされている)でコードをテストしている間に、RunTimeを解決することに注意することが重要です1つのシステムの問題。他の機能は問題なく機能します。必要に応じて、詳細をここで表示できます:https : //stackoverflow.com/questions/45533261/start-outlook-2016-64-bit-automatically-minimised-to-windows-10-64-bit-syste

テストが継続するにつれて、開発について評価していきます.......

**クイックアップデート** HP Elitebook 8440Pラップトップでテスト済み-Windows 10 Pro 64ビットとOffice 64ビット+同じ12個のOutlookアドオン-上記の最初の投稿で概説した要件に従って機能します.....

**さらに更新** 2台目のHP Elitebook 8440Pラップトップでテスト済み-Office 64ビットを搭載したWindows 10 Pro 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

いくつかの検索とテストを行ったところ、Win10ラップトップで次のvbscriptコードが機能することがわかりました。

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)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.