ログイン時にOutlookを自動的に起動する方法はありますが、システムトレイ(通知領域)に最小化されていますか? PCを起動したときに自分の受信トレイを顔に表示したくありません。新着メールが到着したときの個別の通知のみです。
必要に応じて、Outlook 2003を使用しています。
このスレッドは少し古いことを知っています。しかし、ウェブ検索でこの問題に関する多数の説明が表示され、実用的な解決策を提供するものを見つけることができませんでした。何らかの理由で、この問題の通常の解決策がすべてのケースで機能するわけではありません。
新しいテキストファイルを作成し、次のコードを挿入します。
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
重要!インストールの実際の場所を反映するように、PATH_TO_Outlook
を必ず変更してください。
.vbs
拡張子を付けてテキストファイルの名前を任意に変更します。スクリプトまたはスクリプトへのショートカットをスタートアップフォルダーに配置する代わりに、レジストリを編集して、ログイン時にスクリプトをすぐに実行できます。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
に、必要に応じて新しいString Valueまたは新しいExpandable String Valueを追加します。Outlookにはこの機能が組み込まれていませんが、 start
コマンドを使用できます。
コマンドを実行するショートカットをスタートアップフォルダーに作成します
cmd /c start /min "" "FullPathOfOutlook.exe"
またはコマンドを含むバッチファイル
@start /min "" "FullPathOfOutlook.exe"
トレイアイコンを右クリックして、最小化時に非表示をオンにします。
コマンドラインからOutlook.exe
と入力してOutlookを開くことができる場合は、このコードstart /b /min Outlook.exe
を含むバッチファイルを作成し、Windowsスタートアップフォルダーに配置します。
私はいくつかの検索とテストを行い、ついに次の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
タスクスケジューラでアクションとして設定し、スタートアップアプリケーションを作成する方法と同じように設定します。
一番上の答えは好きですが、CScriptにあるのは好きではありません... PowerShellで作成しました...
Windows 10およびOffice 365で問題なく動作します。
ここでフォーマットされた色: https://Gist.github.com/NotoriousPyro/d30a96d2a89cf783ef3081b13d4816a
<#
.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)
上記のコードをかなり長い間使用してきましたが、以前のすべての貢献者が作業/改善点/提案を共有してくれたことに感謝します。しかし最近、Windows 10(64ビット)およびOutlook 2016(64ビット)と組み合わせて使用したときに、2つの望ましくないいらいらする問題が発生しました。
システムトレイのOutlookアイコンに「cog」オーバーレイが表示され、「別のプログラムがOutlookを使用しています。プログラムを切断してOutlookを終了するには、Outlookアイコンをクリックして、[今すぐ終了]をクリックしてください」と表示されます。
[Outlookを開く]コンテキストメニュー(トレイのOutlookアイコンを右クリック)アイテムからOutlookを開こうとすると、ダイアログボックスが表示され、「アクティブなExplorerオブジェクトが見つかりません」と報告されます。応答で[OK]オプションをクリックすると、Outlookが起動します(ただし、問題1-歯車オーバーレイ)が残ります。
上記の問題を解決するために、元のポスターの目的(自分の要件を反映している)を満たすためにコンパイルできる同様のコードを見つけることに取り掛かりました。
以下のコードは、他のスーパーユーザーの幅広い利益のために「現状のまま」提供されていますが、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ラップトップでテスト済み-Windows 10 Pro 64ビットとOffice 64ビット+同じ12 Outlookアドオン-ランタイムエラーが再び発生しました:(
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.
Outlook 2010を搭載したWindows 7でSTARTコマンドで引用符を使用すると、新しいコマンドウィンドウが開きますが、Outlookは起動しません。これは、32ビットバージョンのWindows 7 ProおよびEnterpriseエディションで発生します(どちらも最新のアップデートが適用されています)。 64ビットバージョンまたは他のエディションで発生するかどうかはわかりません。
この問題を解決するには、STARTコマンドで起動する「path\program」を囲む引用符を省略する必要があります。ただし、パス名には通常スペースが含まれているため、パスを切り詰める(短くする)まで、別のエラーが発生する可能性があります。複数の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はこれらのコマンドラインでは必要ないことに注意してください。