Уведомления календаря Outlook не отображается поверх других окон

Я использую Outlook 2007 на 64-разрядной Vista Business, и у меня возникли проблемы с уведомлениями календаря Outlook, показывая за другими окнами. Это оставляет мою единственную подсказку, что я должен быть на встрече, что есть синяя запись на панели задач. Я не нашел настройку, которая относится к этому.

кто-нибудь еще имел эту проблему? Кто-нибудь знает, как получить окна уведомлений поверх других окон последовательно?

17
задан David Thornley
06.12.2022 6:49 Количество просмотров материала 2530
Распечатать страницу

2 ответа

эта бесплатная надстройка может помочь заставить окно напоминания всплывающее, как вы хотите, чтобы: http://blogs.kraftkennedy.com/index.php/2010/06/07/getting-outlook-meeting-reminders-in-focus-over-other-applications/

1
отвечен AdamV 2022-12-07 14:37

Если вы хотите в Outlook ответ этот пост имеет большую часть ответа. Однако это не сработало для меня, так как окно напоминания не видно до Application_Reminder подпрограмма завершена, что означает FindWindowA не удается найти окно напоминания.

Если у вас есть тот же вопрос, я взломал решение с помощью SetTimer. Я повторно разместить шаги в полном объеме, хотя сверху и хвост это просто повторение из другая должность.

  • создать Цифровой сертификат на потом. Нажмите "Пуск" и введите "сертификат", выберите "цифровой сертификат для проектов VBA"
  • введите имя сертификата и нажмите Готово
  • откройте Outlook и нажмите ALT + F11 для запуска редактора VBA.
  • в дереве слева разверните "объекты Microsoft Office Outlook" и дважды щелкните "ThisOutlookSession"
  • вставьте следующий код:

Параметр Explicit

Private Sub Application_Quit ()

' выключить таймер при выходе очень важно

    Вызовите DeactivateTimer

Конец Sub

Private Sub Application_Reminder (ByVal Элемент Как Объект)

' вызов вспомогательной функции в 1 секунду, как окно напоминания еще не видно

    Если Элемент Typeof Является AppointmentItem, То ActivateTimer (1)

Конец Sub

  • Добавить новый модуль, щелкнув правой кнопкой мыши на 'ThisOutlookSession', а затем выбрав вставить > модуль
  • в новый модуль (на который надо было переключиться) вставьте следующий код:

Параметр Explicit

частный объявить функцию PtrSafe Findwindowa Lib "user32" (_

    ByVal lpClassName в виде строки,_

    ByVal lpWindowName как строка) как Лонг

Private объявите функцию PtrSafe Setwindowpos Lib "user32" ( _

    Как byval hwnd и как долго, _

    ByVal hWndInsertAfter как долго,_

    Бывал Х Как Долго,_

    Бывал Я Так Долго,_

    Бывал СХ как долго,_

    Бывал Сай так долго,_

    Бывал wFlags как долго) как долго

Частная Функцию Declare PtrSafe Значение SetTimer Либ "user32" (_

    Как byval hwnd и как долго, _

    NIDEvent бывал так долго, _

    UElapse бывал так долго, _

    LpTimerfunc бывал как долго) как долго

Private объявите функцию Ptrsafe KillTimer Lib "user32" ( _

    Как byval hwnd и как долго, _

    NIDEvent бывал как долго) как долго

Private Const SWP_NOSIZE = &H1

Частный Const SWP_NOMOVE = &H2

Частные флаги Const As Long = SWP_NOMOVE или SWP_NOSIZE

Private Const HWND_TOPMOST = -1

частный TimerID до тех пор ' нужен идентификатор таймера, чтобы в конечном итоге выключить таймер. Если идентификатор таймера не 0, то таймер работает

общественные суб ActivateTimer(nSeconds бывал так долго)

' вызов SetTimer принимает миллисекунды, поэтому преобразуйте в секунды

    nSeconds = nSeconds * 1000

' проверьте, работает ли таймер перед вызовом SetTimer

    Если TimerID <> 0, То Вызываем DeactivateTimer

TimerID = значение SetTimer(0, 0, nSeconds, оператором addressof Reminder_Helper)

Если TimerID = 0, то MsgBox " не удалось активировать таймер."

Конец Sub

Public Sub DeactivateTimer ()

Dim lSuccess As Long

Если TimerID <> 0 тогда

        lSuccess = KillTimer (0, TimerID)

        Если lSuccess = 0, то

            MsgBox " не удалось отключить таймер."

        Остальное

            TimerID = 0

        Конец If

    Конец If

Конец Sub

частная суб Reminder_Helper(как byval hwnd и как долго, uMsg бывал так долго, idevent бывал так долго, Systime бывал в Long)

Dim ReminderWindowHWnd Как Вариант

Если idevent = TimerID, то

В Резюме Ошибки Рядом

        ReminderWindowHWnd = FindWindowA (vbNullString, "1 напоминание")

        Setwindowpos и ReminderWindowHWnd, HWND_TOPMOST, 0, 0, 0, 0, флаги

        DeactivateTimer

Конец Если

Конец Sub

  • подпишите макрос, чтобы он работал, перейдя в меню Сервис > цифровая подпись... и выбор сертификата, который вы создали ранее
  • закрыть окно VBA
  • включить все макросы в файле > Параметры > Центр управления безопасностью > параметры Центра управления безопасностью > параметры макросов
  • закрыть и снова открыть Outlook

Я бы выложил это на дне другая должность но он заблокирован для новых пользователей, таких как я!

0
отвечен James MacAdie 2022-12-07 16:54

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх