ExcelのアドインがMicrosoft.Office.Interop.Excel.Applicationのイベントをハンドルしない
表題の件に付きお助け頂けませんでしょうか?
前回Excelアドイン(VSTO)でアドインもしくはExcelがフォーカスを失った(他のアプリが選択された)事を検知したいで質問した者です。
その際Excelがフォーカスを失った事をMicrosoft.Office.Interop.Excel.ApplicationクラスのDeactiveWindowイベントで捕まえれば良いとアドバイスを受けテスト用にサンプルを組んでみましたがイベントをキャッチしてくれません。
Public Class ThisAddIn
Private Sub ThisAddIn_Startup() Handles Me.Startup
MsgBox("startup")
AddHandler Me.Application.WindowDeactivate, AddressOf Application_WindowDeactivate
End Sub
Private Sub Application_WindowDeactivate(Wb As Microsoft.Office.Tools.Excel.Workbook, wn As Microsoft.Office.Interop.Excel.Window)
MsgBox("deactive")
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
End Sub
End Class
VS2010のデバッグでアドイン起動そしてエクセルが表示されますがここで別のアプリケーション(Google CHROME)をタスクバーから選択してExcelをDeactiveにしてもApplication_WindowDeactivateが実行されません。
ここでExcelではなくWord2007で以下のアドインを実行すると期待通りDeactiveイベントをキャッチして所要の動きをします。
Imports System.Windows.Forms
Public Class ThisAddIn
Dim initialized As Boolean = False
Private Sub InitializeCustom()
initialized = True
AddHandler Globals.ThisAddIn.Application.WindowDeactivate, AddressOf Application_WindowActivate
End Sub
Private Sub Application_WindowActivate(Doc As Word.Document, Wn As Word.Window)
MessageBox.Show("Application_WindowActivate")
End Sub
Private Sub ThisAddIn_Startup() Handles Me.Startup
Me.InitializeCustom()
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
End Sub
End Class
ExcelとWordでどのような差があってExcelでイベントを掴めていないのかが色々考えているのですが想像できません。
どなたか直接の解決策でなくても良いので調べ方や検証の仕方などございましたらお助け頂けますでしょうか?
よろしくお願いします。