2011-03-01 21:14:47 +0000 2011-03-01 21:14:47 +0000
125
125

Jak sprawić, by przypomnienia w kalendarzu Outlooka pozostawały na szczycie w systemie Windows 7

Zaczynam używać systemu Windows 7 i chcę wiedzieć, jak sprawić, by moje przypomnienia pojawiały się i pokazywały się w widocznym miejscu. Otwierają się one dyskretnie, jak kolejne okno w stosie Outlooka na pasku zadań. W rezultacie, ciągle je przeoczam, ponieważ wyskakują za wszystkim innym.

Jak sprawić, by były mniej łatwe do przeoczenia?

(Najwyraźniej, zazwyczaj nie chce się okropnych aplikacji, które popychają się do przodu. Ale jest kilka miejsc, w których takie zachowanie jest pożądane, a przypomnienia w kalendarzu Outlook'a są jednym z nich).

Odpowiedzi (11)

62
62
62
2012-08-16 15:19:38 +0000

Miałem ten sam problem z Outlookiem 2010. Użyj poniższych kroków, to działa jak urok. Nie zapomnij włączyć wszystkich makr: Trust Center > Macro Settings.

  • Stwórz certyfikat cyfrowy na później: Naciśnij Start i wpisz ‘certyfikat’, wybierz ‘Certyfikat cyfrowy dla VBA Projects’
  • Wprowadź nazwę dla swojego certyfikatu. Kliknij OK. Otwórz Outlooka i naciśnij Alt + F11, aby uruchomić edytor VBA.
  • W drzewie po lewej stronie rozwiń ‘Microsoft Office Outlook Objects’ i kliknij dwukrotnie na ‘ThisOutlookSession’
  • Wklej ten kod:

  • Podpisz Makro, aby uruchomić: Narzędzia > Podpis cyfrowy… i wybierz certyfikat, który stworzyłeś wcześniej

  • Zamknij okno VBA

  • Włącz wszystkie makra w pliku > Opcje > Centrum zaufania > Ustawienia Centrum zaufania > Ustawienia makra

18
18
18
2016-02-02 12:58:33 +0000

Przycisk AutoHotKey może być również użyty do rozwiązania tego problemu. Ten skrypt umieszcza okno przypomnienia na górze bez kradzieży ostrości (testowany z 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 - Compiled EXE

13
13
13
2012-03-13 23:10:09 +0000

Najlepsza odpowiedź, jaką znalazłem, jest tutaj: Jak sprawić, by przypomnienia o spotkaniu w Outlooku ponownie pojawiły się przed innymi oknami za pomocą prostego VBA.

Polega to na dodaniu kilku linii prostego kodu VBA do “ThisOutlookSession”. Teraz, wyskakuje on za każdym razem przed oknem. Znacznie lepiej.

  • Stwórz certyfikat cyfrowy dla późniejszego
  • Naciśnij Start i wpisz ‘certyfikat’, wybierz ‘Certyfikat cyfrowy dla projektów VBA’
  • Wprowadź nazwę dla swojego certyfikatu
  • Gotowe
  • Otwórz Outlooka i naciśnij Alt + F11 aby uruchomić edytor VBA.
  • W drzewie po lewej stronie rozwiń ‘Microsoft Office Outlook Objects’ i kliknij dwukrotnie na ‘ThisOutlookSession’
  • Wklej ten kod, modyfikując tekst w cudzysłowach zgodnie z Twoimi preferencjami. Zostaw cytaty w.

  • Podpisz Makro, aby uruchomić go, przechodząc do Narzędzi > Podpisu cyfrowego… i wybierając utworzony wcześniej certyfikat

  • Zamknij okno VBA

7
7
7
2018-06-01 16:58:06 +0000

Od wersji 1803 (luty 2018) dostępna jest teraz opcja “Pokaż przypomnienia na innych oknach”. Domyślnie nie jest ona włączona.

6
6
6
2015-02-03 19:29:07 +0000

Tak samo jak Gullu’s anwer powyżej, ale ze zmianą na inną nazwę okna:

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
6
6
6
2011-03-01 21:34:50 +0000

Nie ma mowy. Nasza firma próbowała go eskalować bezpośrednio do Microsoftu. Jedna rzecz, którą ludzie tutaj robią, to przypisanie jej bardziej obrzydliwego dźwięku, aby pomóc ją zauważyć. Ale Microsoft powiedział nam, że to z założenia.

3
3
3
2011-12-21 00:26:04 +0000

Użyłem Filebox eXtender i kiedy pojawia się pierwsze przypomnienie, otwieram je i klikam nową ikonę ‘pin’ w prawym górnym rogu paska napisów. Następnie, gdy pojawi się następne przypomnienie, pojawia się ono na pierwszym planie…

3
3
3
2011-05-10 17:21:18 +0000

Mnie też to wkurzało. Po kilku intensywnych poszukiwaniach znalazłem częściową odpowiedź: http://www.pcreview.co.uk/forums/hidden-outlook-reminders-t3972914.html

Jeśli zmienisz ustawienie “Taskbar buttons” pod “Taskbar and Start Menu Properties” na “Never combine,” wtedy grupowanie się rozdziela i przypomnienie wyskakuje przed tym co masz otwarte.

Próbowałem go przetestować i stwierdziłem, że jest niespójny; raz został ukryty za tym nad czym pracowałem, a innym razem wyskoczył do przodu. W obu przypadkach na pasku zadań znajdowała się ikona, która wyglądała inaczej niż sam Outlook, więc była przynajmniej szansa, że ją zauważę.

1
1
1
2013-08-13 12:58:14 +0000

Znalazłem dodatek o nazwie ShowReminders http://www.sagelamp.com/pages/showreminders.aspx ), który przenosi okno przypomnień na górę. Działa on nawet wtedy, gdy minimalizujesz okno przypomnień.

0
0
0
2015-11-10 11:12:56 +0000

Jest to rozszerzona wersja odpowiedź kości , która działa na wersjach niemieckich.

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

Dodałem niemieckie tytuły okien oraz kilka nowych funkcji BringWindowToTop , SetForegroundWindow oraz SetFocus ).

Działa na moim niemieckim Windows 10 razem z Outlookiem 2016.

Nie udało mi się ________ wygenerować nowego certyfikatu (naciśnięcie Start i wpisanie “certyfikat” nic nie ujawniło), ale po prostu wybrałem inny certyfikat na liście podczas podpisywania.

0
0
0
2015-08-07 19:48:32 +0000

W końcu znalazłam proste rozwiązanie przy użyciu Outlooka VBA i prostego EXE.

Oto jak nigdy więcej nie przegapić spotkania w Outlooku.

Dlaczego samodzielna aplikacja exe właśnie do tego celu? Cóż, miałem duże czerwone pole osadzone w VBA, ale to rozwiązanie było pełne problemów (wierzę, że to dlatego, że muszę użyć hwnd i innych niezwykłych właściwości systemu, aby utrzymać duże czerwone pole na górze) . Więc dla uproszczenia, dlaczego nie podstawowy EXE, który robi jedną rzecz. Możesz użyć darmowych narzędzi z microsoft (Visual studio Community 2015 jest darmowe).

Jest to kod EXE. prosty formularz aplikacji Windows z jednym formularzem. Skompiluj ten kod.

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

I to jest wszystko czego potrzebuję w outlook VBA. Umieść to w ThisOutlookSession

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