답변:
나는이 실이 다소 오래되었다는 것을 안다. 그러나 웹 검색 으로이 문제에 대한 많은 계정이 나타나고 작동하는 솔루션을 제공하는 것을 찾지 못했습니다. 어떤 이유로 든이 문제에 대한 일반적인 해결책은 모든 경우에 작동하지 않습니다.
새 텍스트 파일을 작성하고 다음 코드를 삽입하십시오.
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
명령을 사용할 수 있습니다 .
시작 폴더에 명령을 실행하는 바로 가기를 만듭니다.
cmd /c start /min "" "FullPathOfOutlook.exe"
또는 명령이 포함 된 배치 파일
@start /min "" "FullPathOfOutlook.exe"
트레이 아이콘을 마우스 오른쪽 버튼으로 클릭하고 최소화시 숨기기를 선택 합니다.
start
많은 시작 응용 프로그램을 최소화 하는 데 사용 하며 모든 응용 프로그램에서 작동합니다.
start /min "" "C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.exe"
에서는 시작 폴더의 배치 파일을 사용 하며 로그인하면 최소화되어 열립니다. Win7 / Outlook 2010과 동일하지만 경로가 다릅니다.
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는 이러한 명령 줄에 필요하지 않습니다.
start /min "" "FullPathOfOutlook.exe"
할까요?
위의 코드를 상당한 시간 동안 사용했으며 이전의 모든 기고자에게 작업 / 개선 / 제안을 공유해 주셔서 감사합니다. 그러나 최근 Windows 10 (64 Bit) 및 Outlook 2016 (64 Bit)과 함께 사용할 때 두 가지 환영받지 못하고 자극적 인 문제가 발생했습니다.
시스템 트레이의 Outlook 아이콘에 "다른 프로그램이 Outlook을 사용하고 있습니다. 프로그램 연결을 끊고 Outlook을 종료하려면 Outlook 아이콘을 클릭 한 다음 지금 끝내기를 클릭하십시오"라는 메시지와 함께 '코그'오버레이가 표시됩니다.
'Outlook 열기'상황에 맞는 메뉴 (트레이에서 Outlook 아이콘을 마우스 오른쪽 단추로 클릭) 항목에서 Outlook을 열려고하면 "활성 탐색기 개체가 없습니다"라는 대화 상자가 나타납니다. 응답에서 "확인"옵션을 클릭하면 Outlook이 시작되지만 (문제 1-장부 오버레이) 남아 있습니다.
위의 문제를 해결하기 위해 필자는 원래 포스터의 원하는 목표를 달성하기 위해 컴파일 할 수있는 유사한 코드를 찾는 것에 대해 설정했습니다.
아래 코드는 다른 수퍼 유저의 더 넓은 혜택을 위해 "있는 그대로"제공됩니다. 두 개의 W10 64 비트 시스템 (64 비트 Office가 설치된 경우)에서 코드를 테스트하는 동안 여전히 RunTime을 해결해야합니다. 하나의 시스템에서 문제가 발생합니다. 다른 기능은 완벽하게 작동합니다. 필요한 경우 여기에서 전체 세부 정보를 볼 수 있습니다. /programming/45533261/start-outlook-2016-64-bit-automatically-minimised-to-windows-10-64-bit-syste
테스트가 계속 진행되는 동안 개발에 대한 평가를 계속하겠습니다 .......
** 빠른 업데이트 ** 이제 HP Elitebook 8440P 랩탑에서 테스트되었습니다-Office 64 비트가 포함 된 Windows 10 Pro 64 비트 + 동일한 12 Outlook 애드온-위의 원래 게시물에 요약 된 요구 사항에 따라 완벽하게 작동합니다 .....
** 추가 업데이트 ** 두 번째 HP Elitebook 8440P 랩톱에서 테스트-Windows 10 Pro 64 비트 (Office 64 비트 포함) + 동일한 12 Outlook Addons-런타임 오류가 다시 발생했습니다. (
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.
나는 최고 답변을 좋아하지만 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)