开发人员,您是否经常因为通知在后台而错过 Outlook 会议约会?

开发人员,您是否经常因为通知在后台而错过 Outlook 会议约会?

作为一名开发人员,我很沮丧,因为我的老板和同事总是给我贴上“我总是开会迟到”的标签。但就像所有迟到的人一样,我也有自己的借口。

当您在 Visual Studio 上大量打字时,很容易错过 Outlook 通知。

我在网上寻找解决方案。希望找到一种可以让整个电脑停止运行并在我的屏幕上显示一个大红框警告提醒的方法,让我知道前面有一个会议约会。但遗憾的是,很多解决方案都是 Outlook 的付费插件,仍然不能满足我的要求。

该线程中的所有解决方案也被证明是困难的并且效果不佳。 如何让 Outlook 日历提醒在 Windows 7 中保持最顶部

答案1

我最终找到了一个使用 Outlook VBA 和一个简单的 EXE 的简单解决方案。

以下是如何不再错过 Outlook 会议约会的方法。

为什么只为此目的使用独立的 exe 应用程序?好吧,我在 VBA 中嵌入了大红框,但该解决方案充满了问题(我相信这是因为我必须使用 hwnd 和其他不寻常的系统属性来将大红框保持在顶部)。因此,为了让事情更简单,为什么不使用一个只做一件事的基本 EXE。您可以使用微软的免费工具(Visual Studio Community 2015 是免费的)。

这是 EXE 代码。具有一个窗体的简单 Windows 窗体应用程序。编译此代码。

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

这就是我在 Outlook 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

相关内容