Este suplemento gratuito pode ajudar a forçar a janela de lembrete a aparecer como você deseja: link
Estou usando o Outlook 2007 no Vista Business de 64 bits e tenho tido problemas com as notificações do Calendário do Outlook aparecendo por trás de outras janelas. Isso deixa minha única pista de que eu deveria estar em uma reunião que há uma entrada azul na barra de tarefas. Eu não encontrei um cenário relacionado a isso.
Alguém mais teve esse problema? Alguém sabe como obter janelas de notificação em cima de outras janelas de forma consistente?
Este suplemento gratuito pode ajudar a forçar a janela de lembrete a aparecer como você deseja: link
Se você quiser uma resposta no Outlook, esta postagem terá a maior parte da resposta. No entanto, não funcionou para mim, pois a janela de lembrete não é visível até que a sub-rotina Application_Reminder
tenha terminado, o que significa que FindWindowA
não pode encontrar a janela de lembrete.
Se você tiver o mesmo problema, eu invadi uma solução usando SetTimer
. Vou re-postar as etapas na íntegra, embora a parte superior e traseira seja apenas uma repetição do outro post .
Option Explicit
Private Sub Application_Quit()
' Turn off timer upon quitting VERY IMPORTANT
Call DeactivateTimerEnd Sub
Private Sub Application_Reminder(ByVal Item As Object)
' Call helper function in 1 second as reminder window not yet visible
If TypeOf Item Is AppointmentItem Then ActivateTimer (1)End Sub
Option Explicit
Private Declare PtrSafe Function FindWindowA Lib "user32" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String) As LongPrivate 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 LongPrivate Declare PtrSafe Function SetTimer Lib "user32" ( _
ByVal hwnd As Long, _
ByVal nIDEvent As Long, _
ByVal uElapse As Long, _
ByVal lpTimerfunc As Long) As LongPrivate Declare PtrSafe Function KillTimer Lib "user32" ( _
ByVal hwnd As Long, _
ByVal nIDEvent As Long) As LongPrivate Const SWP_NOSIZE = &H1
Private Const SWP_NOMOVE = &H2
Private Const FLAGS As Long = SWP_NOMOVE Or SWP_NOSIZE
Private Const HWND_TOPMOST = -1Private TimerID As Long 'Need a timer ID to eventually turn off the timer. If the timer ID is not 0 then the timer is running
Public Sub ActivateTimer(ByVal nSeconds As Long)
'The SetTimer call accepts milliseconds, so convert to seconds
nSeconds = nSeconds * 1000' Check to see if timer is running before call to SetTimer
If TimerID <> 0 Then Call DeactivateTimerTimerID = SetTimer(0, 0, nSeconds, AddressOf Reminder_Helper)
If TimerID = 0 Then MsgBox "The timer failed to activate."
End Sub
Public Sub DeactivateTimer()
Dim lSuccess As Long
If TimerID <> 0 Then
lSuccess = KillTimer(0, TimerID)
If lSuccess = 0 Then
MsgBox "The timer failed to deactivate."
Else
TimerID = 0
End If
End IfEnd Sub
Private Sub Reminder_Helper(ByVal hwnd As Long, ByVal uMsg As Long, ByVal idevent As Long, ByVal Systime As Long)
Dim ReminderWindowHWnd As Variant
If idevent = TimerID Then
On Error Resume Next
ReminderWindowHWnd = FindWindowA(vbNullString, "1 Reminder")
SetWindowPos ReminderWindowHWnd, HWND_TOPMOST, 0, 0, 0, 0, FLAGS
DeactivateTimerEnd If
End Sub
Eu teria postado isso no final do outro post , mas ele está bloqueado para novos usuários como eu!