私たちの最大の古い VB6 アプリの 1 つには、他のアプリ (一部の dotNET アプリを含む) が Windows メッセージを介して ID を渡すことができるようにするためのコードが含まれています。形。メッセージフックは、ユーザーがログインして認証された後に追加され、ログアウトすると削除されます。
Public Sub HookClaimFinderCall()
lpPrevWndProc = SetWindowLong(gHW, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnhookClaimFinderCall()
Dim temp As Long
If gHW <> 0 Then temp = SetWindowLong(gHW, GWL_WNDPROC, lpPrevWndProc)
End Sub
Private Function WindowProc(ByVal hw As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
If uMsg = WM_FINDCLAIM Then
MasterFindClaim lParam
End If
WindowProc = CallWindowProc(lpPrevWndProc, hw, uMsg, wParam, lParam)
End Function
ただし、これには 2 つの問題があります。The first related to Visual Studio 6. コードのデバッグ中にエラーが発生して [Continue End Debug Help] ダイアログ ボックスが表示された場合、End キーを押すとすぐに Visual Studio が終了します (保存されていない変更は失われます)。メッセージ フックがまだアクティブ化されていない場合、これは発生しません。何が原因で、フックをロードするコードをコメントアウトする以外に、それを止めるためにできることはありますか?
次に、ユーザーが適切にログアウトせずにアプリを終了した場合 (何らかの方法で)、メッセージ フックはどうなりますか?
上記のすべての用語が正しいことを願っています...