Outlook Inspector.Activate方法不将窗口带到前台

时间:2013-05-30 20:36:14

标签: vba outlook-2010

我想确保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之外,我真的没有其他选择吗?

0 个答案:

没有答案