我花了很长时间才弄明白这一点,我在网上找到的教程并不完整,或者是针对VB6.0的(在某些情况下是过时的)。在C++方面,我有以下几点:
.hwndExternalApplication = FindWindow(NULL,L“直播客户端”);SendMessage(hwndExternalApplication,WM_SETTEXT,NULL,(LPARAM)"Hello");.....
"Dromocast Client“是我的visual basic应用程序,我检查以确保它不为空。事实上,我确信我在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程序员,所以我正在尝试通过googling....any帮助解决这个问题,我将非常感激。
发布于 2010-03-03 02:00:30
尝试将(LPARAM)"Hello"更改为(LPARAM)L"Hello"。我认为.net期望字符串是宽字符。
发布于 2010-03-03 17:24:40
您的C字符串不是Unicode字符串,而是ANSI字符串。尝试使用PtrToStringANSI而不是PtrToStringUnicode
https://stackoverflow.com/questions/2365451
复制相似问题