So behalten Erinnerungen an Outlook-Kalender in Windows 7 den Überblick

123

Ich fange gerade an, Windows 7 zu verwenden, und ich möchte wissen, wie meine Outlook-Erinnerungen angezeigt und hervorgehoben werden. Sie öffnen sich unauffällig wie ein weiteres Fenster im Outlook-Stapel in der Taskleiste. Infolgedessen überseh ich sie immer wieder, weil sie hinter allem anderen auftauchen.

Wie mache ich sie weniger leicht zu übersehen?

(Natürlich möchte man normalerweise keine abscheulichen Apps, die sich in den Vordergrund rücken. Es gibt jedoch einige Stellen, an denen ein solches Verhalten wünschenswert ist, und Outlook-Kalendererinnerungen sind eine davon.)

donnerstagswoche
quelle
16
Das ist so notwendig. Wenn man in starke Konzentration gerät, kann man leicht eine Erinnerung übersehen und bemerken, dass sie erst dann unter anderen Fenstern verborgen ist, wenn man zu spät kommt. Es ist lächerlich, dass es mit einer einfachen Einstellung nicht möglich ist. Was nützt eine Erinnerung, wenn Sie sie nicht sofort erhalten ?!
Mario

Antworten:

61

Ich hatte das gleiche Problem mit Outlook 2010. Verwenden Sie die unten genannten Schritte, es funktioniert wie ein Zauber. Vergessen Sie nicht, alle Makros zu aktivieren: Vertrauensstellungscenter> Makroeinstellungen.

  • Erstellen Sie ein digitales Zertifikat für später: Klicken Sie auf Start und geben Sie "Zertifikat" ein. Wählen Sie "Digitales Zertifikat für VBA-Projekte".
  • Geben Sie einen Namen für Ihr Zertifikat ein. OK klicken. Öffnen Sie Outlook und drücken Sie Alt+ F11, um den VBA-Editor zu starten.
  • Erweitern Sie im linken Baum "Microsoft Office Outlook-Objekte" und doppelklicken Sie auf "ThisOutlookSession".
  • Füge diesen Code ein:

    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
    
  • Signieren Sie das Makro, damit es ausgeführt wird: Extras> Digitale Signatur ... und wählen Sie das zuvor erstellte Zertifikat aus

  • Schließen Sie das VBA-Fenster
  • Aktivieren Sie alle Makros unter Datei> Optionen> Vertrauensstellungscenter> Vertrauensstellungscenter-Einstellungen> Makroeinstellungen
Gullu
quelle
3
Mir ist aufgefallen, dass manchmal (normalerweise beim Starten von Outlook) die erste Erinnerung nicht im Vordergrund bleibt. Sobald Sie auf Verwerfen klicken und die Erinnerung schließen, bleiben alle nachfolgenden Erinnerungen oben. Weiß nicht warum.
Gullu
3
Das On Error Resume Nextgilt nur für diesen Sub und verhindert nur, dass das gesamte Makro abstürzt. Dies ist nur die Standard-VBA-Verwendung.
Jeff Martin
3
Ich hatte das gleiche Problem wie Gullu in seinem ersten Kommentar. Um das zu umgehen, zeige ich nach dem Neustart von Outlook (oder meinem Computer) ein Meldungsfeld für die erste Erinnerung an. Private messageAlreadyShown As Boolean Private Sub Application_Reminder (ByVal Item As Object) On Error Resume Next Wenn nicht messageAlreadyShown, dann MsgBox "First Reminder", vbSystemModal, "" End If messageAlreadyShown = True ReminderWindow = FindWindowA (vbNullString, "1 Reminder") SetWindowPos ReminderWindow, HWND_TOPMOST, 0, 0, 0, 0, FLAGS End Sub
helios456 18.02.14
3
Ich hatte Probleme, das Tool zum Erstellen eines selbstsignierten Zertifikats für das Makro zu finden. Ich fand es in C: \ Programme \ Microsoft Office \ OfficeXX, dem Tool SELFCERT.EXE.
SSZero
3
Ich habe meine geändert, um "1 Erinnerung (en)" zu finden, und dann hat es funktioniert.
Robert Brooker
18

AutoHotKey kann ebenfalls zur Lösung dieses Problems verwendet werden. Mit diesem Skript wird das Erinnerungsfenster oben angezeigt, ohne den Fokus zu stehlen (getestet mit Win10 / Outlook 2013).

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 - Kompilierte EXE

Eric L
quelle
+1 für die Verwendung von AHK. Ich habe das gerade in win 7 / outlook 2016 getestet. Es bringt den Blick nach vorne, aber es stiehlt nicht wirklich den Fokus, wenn Sie tippen. Genau das was ich wollte! (Ich habe gerade die Tray-Tipps entfernt :))
Fawix
1
Beachten Sie, dass es eine sehr einfache Möglichkeit gibt, das Skript mit Windows zu starten. C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
Legen Sie
Das AHK-Skript und die kompilierten EXE-Links sind fehlerhaft. Ich habe das obige Skript kopiert und in mein AutoHotKey.ahk-Skript eingefügt und es hat nicht funktioniert.
Mike Cole
1
Hier ist die kompilierte EXE drive.google.com/file/d/0B_pJVd8U0PfcWkZWNmhEYncwQjA/view
user664174
1
Um zum Startordner zu gelangen, geben Sie einfach shell:startupeine Adressleiste oder das Run-Feld ein
Gert van den Berg,
13

Die beste Antwort, die ich gefunden habe, ist hier: So erhalten Sie Outlook-Terminerinnerungen, die mithilfe eines einfachen VBA erneut vor anderen Fenstern angezeigt werden.

Dazu müssen "ThisOutlookSession" einige Zeilen einfachen VBA-Codes hinzugefügt werden. Jetzt wird jedes Mal ein Fenster geöffnet. Viel besser.

  • Erstellen Sie ein digitales Zertifikat für später
  • Klicken Sie auf Start und geben Sie "Zertifikat" ein. Wählen Sie "Digitales Zertifikat für VBA-Projekte".
  • Geben Sie einen Namen für Ihr Zertifikat ein
  • Getan
  • Öffnen Sie Outlook und drücken Sie Alt + F11, um den VBA-Editor zu starten.
  • Erweitern Sie im linken Baum "Microsoft Office Outlook-Objekte" und doppelklicken Sie auf "ThisOutlookSession".
  • Fügen Sie diesen Code ein und ändern Sie den Text in Anführungszeichen nach Ihren Wünschen. Lassen Sie die Anführungszeichen in.

    Private Sub Application_Reminder(ByVal Item As Object)
    
    
        If TypeOf Item Is AppointmentItem Then
        MsgBox "Message text", vbSystemModal, "Message title"
        End If
    
    
    End Sub
    
  • Signieren Sie das Makro, damit es ausgeführt wird, indem Sie zu Extras> Digitale Signatur ... wechseln und das zuvor erstellte Zertifikat auswählen

  • Schließen Sie das VBA-Fenster
tommykey
quelle
Versuchte dies in Outlook 2010, Windows 7, aber es hat nicht funktioniert :(
Tekumara
Wird als Teil von Gullus Lösung verwendet. Vielen Dank.
Smandoli
Dies funktionierte in Outlook 2007, während dies in Gullu nicht der Fall war.
Will Sheppard
7

Ab Version 1803 (Februar 2018) ist jetzt die Option "Erinnerungen über anderen Fenstern anzeigen" verfügbar. Es scheint nicht standardmäßig aktiviert zu sein.

Bildbeschreibung hier eingeben

Des Teufels Anwalt
quelle
3
Ich habe noch keine aktualisierte Version, aber das ist großartig! Und es ist erst 7 Jahre her, dass ich auch gefragt habe. (Und das ist ein Problem bei MS, sowie ein Dankeschön an Sie.)
Donnerstag,
2
Dies ist ein hervorragendes Update für eine alte Frage. Beachten Sie, dass dies nicht ganz das Gleiche ist wie "Immer im Vordergrund", aber es stellt sicher, dass das Fenster oben in der Z-Reihenfolge angezeigt wird, sodass Benutzer es seltener verpassen.
Marc LaFleur
6

Es gibt keine Möglichkeit. Unser Unternehmen hat versucht, es direkt an Microsoft weiterzuleiten. Eine Sache, die die Leute hier tun, ist, ihr einen widerlicheren Klang zuzuweisen, damit sie es bemerken. Microsoft hat uns jedoch mitgeteilt, dass dies beabsichtigt ist.

Brian
quelle
11
Ich arbeite in einer Cube-Farm. Ich versuche, meinen Computer für andere ruhig zu halten. :(
Donnerstag
3
Wenn sie wirklich entwerfen würden, würden sie es standardmäßig so machen, aber erlauben, dass es geändert wird. Sie "entwerfen", wir lernen es zu ertragen?
Donnerstag,
Siehe meine Antwort. Wir haben endlich eine Lösung.
Gullu
Ich habe eine Drittanbieterlösung gefunden. Actual Tools Actual Window Guard $ 30 (ebenfalls im Lieferumfang des Actual Windows Manager $ 50 enthalten) ermöglicht das Zuweisen von Fenstern, die immer im Vordergrund stehen. Außerdem ist es einfach, die Funktion ein- und auszuschalten. (Beachten Sie, dass es mehr als nur das tut, um die Akzeptanz des Preisschilds zu erleichtern.) Ich habe diese beim Ausprobieren von Tools für virtuelle Desktops und Multi-Monitor-Dienstprogramme gefunden. Ich benutze letzteres jetzt seit ein paar Monaten und bin sehr zufrieden damit.
Javaru
Ich denke, die Lösung ist, ein besseres Werkzeug zu verwenden! Schade, das ist keine Wahl für mich :(
Jonathan Benn
6

Wie Gullus Antwort oben, jedoch mit Änderung, um andere Fenstertitel aufzunehmen:

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
tbone
quelle
Noch besser wäre sowas. Dim olApp As Outlook.Application Set olApp = New Outlook.Application iReminderCount = olApp.Reminders.CountDann könntest du die Schleife entfernen.
Zusukar
@Zusukar Reminders.Countgibt die Gesamtzahl der Erinnerungen zurück, die in Terminen festgelegt wurden, nicht im aktiven Erinnerungsdialog. In meinem System werden beispielsweise 22 zurückgegeben.
Geoff
@Zusukar Sie können idealerweise die Eigenschaft Reminder.IsVisible verwenden, um die sichtbaren zu zählen. Dies ist jedoch immer falsch. Vermutlich geschieht das Ereignis, bevor die Erinnerung als sichtbar markiert wird.
Geoff
3

Das nervte mich auch. Nach einiger intensiver Suche fand ich eine teilweise Antwort: http://www.pcreview.co.uk/forums/hidden-outlook-reminders-t3972914.html

Wenn Sie die Einstellung "Taskleisten-Schaltflächen" unter "Eigenschaften von Taskleiste und Startmenü" in "Niemals kombinieren" ändern, wird die Gruppierung getrennt und die Erinnerung wird vor allen anderen geöffneten Elementen angezeigt.

Ich versuchte es zu testen und stellte fest, dass es inkonsistent war; Einmal blieb es hinter dem verborgen, woran ich arbeitete, und ein anderes Mal tauchte es vorne auf. In beiden Fällen befand sich ein Symbol in der Taskleiste, das sich von Outlook selbst unterschied, sodass zumindest die Möglichkeit bestand, dass ich es bemerkte.

Mark Ransom
quelle
Outlook 2013 verhält sich auch mit Never Combine nicht richtig. Outlook 2013, Windows 7 32-Bit.
So.,
Dies ist keine gute Lösung für mich, da ich es vorziehe, die Apps in der Taskleiste zu kombinieren
Jonathan Benn
3

Ich habe Filebox eXtender verwendet. Wenn die erste Erinnerung eingeht, öffne ich sie und klicke oben rechts in der Titelleiste auf das neue Pin-Symbol. Wenn dann die nächste Erinnerung eingeht, steht sie im Vordergrund ...

Jacorb-Effekt
quelle
PinMe! werde das gleiche tun. Es ist ein kostenloses portables Tool und erledigt diese eine Aufgabe sehr gut. Ich habe es getestet Outlook 2013 und es funktioniert genau so, wie ich es will. Outlook-Vordergrund oder minimiert, die Kalendererinnerung wird immer im Vordergrund angezeigt.
So.,
@Sun werde PinMe geben! ein Schuss
Chris Marisic
@Sun ich Setup "Super-Pin" auf dem Benachrichtigungsfenster, die sicherstellen sollte, dass es immer sichtbar ist, egal was, bis ich es entlassen. Funktioniert wie im Lieferumfang angegeben und wird bei aufeinanderfolgenden Benachrichtigungen bereitgestellt. genial.
Chris Marisic
Ich habe PinMe ausprobiert und kann das Fenster überhaupt nicht mehr öffnen !! ??
Tbone
1

Ich habe ein Addin namens ShowReminders ( http://www.sagelamp.com/pages/showreminders.aspx ) gefunden, das das Erinnerungsfenster nach oben bringt. Es funktioniert sogar, wenn Sie das Erinnerungsfenster minimieren.

user245293
quelle
3
Sagt Produkt ist $ 20 ab Oktober 2014.
So
Setup schlägt für mich unter Windows 10 fehl:The following package files could not be found: C:\Users\ukeim\AppData\Local\Temp\IXP000.TMP\Office2007PIARedist\o2007pia.msi
Uwe Keim
0

Endlich finde ich eine einfache Lösung mit Outlook VBA und einer einfachen EXE.

So verpassen Sie nie wieder einen Outlook-Besprechungstermin.

Warum eine eigenständige exe-Anwendung nur für diesen Zweck? Nun, ich hatte die große rote Box in der VBA eingebettet, aber diese Lösung war voller Probleme (ich glaube, es liegt daran, dass ich hwnd und andere ungewöhnliche Systemeigenschaften verwenden muss, um die große rote Box oben zu halten). Also, um die Dinge einfacher zu machen, warum nicht eine grundlegende EXE, die eine Sache macht. Sie können kostenlose Tools von Microsoft verwenden (Visual Studio Community 2015 ist kostenlos).

Dies ist der EXE-Code. einfache Windows-Formularanwendung mit einem Formular. Kompilieren Sie diesen Code.

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

Und das ist alles, was ich im Outlook VBA brauche. Fügen Sie dies in ThisOutlookSession ein

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
user2635566
quelle
0

Dies ist eine erweiterte Version der Antwort von tbone, die auf deutschen Versionen funktioniert.

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

Ich habe deutsche Fenstertitel und auch einige neue Funktionen ( BringWindowToTop, SetForegroundWindowund SetFocus) hinzugefügt .

Funktioniert auf meinem deutschen Windows 10 zusammen mit Outlook 2016.

Ich habe es nicht geschafft, ein neues Zertifikat zu generieren (Drücken von Start und Eingabe von "Zertifikat" ergab nichts), sondern beim Signieren einfach ein anderes Zertifikat in der Liste ausgewählt.

Uwe Keim
quelle
Dies lässt die Anwendung nur blinken, bringt aber das Benachrichtigungsfenster nicht nach vorne
KIC