我有一点时间搞清楚这一点,我在网上找到的教程不完整或适用于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程序员,所以我有点想通过谷歌搜索来解决这些问题....任何帮助都将非常感激。
答案 0 :(得分:0)
尝试将(LPARAM)"Hello"
更改为(LPARAM)L"Hello"
。我认为.net期望string为widechar。
答案 1 :(得分:0)
您的C字符串不是Unicode字符串,而是ANSI字符串。尝试使用PtrToStringANSI而不是PtrToStringUnicode