1

Outlook 2010 のリマインダーが起動されたときに実際にポップアップすることを確認したいと思います。

SE の質問で説明されているものよりもクリーンな実装に取り​​組んでいます Windows 7 で Outlook カレンダーのリマインダーを一番上に置く方法

Activateメソッドを呼び出すと、結果が気になります。これにより、インスペクタ ウィンドウがフォアグラウンドに移動し、キーボード フォーカスが設定されてアクティブになります。

リマインダー インスペクター アイテムを呼び出すActivate必要があります。これは、Outlook エクスプローラーまたはインスペクターが開いていない場合は何も返さない呼び出しの問題ではありません。null を処理し、何も見つからない場合にメッセージ ボックスを表示しているためです。Application.ActiveWindow

'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 が最小化されている場合、アクティブ化されたウィンドウは前面に移動してフォーカスを受け取りますが、バックグラウンドで開いている場合はそうではありません。

アラート ウィンドウの z-index を設定するために user32 を呼び出す以外に選択肢はありませんか?

4

0 に答える 0