Access.Applicationオブジェクトにはイベントがない。
どうすべきなのだろうか整理しながら考える。あれこれ調べてちょこっと確認中、NativeWindowクラスを使ってWindowsメッセージを監視することになりそうな感じ。
Imports System.Windows.Forms
Imports System.Diagnostics
Public Class SubclassHWND
Inherits NativeWindow
Const WM_GETTEXT As Integer = &HD
Const WM_SETTEXT As Integer = &HC
Const WM_CLOSE As Integer = &H10
Const WM_PAINT As Integer = &HF
Const WM_SETCURSOR As Integer = &H20
Const WM_WINDOWPOSCHANGING As Integer = &H46
Protected Overrides Sub WndProc(ByRef m As Message)
Select Case m.Msg
Case WM_CLOSE
ReleaseHandle()
If Globals.ThisAddIn.Application.CurrentProject.FullName.Length > 0 Then
Globals.ThisAddIn.Application.CloseCurrentDatabase()
End If
Globals.ThisAddIn.Application.Quit()
Return
Case Else
Debug.WriteLine(m.ToString)
End Select
MyBase.WndProc(m)
End Sub
End Class
Public Class ThisAddIn
Private s As SubclassHWND
Private Sub ThisAddIn_Startup() Handles Me.Startup
s = New SubclassHWND
s.AssignHandle(New IntPtr(Me.Application.hWndAccessApp))
End Sub
Private Sub ThisAddIn_Shutdown() Handles Me.Shutdown
If s.Handle <> IntPtr.Zero Then
s.ReleaseHandle()
End If
End Sub
End Class
使っていこうかやめとこうか、必要になった時改めて考えるとしよう。
0 件のコメント:
コメントを投稿