我想确保Outlook 2010中的Reminders在被解雇时实际弹出。
我正在开发一个比SE问题How to make Outlook Calendar reminders stay on top in Windows 7
中讨论的更清晰的实现我在调用Activate
方法时遇到了挑剔的结果,该方法通过将检查器窗口置于前台并设置键盘焦点来激活检查器窗口。
我正在呼叫Activate
应该是什么应该是提醒检查器项目。这是不调用Application.ActiveWindow
的问题,如果没有打开Outlook资源管理器或检查器则返回,因为我正在处理空值并显示消息如果它找不到任何东西。
'ensures all reminder notices receive focus
Private Sub Application_Reminder(ByVal Item As Object)
If TypeOf Item Is AppointmentItem Then
If Not (Application.ActiveWindow Is Nothing) Then
Dim myOutlook As Object
Set myOutlook = GetObject(, "Outlook.Application")
If myOutlook.ActiveWindow.WindowState = olMinimized Then
'This works fine
Application.ActiveExplorer.Activate
Else
'This call won't set window ontop
Application.ActiveExplorer.Activate
End If
End If
End If
End Sub
当代码调用Activate
时,如果outlook被最小化,激活的窗口将被拉到前面并获得焦点,但如果它在后台打开则不会。
除了调用user32以设置警报窗口的z-index之外,我真的没有其他选择吗?