在.NET框架中将数据从VC ++发送到Visual Basic

时间:2010-03-02 17:57:24

标签: vb.net visual-c++

我有一点时间搞清楚这一点,我在网上找到的教程不完整或适用于VB 6.0(在某些情况下已经过时)。在C ++方面,我有以下::

..... hwndExternalApplication = FindWindow(NULL,L“Dromocast Client”); SendMessage(hwndExternalApplication,WM_SETTEXT,NULL,(LPARAM)“Hello”); .....

“Dromocast Client”是我的visual basic应用程序,我检查确保它不是NULL。实际上我确定我在VB端获得了一些数据。在我的Visual Basic方面,我有以下::

Protected Overrides Sub WndProc(ByRef m As Message)
    Select Case (m.Msg)
        Case WM_SETTEXT
            Dim strTemp As String
            strTemp = System.Runtime.InteropServices.Marshal.PtrToStringUni(m.LParam)
            MessageBox.Show("GOT THE MESSAGE, SETTING LOCAL VARIABLE")
    End Select

    MyBase.WndProc(m)
End Sub

当我将数据发送到它的垃圾时,意味着strTemp就像所有这些中文字符一样出现,而我在visual basic程序上的标题栏也会被一堆汉字乱码。我的猜测是我的“SendMessage”写错了,或者我做的事情很傻,但我不知道是什么。我不是一个Windows程序员,所以我有点想通过谷歌搜索来解决这些问题....任何帮助都将非常感激。

2 个答案:

答案 0 :(得分:0)

尝试将(LPARAM)"Hello"更改为(LPARAM)L"Hello"。我认为.net期望string为widechar。

答案 1 :(得分:0)

您的C字符串不是Unicode字符串,而是ANSI字符串。尝试使用PtrToStringANSI而不是PtrToStringUnicode