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 を呼び出す以外に選択肢はありませんか?