Не отправляется сообщение окну SendMessage (winApi) - Visual Basic .NET
Формулировка задачи:
Господа, выручайте.
Имеется два приложения, из одного приложения в другое нужно передавать данные(строку) через winApi.
У отправителя пишу что-то такое:
на принимающей стороне:
Никогда не попадает в необходимое условие select-case. Почему?
На c# примерно такой код отлично работает, на vb нет.
Благодарен за любую помощь.
Листинг программы
- Const WM_COPYDATA As Integer = &H4A
- <DllImport("user32.dll")> _
- Public Shared Function FindWindow(lpClassName As String, lpWindowName As String) As Integer
- End Function
- <DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)>
- Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
- End Function
- Private Shared Sub SendHWND(hw As Integer, Name As String)
- Dim ptr As IntPtr = Marshal.StringToHGlobalAnsi("test")
- SendMessage(hw, WM_COPYDATA, IntPtr.Zero, ptr)
- End Sub
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Dim handle As IntPtr = FindWindow(Nothing, "CDPReceiver")
- Debug.Print(handle)
- If handle <> IntPtr.Zero Then
- SendHWND(handle, "hello")
- End If
- End Sub
Листинг программы
- Const WM_COPYDATA As Integer = &H4A
- Protected Overrides Sub WndProc(ByRef m As Message)
- Select Case m.Msg
- Case WM_COPYDATA
- MessageBox.Show("Hey!")
- End Select
- MyBase.WndProc(m)
- End Sub
Решение задачи: «Не отправляется сообщение окну SendMessage (winApi)»
textual
Листинг программы
- Public Class Form1
- Const WM_COPYDATA As Integer = &H4A
- Const WM_NULL As Integer = 0
- Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
- If CInt(m.Msg) = WM_Null Then
- MsgBox(m.Msg)
- End If
- MyBase.WndProc(m)
- End Sub
- End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д