Attribute VB_Name = "mPlugin" Option Explicit ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Módulo de comunicação com o plugin externo ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Guarda o nome do módulo Private Const ST_MY_NAME As String = "mPlugin" ' Guarda Handlers Public lnHandler As Long Private lnOldHandler As Long ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Recepção de mensagens externas ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Function PluginMessage(ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long ' Se o plugin já fora iniciado If Not (p_Plugin Is Nothing) Then ' Repassa para a classe responsável If p_Plugin.ProcessMessage(Msg, wParam, lParam, PluginMessage) Then ' Não há mais processamento Exit Function End If End If ' O plugin não está pronto ou não processou a mensagem, repassar para handler original PluginMessage = CallWindowProc(lnOldHandler, lnHandler, Msg, wParam, lParam) End Function ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Inicia handler ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Function startHandler() ' Guarda handler lnHandler = fHandler.hWnd ' Linka lnOldHandler = SetWindowLong(lnHandler, GWL_WNDPROC, AddressOf PluginMessage) End Function ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' Finaliza handler ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' Public Sub endHandler() ' Volta handler anterior SetWindowLong lnHandler, GWL_WNDPROC, lnOldHandler End Sub