回答:
私はこのスレッドがやや古いことを知っています。ただし、Web検索ではこの問題の多数のアカウントが検索されるため、実用的なソリューションを提供するアカウントを見つけることができませんでした。何らかの理由で、この問題の通常の解決策はすべての場合に機能しません。
新しいテキストファイルを作成し、次のコードを挿入します。
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
拡張子に変更して、WindowsにVBScriptとして認識させるようにします。[スタートアップ]フォルダーにスクリプトまたはスクリプトへのショートカットを配置する代わりに、ログイン時にスクリプトをすぐに実行するためにレジストリを編集できます。
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
。HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Preference\MinToTray
1の値をレジストリに
Outlookにはこの機能は組み込まれていませんが、start
次のコマンドを使用できます。
コマンドを実行するショートカットをStartupフォルダーに作成します
cmd /c start /min "" "FullPathOfOutlook.exe"
またはコマンドを含むバッチファイル
@start /min "" "FullPathOfOutlook.exe"
トレイアイコンを右クリックして、最小化時に非表示をオンにします。
start
多くのスタートアップアプリケーションを最小化するために使用し、それらのすべてで動作します。
start /min "" "C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.exe"
は、Startupフォルダーのバッチファイルで使用し、ログインすると最小化されて開きます。Win7/ Outlook 2010でも同じことを行いますが、パスは異なります。
と入力してコマンドラインからOutlookを開くことができる場合はoutlook.exe
、このコードstart /b /min outlook.exe
を含むバッチファイルを作成 し、Windowsスタートアップフォルダーに配置します。
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"
か?
私はかなりの時間にわたって上記のコードを使用しましたが、以前の貢献者全員に作業/改善/提案を共有してくれたことに感謝します。しかし、最近、Windows 10(64ビット)およびOutlook 2016(64ビット)と組み合わせて使用すると、次の2つの好ましくない刺激的な問題が発生しました。
システムトレイのOutlookアイコンには、「別のプログラムがOutlookを使用しています。プログラムを切断してOutlookを終了するには、Outlookアイコンをクリックし、[今すぐ終了]」というメッセージとともに「歯車」オーバーレイが表示されます。
「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.
いくつかの検索とテストを行ったところ、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
タスクスケジューラでアクションとして設定するだけで、スタートアップアプリケーションの作成方法と同じように実行できます。
私は一番上の答えが好きですが、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)