Olá,
Estou com um pequeno problema, tenho dois aplicativos que precisa se comunicar entre eles, aplicação 1 envia uma mensagem para aplicação 2 que retorna o param1 e o param2, aplicação 1 recebe os valores corretamente o problema é que fica em loop aplicação 1 fica recebendo o tempo todo não para nunca.
Alguém sabe que esta errado no meu código.
'------ APLICAÇÃO 1
Public
Class Form1
Const WM_CUSTOMMSG As Integer = &H400
Private HWND_BROADCAST As New IntPtr(65535)
Private ourActivateMessage As Integer
Dim Msg
As New MsgWindow(
Me)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim activateMessage As Message = Message.Create(HWND_BROADCAST, WM_CUSTOMMSG, IntPtr.Zero, IntPtr.Zero)
MessageWindow.PostMessage(activateMessage)
End Sub
<DllImport("CoreDll.Dll")> _
Private Shared Function RegisterWindowMessage(ByVal lpString As String) As Integer
End Function
Public Declare Function FindWindow Lib "Coredll" Alias "FindWindowW" ( _
ByVal lpClassName As String, _
ByVal lpWindowName As String _
) As IntPtr
End
Class
Public
Class MsgWindow
Inherits MessageWindow
Const WM_CUSTOMMSG As Integer = &H400
Private ourActivateMessage As Integer
Private mainForm As Form
<DllImport("CoreDll.Dll")> _
Private Shared Function RegisterWindowMessage(ByVal lpString As String) As Integer
End Function
Public Sub New(ByVal mainForm As Form)
Me.mainForm = mainForm
Dim applicationName As String = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
Me.ourActivateMessage = RegisterWindowMessage(applicationName)
End Sub
Protected Overrides Sub WndProc(ByRef msg As Message)
MyBase.WndProc(msg)
Select Case msg.Msg
Case WM_CUSTOMMSG
Console.WriteLine(msg.WParam.ToString)
Console.WriteLine(msg.LParam.ToString)
End Select
End Sub
End Class
'------ APLICAÇÃO 2
Imports
Microsoft.WindowsCE.Forms
Imports
System.Runtime.InteropServices
Public
Class Form1
Dim Msg As New MsgWindow(Me)
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
Public Class MsgWindow
Inherits MessageWindow
Private HWND_BROADCAST As New IntPtr(65535)
Const WM_CUSTOMMSG As Integer = &H400
Private ourActivateMessage As Integer
Private mainForm As Form
<DllImport("CoreDll.Dll")> _
Private Shared Function RegisterWindowMessage(ByVal lpString As String) As Integer
End Function
Private param1 As Long = -16
Private param2 As Long = -40
Public Sub New(ByVal mainForm As Form)
Me.mainForm = mainForm
Dim applicationName As String = System.Reflection.Assembly.GetExecutingAssembly().GetName().Name
Me.ourActivateMessage = RegisterWindowMessage(applicationName)
End Sub
Protected Overrides Sub WndProc(ByRef msg As Message)
MyBase.WndProc(msg)
Select Case msg.Msg
Case WM_CUSTOMMSG
EnviaRetorno()
End Select
End Sub
Public Sub EnviaRetorno()
Dim msg As Message = Message.Create(HWND_BROADCAST, WM_CUSTOMMSG, New IntPtr(param1), New IntPtr(param2))
MessageWindow.PostMessage(msg)
End Sub
End Class