เริ่ม Outlook โดยอัตโนมัติในถาด


11

มีวิธีการเริ่มต้น Outlook โดยอัตโนมัติเมื่อเข้าสู่ระบบ แต่ย่อเล็กสุดไปที่ถาดระบบ (พื้นที่แจ้งเตือน)? ฉันไม่ต้องการให้กล่องจดหมายเข้าของฉันปรากฏในหน้าของฉันเมื่อฉันเริ่มพีซีของฉันเฉพาะการแจ้งเตือนแบบไม่ต่อเนื่องเมื่อมีจดหมายใหม่มาถึง

ฉันใช้ Outlook 2003 ถ้าเป็นเช่นนั้น


1
ดูที่บทความนี้: support.microsoft.com/kb/251340
Reorx

@Reorx ตอบคำถามนี้
kinokijuf

คำตอบ:


15

Outlook 2010 (x86) บน Windows 7 (x64): เรียกใช้และย่อขนาดให้เล็กสุดเพื่อ System Tray เมื่อเริ่มต้น

ฉันรู้ว่ากระทู้นี้ค่อนข้างเก่า อย่างไรก็ตามการค้นเว็บทำให้เกิดบัญชีจำนวนมากของปัญหานี้และฉันไม่สามารถค้นหาบัญชีที่มีวิธีแก้ปัญหาที่ใช้งานได้ ไม่ว่าจะด้วยเหตุผลใดก็ตามการแก้ไขปัญหาปกติของปัญหานี้ไม่สามารถใช้ได้ในทุกกรณี

ปัญหา:

  • ในการเข้าสู่ระบบครั้งแรกไอคอน 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 ที่จัดเก็บไว้ภายในไฟล์ปฏิบัติการ

การปรับปรุงประสิทธิภาพ:

แทนที่จะวางสคริปต์หรือทางลัดไปยังสคริปต์ในโฟลเดอร์ Startup คุณสามารถแก้ไขรีจิสทรีเพื่อเรียกใช้สคริปต์ได้ทันทีที่เข้าสู่ระบบ

  1. ทำตามขั้นตอนที่ 1-4 ในส่วนโซลูชันด้านบน
  2. วางสคริปต์ได้ทุกที่ที่คุณต้องการ
  3. เพิ่มใหม่ค่าสตริงหรือใหม่ค่าสตริงที่ขยายได้HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Runถ้าจำเป็นที่จะต้องคีย์รีจิสทรี
  4. ตั้งชื่อมันตามที่คุณต้องการ
  5. แก้ไขค่าใหม่ที่คุณสร้างด้วยพา ธ ไปยังสคริปต์

ฉันสังเกตเห็นว่าคุณมีผู้ใช้ที่ไม่ได้ลงทะเบียนและผู้ใช้ที่ลงทะเบียนแล้ว - คุณสามารถและควรรวมสิ่งเหล่านี้ด้วยการใช้ลิงก์ติดต่อเราที่ด้านล่างของหน้า
Journeyman Geek

ใช้งานได้ดีกับ Windows 8.1 และ Office 2013! สิ่งเดียวที่ต้องเปลี่ยนคือ PATH_TO_OUTLOOK ควรเป็น Office15 แทนที่จะเป็น Office14 นอกจากนี้คุณต้องเพิ่มHKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Preference\MinToTrayรีจิสทรีด้วยค่า 1
เนท

เมื่อฉันรันสคริปต์นี้ด้วยตนเองจากโฟลเดอร์เริ่มต้นของฉันมันจะเริ่มย่อให้เล็กสุด แต่ไอคอน Outlook จะติดอยู่ในทาสก์บาร์ของฉัน ฉันชอบที่ถาดของฉันเท่านั้น เมื่อฉันเปิดใช้งาน Outlook ด้วยไอคอนแถบงานและย่อให้เล็กสุดมันจะไปที่ถาดและออกจากแถบงานตามที่คาดไว้
rolandow

@rolandow ปัญหาเกี่ยวกับไอคอนที่อยู่ในทาสก์บาร์ถูกกล่าวถึงในส่วนแรกของคำอธิบายปัญหา หากทำงานไม่ถูกต้องอาจเป็นปัญหาเรื่องเวลา ฉันพบว่าการเพิ่มลงในรีจิสทรีตามที่แนะนำมักจะแก้ไขปัญหาเวลาใด ๆ เนื่องจากวิธีที่ Windows รันรายการในระหว่างการเริ่มต้น อีกสิ่งหนึ่งที่คุณสามารถลองได้คือการเปลี่ยนค่าของ Wscript.Sleep (XXX)
Jason

7

Outlook ไม่มีคุณสมบัติในตัวสำหรับสิ่งนี้ แต่คุณสามารถใช้startคำสั่ง:

  1. สร้างทางลัดในโฟลเดอร์เริ่มต้นของคุณที่ชี้ไปที่เรียกใช้คำสั่ง

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

    หรือไฟล์แบตช์ที่มีคำสั่ง

    @start /min "" "FullPathOfOutlook.exe"
    
  2. คลิกขวาที่ไอคอนถาดและตรวจสอบซ่อนเมื่อลดลง


ไม่สำเร็จ. Outlook ยังคงเริ่มขยายใหญ่สุด
kinokijuf

บางทีฉันอาจจะไม่ชัดเจน ฉันใช้วิธีการข้างต้น (พร้อมไฟล์แบทช์) บนคอมพิวเตอร์ของฉัน มันได้ผล.
เดนนิส

คุณมี Outlook เวอร์ชันใด
kinokijuf

Outlook 2007 แต่นั่นไม่สำคัญ ฉันใช้startเพื่อลดแอปพลิเคชั่นเริ่มต้นให้เหลือน้อยที่สุดและใช้งานได้กับทุกแอปพลิเคชัน
เดนนิส

ฉันสามารถยืนยันสิ่งที่เดนนิสพูด บนเครื่อง XP ของฉันกับ Outlook 2003 ฉันใช้start /min "" "C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.exe"ในแบตช์ไฟล์ในโฟลเดอร์ Startup และจะลดลงเมื่อฉันเข้าสู่ระบบฉันทำเช่นเดียวกันกับ Win7 / Outlook 2010 ของฉัน แต่เป็นเส้นทางที่แตกต่างกัน
jb11

0

หากคุณสามารถเปิดมุมมองจากบรรทัดคำสั่งโดยพิมพ์outlook.exeให้สร้างแบตช์ไฟล์รวมถึงรหัสนี้ start /b /min outlook.exeและวางไว้ในโฟลเดอร์เริ่มต้นของ windows


0

เมื่อใช้เครื่องหมายคำพูดกับคำสั่ง START ใน Windows 7 กับ Outlook 2010 หน้าต่างคำสั่งใหม่จะเปิดขึ้น แต่ Outlook จะไม่เปิดขึ้น สิ่งนี้เกิดขึ้นกับ Windows 7 Pro รุ่น 32 บิตและรุ่น Enterprise (ทั้งที่มีการปรับปรุงล่าสุด) ฉันไม่สามารถบอกได้ว่ามันเกิดขึ้นกับรุ่น 64 บิตหรือรุ่นอื่น ๆ

ในการแก้ไขปัญหาดังกล่าวคุณต้องละเว้นเครื่องหมายคำพูดใด ๆ ที่อยู่รอบ ๆ "path \ program" ที่คุณต้องการเปิดด้วยคำสั่ง START อย่างไรก็ตามเนื่องจากมักจะมีช่องว่างในชื่อพา ธ คุณอาจได้รับข้อผิดพลาดที่แตกต่างออกไปเว้นแต่คุณจะตัดทอนเส้นทาง (ย่อให้เล็กลง) ชื่อที่ถูกตัดทอนในพา ธ สามารถเปลี่ยนแปลงได้หากคุณมีผลิตภัณฑ์ Microsoft หลายตัวติดตั้ง ในการรับเส้นทางที่ถูกตัดทอนให้ใช้บรรทัดคำสั่งต่อไปนี้ที่พรอมต์ DOS (ในหน้าต่าง CMD): FOR / D% T IN ("Office \ Office14 \ Outlook" \ C: \ Program Files \ Microsoft C: \ Program ") ทำ ECHO ~ sT

นี่คือตัวอย่างที่ใช้ได้กับฉันเมื่อใช้ผลลัพธ์ที่ได้จากด้านบน: เริ่มต้น / ต่ำกว่า C: \ Progra ~ 1 \ Micros ~ 1 \ Office14 \ Outlook

หมายเหตุ: Office14 อ้างถึงรุ่น 2010 ในขณะที่ Office12 อ้างถึงรุ่น 2007 นอกจากนี้โปรดทราบว่าไม่จำเป็นต้องใช้. exe ที่ส่วนท้ายของ Outlook.exe ในบรรทัดคำสั่งเหล่านี้


มีเหตุผลบางอย่างที่คุณคิดว่าดีกว่านี้start /min "" "FullPathOfOutlook.exe"หรือไม่?
สกอตต์

0

ฉันใช้รหัสด้านบนเป็นระยะเวลาพอสมควรและขอขอบคุณผู้มีส่วนร่วมก่อนหน้านี้ทุกคนสำหรับการแบ่งปันผลงาน / การปรับปรุง / ข้อเสนอแนะของพวกเขา อย่างไรก็ตามเมื่อเร็ว ๆ นี้ฉันพบปัญหาสองอย่างที่ไม่พึงประสงค์และน่ารำคาญเมื่อใช้ร่วมกับ Windows 10 (64 บิต) และ Outlook 2016 (64 บิต) สิ่งเหล่านี้คือ:

  1. ไอคอน Outlook ใน System Tray แสดงการซ้อนทับ 'cog' พร้อมข้อความ "โปรแกรมอื่นกำลังใช้ Outlook ในการยกเลิกการเชื่อมต่อโปรแกรมและออกจาก Outlook ให้คลิกที่ไอคอน Outlook จากนั้นคลิก Exit Now"

  2. ความพยายามในการเปิด Outlook จากรายการบริบท 'เปิด Outlook' (คลิกขวาที่ไอคอน Outlook ในถาด) ทำให้กล่องโต้ตอบปรากฏขึ้นเพื่อรายงานว่า "ไม่พบวัตถุ explorer ที่ใช้งานอยู่" การคลิกตัวเลือก "ตกลง" ในการตอบกลับจะเป็นการเปิดใช้งาน Outlook (แม้ว่าปัญหา 1 - การซ้อนทับฟันเฟือง) ยังคงอยู่

เพื่อแก้ไขปัญหาข้างต้นฉันตั้งค่าเกี่ยวกับการค้นหารหัสที่คล้ายกันซึ่งฉันสามารถรวบรวมเพื่อตอบสนองวัตถุประสงค์ที่ต้องการของโปสเตอร์ต้นฉบับ (ซึ่งสะท้อนความต้องการของฉันเอง)

รหัสด้านล่างนี้มีให้ "ตามที่เป็น" เพื่อประโยชน์ที่มากขึ้นของ SuperUsers อื่น ๆ เป็นสิ่งสำคัญที่จะต้องทราบว่าในขณะที่ฉันได้ทดสอบโค้ดบนระบบ W10 64 บิตสองระบบ (ทั้งที่ติดตั้ง Office 64 บิต) ฉันยังคงแก้ไข RunTime ปัญหาของหนึ่งระบบ ฟังก์ชั่นอื่น ๆ ไม่มีที่ติ รายละเอียดทั้งหมดสามารถดูได้ที่นี่หากต้องการ: /programming/45533261/start-outlook-2016-64-bit-automatically-minimised-to-windows-10-64-bit-syste

ฉันจะให้คุณประเมินการพัฒนาใด ๆ ในขณะที่การทดสอบยังคง .......

** อัพเดทด่วน ** ผ่านการทดสอบบน HP Elitebook 8440P แล็ปท็อป - Windows 10 Pro 64 บิตพร้อม Office 64 บิต + 12 Addons Outlook เดียวกัน - ฟังก์ชั่นไม่มีที่ติตามข้อกำหนดที่ระบุไว้ในโพสต์ต้นฉบับด้านบน .....

** การอัปเดตเพิ่มเติม ** ทดสอบในแล็ปท็อป HP Elitebook 8440P ตัวที่สอง - Windows 10 Pro 64 บิตพร้อม Office 64 บิต + 12 Addons 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

ฉันทำการค้นหาและทดสอบและในที่สุดก็พบว่ารหัส 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

เพียงตั้งเป็นแอคชั่นใน Task Scheduler และทำตามวิธีที่คุณสร้างแอปพลิเคชันเริ่มต้น


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.