Outlook Takvim hatırlatıcılarının Windows 7'de en üstte kalmasını sağlama


123

Windows 7'yi kullanmaya yeni başladım ve Outlook hatırlatıcılarımı nasıl açıp belirgin şekilde göstereceklerini bilmek istiyorum. Görev çubuğundaki Outlook yığındaki başka bir pencere olarak gizlice açılmaya devam ediyorlar. Sonuç olarak, onlara bakmaya devam ediyorum çünkü onlar her şeyin arkasında ortaya çıkıyorlar.

Onları gözden kaçırmak için daha kolay hale nasıl getirebilirim?

(Açıkçası, çoğu kişi kendilerini ön plana çıkaran iğrenç uygulamalar istemiyor. Ancak bu tür davranışların istendiği birkaç yer var ve Outlook takvim hatırlatmaları bunlardan biri.)


16
Bu çok gerekli. Biri yoğun yoğunlaşmaya düştüğünde, bir hatırlatıcıyı kaçırmak ve yalnızca geç kaldıktan sonra diğer pencerelerin altına gömülmüş olduğunu fark etmek çok kolaydır. Bazı basit ayarlarla mümkün olmaması çok saçma. Derhal alamazsanız, hatırlatmanın ne faydası var ?!
Mario

Yanıtlar:


61

Outlook 2010 ile aynı sorunu yaşadım. Aşağıda belirtilen adımları kullanın, bir cazibe gibi çalışır. Tüm makroları etkinleştirmeyi unutmayın: Güven Merkezi> Makro Ayarları.

  • Daha sonra bir Dijital sertifika oluşturun: Başlat'a tıklayın ve 'sertifika'yı yazın,' VBA Projeleri için Dijital Sertifika'yı seçin.
  • Sertifikanız için bir ad girin. Tamam'ı tıklayın. Outlook'u açın ve VBA düzenleyicisini başlatmak için Alt+ F11tuşuna basın.
  • Soldaki ağaçta 'Microsoft Office Outlook Objects'i genişletin ve' ThisOutlookSession 'üzerine çift tıklayın
  • Bu koda yapıştırın:

    Private Declare PtrSafe Function FindWindowA Lib "user32" _
    (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    
    Private Declare PtrSafe Function SetWindowPos Lib "user32" ( _
    ByVal hwnd As Long, ByVal hWndInsertAfter As Long, _
    ByVal X As Long, ByVal Y As Long, ByVal cx As Long, _
    ByVal cy As Long, ByVal wFlags As Long) As Long
    
    Private Const SWP_NOSIZE = &H1
    Private Const SWP_NOMOVE = &H2
    Private Const FLAGS As Long = SWP_NOMOVE Or SWP_NOSIZE
    Private Const HWND_TOPMOST = -1
    
    Private Sub Application_Reminder(ByVal Item As Object)
    Dim ReminderWindowHWnd As Variant
    On Error Resume Next
    ReminderWindowHWnd = FindWindowA(vbNullString, "1 Reminder")
    SetWindowPos ReminderWindowHWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS
    
    End Sub
    
  • Çalışacak şekilde Makroyu imzalayın: Araçlar> Dijital İmza ... ve daha önce oluşturduğunuz sertifikayı seçin

  • VBA penceresini kapatın
  • Dosya> Seçenekler> Güven Merkezi> Güven Merkezi Ayarları> Makro Ayarları bölümündeki tüm makroları etkinleştir

3
farkettim, bazen (normalde Outlook'u başlattığınızda) ilk hatırlatıcı üstte kalmayacak. Kapat'ı tıkladığınızda ve hatırlatıcıyı kapattığınızda, izleyen tüm hatırlatıcılar üstte kalır. Neden bilmiyorum.
Gullu

3
On Error Resume NextSadece Bu sadece standart VBA kullanımıdır .. o Sub için geçerlidir ve sadece çökmesini bütün makro engeller.
Jeff Martin,

3
İlk yorumunda Güllü ile aynı sorunu yaşadım. Bu soruna geçici bir çözüm bulmak için, görünümü (veya bilgisayarımı) yeniden başlattıktan sonra ilk hatırlatıcı için bir mesaj kutusu gösteriyorum. Private messageAlreadyShown As Boolean Private Sub Application_Reminder (Object ByVal Öğe) On Error Resume Next Ardından messageAlreadyShown değil ise MsgBox "First Reminder", vbSystemModal, "" End If messageAlreadyShown = True ReminderWindow = FindWindowA (vbNullString, "1 Hatırlatma") SetWindowPos ReminderWindow, HWND_TOPMOST, 0, 0, 0, 0, FLAGS End Sub
helios456

3
Makro için kendinden imzalı bir sertifika oluşturmak için aracı bulmakta sorun yaşadım. SELFCERT.EXE aracı C: \ Program Files \ Microsoft Office \ OfficeXX içinde buldum.
SSZero

3
Madeni "1 Hatırlatıcı" bulmak için değiştirdim ve sonra işe yaradı.
Robert Brooker,

18

AutoHotKey bunu çözmek için de kullanılabilir. Bu komut odağını çalmadan hatırlatma penceresini üste koyar (Win10 / Outlook 2013 ile test edilmiştir)

TrayTip Script, Looking for Reminder window to put on top, , 16
SetTitleMatchMode  2 ; windows contains
loop {
  WinWait, Reminder(s), 
  WinSet, AlwaysOnTop, on, Reminder(s)
  WinRestore, Reminder(s)
  TrayTip Outlook Reminder, You have an outlook reminder open, , 16
  WinWaitClose, Reminder(s), ,30
}

AHK Script - Derlenmiş EXE


AHK kullanmak için +1. Bunu sadece 7 / outlook 2016 2016 galibiyetinde test ettim. Görünümü ön tarafa getiriyor ancak siz yazıyorsanız odağı çalmıyor. Tam olarak ne istedim! (Sadece tepsi ipuçlarını kaldırdım :))
Fawix 14:16

1
Komut dosyasının pencerelerle başlamasının çok kolay bir yolu olduğunu unutmayın. Sadece klasöre koyunC:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Fawix

AHK Script ve Derlenmiş EXE bağlantıları koptu. Yukarıdaki betiği AutoHotKey.ahk betiğime kopyalayıp yapıştırdım ve çalışmadı.
Mike Cole


1
Başlangıç ​​klasörüne ulaşmak shell:startup, bir adres çubuğuna veya çalıştırma kutusuna girilerek kolayca yapılabilir
Gert van den Berg

13

Bulduğum en iyi cevap şudur: Bazı basit VBA'ları kullanarak Outlook randevu hatırlatıcılarının diğer pencerelerin önünde tekrar açılmasını sağlama.

"ThisOutlookSession" 'a birkaç satır basit VBA kodu eklemeyi gerektirir. Şimdi, her seferinde bir pencere açılıyor. Çok daha iyi.

  • Daha sonra bir Dijital sertifika oluşturun
  • Başlat'a basın ve 'sertifika'yı yazın,' VBA Projeleri için Dijital Sertifika'yı seçin.
  • Sertifikanız için bir ad girin
  • tamam
  • Outlook'u açın ve VBA editörünü başlatmak için Alt + F11 tuşlarına basın.
  • Soldaki ağaçta 'Microsoft Office Outlook Objects'i genişletin ve' ThisOutlookSession 'üzerine çift tıklayın
  • Metni tırnak işaretleri içinde tercihlerinize göre değiştirerek bu koda yapıştırın. Tırnakları içeride bırakın.

    Private Sub Application_Reminder(ByVal Item As Object)
    
    
        If TypeOf Item Is AppointmentItem Then
        MsgBox "Message text", vbSystemModal, "Message title"
        End If
    
    
    End Sub
    
  • Makroyu işaretleyin, böylece Araçlar> Dijital İmza… 'ya gidip daha önce oluşturduğunuz sertifikayı seçerek çalışacaktır.

  • VBA penceresini kapatın

Bunu Outlook 2010, Windows 7'de denedim, ancak çalışmadı :(
tekumara

Bunu Güllü'nün çözümünün bir parçası olarak kullandık. Çok teşekkürler.
Smandoli

Bu, Outlook 2007'de çalıştı, ancak Güllü yoktu.
Sheppard

7

Sürüm 1803'ten (Şubat 2018) itibaren "Hatırlatıcıları diğer pencerelerin üstünde göster" seçeneği artık kullanılabilir durumda. Varsayılan olarak etkin görünmüyor.

görüntü tanımını buraya girin


3
Henüz güncellenmiş sürümü yok, ama bu harika! Ve sorduğumdan bu yana sadece 7 yıl geçti. (Ve bu MS'te bir diskettir, ayrıca size de bir teşekkür).
thursdaysgeek

2
Bu eski bir soru için mükemmel bir güncelleme. Bunun "her zaman en üstte" olduğu gibi olmadığını, ancak pencerenin z sırasının en üstünde yer almasını sağladığından kullanıcıların kaçırması daha az olasıdır.
Marc LaFleur

6

İmkân yok. Şirketimiz doğrudan Microsoft'a yükseltmeyi denedi. İnsanların burada yaptığı tek şey, farkına varması için daha iğrenç bir ses vermek. Ancak Microsoft bize tasarım gereği olduğunu söyledi.


11
Bir küp çiftliğinde çalışıyorum - bilgisayarımı başkaları için sessiz tutmaya çalışıyorum. :(
thursdaysgeek

3
Gerçekten tasarlıyorlarsa, varsayılan olarak bu şekilde yaparlardı, ancak değiştirilmesine izin veriyorlardı. Onlar "tasarlar", buna katlanmayı öğrenir miyiz?
perşembe günleri

Cevabımı gör. Sonunda bir çözüm bulduk.
Güllü,

Üçüncü taraf bir çözüm buldum. Gerçek Araçlar Gerçek Pencere Koruması 30 dolar (bunların hepsini kapsayan ürünlerine de dahildir) Gerçek Windows Yöneticisi 50 dolar, pencerelerin her zaman en üstte olmasına izin verir. Ayrıca özelliği açmak ve kapatmak kolaydır. (Fiyat etiketinin kabul edilmesini kolaylaştırmaya yardımcı olmaktan çok daha fazlasını yaptığını unutmayın.) Bunları sanal masaüstü ve çoklu monitör yardımcı programları denerken buldum. İkincisini birkaç aydır kullanıyorum ve bundan çok mutluyum.
Javaru

Sanırım çözüm daha iyi bir araç kullanmak! Kötü bir şey benim için bir seçim değil :(
Jonathan Benn

6

Güllü'nün yukarıdaki anwer ile aynı olmasına rağmen, farklı bir pencere başlığına uyacak şekilde değişiklik yapıldı

Private Declare PtrSafe Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare PtrSafe Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const FLAGS As Long = SWP_NOMOVE Or SWP_NOSIZE
Private Const HWND_TOPMOST = -1

'// TO ACCOUNT FOR WINDOW TITLE CHANGING WITH NOTIFICATION COUNT:
Private Sub Application_Reminder(ByVal Item As Object)
    Dim ReminderWindowHWnd As Variant
    'On Error Resume Next
    On Error GoTo err
    'Loop 25 times as FindWindowA needs exact title which varies according to number of reminder items...
    Dim iReminderCount As Integer
    For iReminderCount = 1 To 25
        'Try two syntaxes...
        ReminderWindowHWnd = FindWindowA(vbNullString, iReminderCount & " Reminder"): SetWindowPos ReminderWindowHWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS
        ReminderWindowHWnd = FindWindowA(vbNullString, iReminderCount & " Reminder(s)"): SetWindowPos ReminderWindowHWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS
    Next
Exit Sub
err:
    Debug.Print err.Number & " - " & err.Description & " (iReminderCount = " & iReminderCount & ")"
    Resume Next
End Sub

Daha da iyisi gibi bir şey olurdu Dim olApp As Outlook.Application Set olApp = New Outlook.Application iReminderCount = olApp.Reminders.CountO zaman döngü kaldırabilirsiniz.
Zusukar

@Zusukar Reminders.Count, aktif hatırlatma diyaloğunda değil, randevularda ayarlanan toplam hatırlatıcı sayısını verir.
Geoff,

@Zusukar İdeal olarak, Hatırlatıcı'yı kullanabilirsiniz. Görünür olanları saymak için Görünür özelliğini kullanın, ancak bu her zaman yanlıştır - muhtemelen hatırlatıcı görünür olarak işaretlenmeden önce olay gerçekleşir.
Geoff

3

Bu da beni rahatsız ediyordu. Bazı yoğun aramalardan sonra kısmi bir cevap buldum: http://www.pcreview.co.uk/forums/hidden-outlook-reminders-t3972914.html

"Görev Çubuğu ve Başlat Menüsü Özellikleri" altındaki "Görev çubuğu düğmeleri" ayarını "Hiçbir zaman birleştirme" olarak değiştirirseniz, gruplandırma ayrılır ve hatırlatıcı açık olan diğer öğelerin önünde belirir.

Test etmeye çalıştım ve tutarsız olduğunu gördüm; Bir zamanlar üzerinde çalıştığım şeyin arkasına gizlenmiş olarak kaldı ve bir kez daha öne çıktı. Her iki durumda da görev çubuğunda Outlook'un kendisinden farklı görünen bir simge vardı, bu yüzden en azından bunu farketme şansım oldu.


Asla Birleştir ile bile Outlook 2013'ün doğru davranması sağlanamadı. Outlook 2013, Windows 7 32 bit.
Sun

Uygulamaların görev çubuğunda birleştirilmesini tercih ettiğim için bu benim için iyi bir çözüm değil
Jonathan Benn

3

Filebox eXtender'ı kullandım ve ilk hatırlatma geldiğinde açtım ve başlık çubuğunun sağ üstündeki yeni 'pin' simgesini tıklayın. Sonra bir sonraki hatırlatma geldiğinde, ön planda geliyor ...


PinMe! aynısını yapacağım. Ücretsiz bir taşınabilir araçtır ve bu görevi çok iyi bir şekilde yerine getirir. Outlook 2013'ü test ettim ve tam olarak istediğim gibi çalışıyor. Outlook ön planında veya simge durumuna küçültülmüş olarak, takvim hatırlatıcısı her zaman öne çıkar.
Sun

@ Gün PinMe verecek! bir atış
Chris Marisic

@ Sun i işten ne kadar olursa olsun, her zaman kalıcı olarak görünür olduğundan emin olması gereken bildirim penceresinde "süper pim" i kurdum. Kutudan ilan edildiği gibi çalışır ve ardışık bildirimler sunar. müthiş.
Chris Marisic,

PinMe denedim ve üstünde kalmak, hiç de penceresini alamıyorum! ??
tbone

1

Hatırlatıcılar penceresini en üste taşıyan ShowReminders ( http://www.sagelamp.com/pages/showreminders.aspx ) adlı bir eklenti buldum . Hatırlatma penceresini simge durumuna küçültdüğünüzde bile çalışır.


3
Ürünün Ekim 2014 itibariyle 20 $ olduğunu
Sun

Kurulum Windows 10'da benim için başarısız oluyor:The following package files could not be found: C:\Users\ukeim\AppData\Local\Temp\IXP000.TMP\Office2007PIARedist\o2007pia.msi
Uwe Keim

0

Sonunda Outlook VBA ve basit bir EXE kullanarak basit bir çözüm buluyorum.

İşte nasıl tekrar görünüm toplantı görüşmesi kaçırılmadığını.

Neden sadece bu amaç için tek başına bir exe uygulaması? Evet, büyük kırmızı kutuyu VBA'ya yerleştirdim, ancak bu çözüm sorunla doluydu (büyük kırmızı kutuyu üstte tutmak için hwnd ve diğer olağandışı sistem özelliklerini kullanmam gerektiğine inanıyorum). Bu yüzden işleri daha basit hale getirmek için neden temel bir EXE değil de bir şey yapıyorsunuz. Microsoft'un ücretsiz araçlarını kullanabilirsiniz (Visual studio Community 2015 ücretsizdir).

Bu, EXE kodudur. tek pencereli basit pencereler oluşturur. Bu kodu derleyin.

Imports System.Timers
Public Class Form1
    Dim tTimer As New Timer
    Public Sub New()
        InitializeComponent()
        Me.StartPosition = Windows.Forms.FormStartPosition.CenterScreen
        Me.TopMost = True
        Me.TopLevel = True
    End Sub
    Private Sub Form1_DoubleClick(sender As Object, e As EventArgs) Handles Me.DoubleClick
        Application.Exit()
    End Sub 
    Private Sub Form1_Shown(sender As Object, e As EventArgs) Handles Me.Shown
        flashingQuick()
    End Sub
    Sub flashingQuick()
        tTimer.Start()
        AddHandler tTimer.Elapsed, New ElapsedEventHandler(AddressOf TimerTick)
    End Sub
    Sub TimerTick(ByVal source As [Object], ByVal e As ElapsedEventArgs)
        Dim theTimer As System.Timers.Timer = DirectCast(source, System.Timers.Timer)
        theTimer.Interval = 500
        theTimer.Enabled = True
        If Me.BackColor = System.Drawing.SystemColors.Control Then
            Me.BackColor = Color.Red
        Else
            Me.BackColor = System.Drawing.SystemColors.Control
        End If
    End Sub
End Class

Ve VBA görünümünde ihtiyacım olan tek şey bu. Bunu ThisOutlookSession içine koy

Private Sub Application_Reminder(ByVal Item As Object)
    On Error Resume Next
    If Item.MessageClass <> "IPM.Appointment" Then
      Exit Sub
    End If
    Dim sAPPData As String
    Dim sFileName As String
    sAPPData = Environ("AppData")
    sFileName = "\Microsoft\Windows\Start Menu\Programs\BigRedBox\BigRedBox.exe"
    If Dir(sAPPData & sFileName) <> "" Then
        Call Shell(sAPPData & sFileName)
    End If
End Sub

0

Bu, Almanca versiyonlarında çalışan tbone cevabının geliştirilmiş bir versiyonudur.

Private Declare PtrSafe Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare PtrSafe Function SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Private Declare PtrSafe Function BringWindowToTop Lib "user32" (ByVal hwnd As Long) As Boolean
Private Declare PtrSafe Function SetForegroundWindow Lib "user32" (ByVal hwnd As Long) As Boolean
Private Declare PtrSafe Function SetFocus Lib "user32" (ByVal hwnd As Long) As Long

Private Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const FLAGS As Long = SWP_NOMOVE Or SWP_NOSIZE
Private Const HWND_TOPMOST = -1

Private Sub Application_Reminder(ByVal Item As Object)
    Dim ReminderWindowHWnd As Variant
    On Error GoTo err
    'Loop 25 times as FindWindowA needs exact title which varies according to number of reminder items...
    Dim iReminderCount As Integer
    For iReminderCount = 1 To 25
        'Try two syntaxes...

        ReminderWindowHWnd = FindWindowA(vbNullString, iReminderCount & " Erinnerung")
        SetWindowPos ReminderWindowHWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS
        BringWindowToTop (ReminderWindowHWnd)
        SetForegroundWindow ReminderWindowHWnd
        SetFocus ReminderWindowHWnd

        ReminderWindowHWnd = FindWindowA(vbNullString, iReminderCount & " Erinnerung(en)")
        SetWindowPos ReminderWindowHWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS
        BringWindowToTop ReminderWindowHWnd
        SetForegroundWindow ReminderWindowHWnd
        SetFocus ReminderWindowHWnd
    Next
Exit Sub
err:
    Debug.Print err.Number & " - " & err.Description & " (iReminderCount = " & iReminderCount & ")"
    Resume Next
End Sub

Alman pencere başlıklarını ve ayrıca bazı yeni işlevleri de ekledim ( BringWindowToTop, SetForegroundWindowve SetFocus).

Outlook 2016 ile birlikte Alman Windows 10'um üzerinde çalışıyor.

Ben yaptım değil yeni bir sertifika (Başlat basıp "sertifika" giren hiçbir şey ortaya) üretmek için yönetmek, ancak oturum açarken yalnızca listede Başka bir sertifika seçildi.


Bu, uygulamanın sadece yanıp sönmesini sağlar ancak bildirim penceresini öne getirmez
KIC
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.