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

Как заставить напоминания о Календаре Outlook оставаться на вершине в Windows 7

Я только начинаю использовать Windows 7, и я хочу знать, как заставить мои напоминания о Календаре Outlook выскакивать и показывать себя на видном месте. Они продолжают открываться незаметно, как еще одно окно в стеке Outlook на панели задач. В результате, я продолжаю игнорировать их, потому что они всплывают за всем остальным.

Как мне сделать их проще игнорировать?

(Очевидно, что обычно не хочется, чтобы неприятные приложения, которые подталкивают себя на передний план. Но есть несколько мест, где такое поведение желательно, и напоминания календаря Outlook являются одним из них).

Ответы (11)

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

У меня была та же проблема с Outlook 2010. Используйте описанные ниже шаги, он работает как шарм. Не забудьте включить все макросы: Центр доверия > Настройки макросов.

  • Создание цифрового сертификата на потом: Нажмите Пуск и введите ‘сертификат’, выберите ‘Цифровой сертификат для VBA проектов’
  • Введите имя вашего сертификата. Нажмите OK. Откройте Outlook и нажмите Alt + F11, чтобы запустить редактор VBA.
  • В дереве слева разверните ‘Объекты Microsoft Office Outlook’ и дважды нажмите на ‘ThisOutlookSession’
  • Вставьте в этот код:

  • Подпишите Macro, чтобы он запустился: Инструменты > Цифровая подпись… и выберите сертификат, который вы создали ранее

  • Закройте окно VBA

  • Включите все макросы в Файле > Параметры > Центр доверия > Настройки центра доверия > Параметры макросов

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

AutoHotKey также может быть использован для решения этой проблемы. Этот скрипт поставит окно напоминания сверху без кражи фокуса (протестировано с 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

Лучший ответ, который я нашел, здесь: Как получить Outlook напоминания о встрече, чтобы всплыть перед другими окнами снова с помощью некоторых простых VBA.

Это подразумевает добавление нескольких строк простого кода VBA в “ThisOutlookSession”. Теперь он каждый раз всплывает окно. Гораздо лучше.

  • Создайте цифровой сертификат для последующего
  • Нажмите Пуск и введите ‘сертификат’, выберите ‘Цифровой сертификат для VBA проектов’
  • Введите имя для вашего сертификата
  • Готово
  • Откройте Outlook и нажмите Alt + F11, чтобы запустить редактор VBA.
  • В дереве слева разверните ‘Объекты Microsoft Office Outlook’ и дважды нажмите на ‘ThisOutlookSession’
  • Вставьте этот код, изменяя текст в кавычках в соответствии с вашими предпочтениями. Оставьте кавычки в.

  • Подпишите Macro, чтобы он запустился, перейдя в Инструменты > Цифровая подпись… и выбрав сертификат, который вы создали ранее

  • Закройте окно VBA.

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

Начиная с версии 1803 (февраль 2018), теперь доступна опция “Показывать напоминания поверх других окон”. По умолчанию она не включена.

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

То же, что и в ответе Гуллу выше, но с изменениями в соответствии с названием окна:

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

Не может быть. Наша компания попробовала перейти непосредственно на Microsoft. Единственное, что здесь делают люди, это приписывают ему более неприятный звук, чтобы помочь его заметить. Но Майкрософт сказал нам, что это по замыслу.

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

Я использовал Filebox eXtender и когда приходит первое напоминание, я открываю его и нажимаю на новую иконку ‘pin’ в правом верхнем углу строки подписи. Затем, когда появится следующее напоминание, оно появится на переднем плане…

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

Меня это тоже беспокоило. После интенсивных поисков я нашел частичный ответ: http://www.pcreview.co.uk/forums/hidden-outlook-reminders-t3972914.html

Если вы измените настройку “Кнопки панели задач” под “Панель задач и свойства меню "Пуск”“ на "Никогда не объединять”, то группировка разделится и всплывет напоминание перед всем остальным, что вы открыли.

Я попытался протестировать его и обнаружил, что он непоследователен; один раз он оставался скрытым за тем, над чем я работал, а другой раз он выскочил вперед. В обоих случаях на панели задач была иконка, которая выглядела иначе, чем сам Outlook, так что был хотя бы шанс, что я ее заметил.

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

Я нашел дополнение под названием ShowReminders http://www.sagelamp.com/pages/showreminders.aspx ), которое выводит окно напоминаний наверх. Он даже работает, когда вы сворачиваете окно напоминаний.

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

Это улучшенная версия tbone’s answer , которая работает на немецких версиях.

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

Я добавил заголовки немецких окон, а также некоторые новые функции BringWindowToTop , SetForegroundWindow и SetFocus )).

Работает в моей немецкой Windows 10 вместе с Outlook 2016.

Мне not удалось сгенерировать новый сертификат (нажатие Пуск и ввод “сертификат” ничего не показали), а просто выбрали другой сертификат в списке при подписании.

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

Я, наконец, нашел простое решение с помощью Outlook VBA и простой EXE.

Вот как никогда не пропустить встречи outlook встречи снова.

Почему отдельное приложение exe только для этой цели? Ну, большой красный ящик был встроен в VBA, но это решение было полон проблем (я считаю, что это потому, что мне приходится использовать hwnd и другие необычные свойства системы, чтобы держать большой красный ящик на вершине) . Так что, чтобы сделать вещи проще, почему бы не использовать базовый EXE, который делает одну вещь. Вы можете использовать бесплатные инструменты из микрософта (Visual Studio Community 2015 бесплатно).

Это EXE код. простое приложение windows form с одной формой. Скомпилируйте этот код.

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

И это все, что мне нужно в перспективе VBA. Поместите это в 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
```.

Похожие вопросы

3
19
10
28
2