Отправка данных из VC ++ в Visual Basic в .NET Framework - PullRequest
0 голосов
/ 02 марта 2010

У меня чертовски много времени, чтобы понять это, учебники, которые я нашел в Интернете, не завершены или предназначены для VB 6.0 (в некоторых случаях устарели). На стороне C ++ у меня есть следующее: *

..... hwndExternalApplication = FindWindow (NULL, L "Клиент Dromocast"); SendMessage (hwndExternalApplication, WM_SETTEXT, NULL, (LPARAM) "Hello"); .....

«Клиент Dromocast» - это мое базовое визуальное приложение, и я проверил, чтобы убедиться, что оно не равно 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 голосов
/ 03 марта 2010

Ваша строка C не является строкой Unicode, это строка ANSI . Попробуйте использовать PtrToStringANSI вместо PtrToStringUnicode

0 голосов
/ 02 марта 2010

Попробуйте изменить (LPARAM)"Hello" на (LPARAM)L"Hello". Я думаю .net ожидает, что строка будет широкоформатной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...