|
SendMessage (WM_COPYDATA, String) Приемник - ANSI, Передатчик - Unicode (.Net)
|
|||
---|---|---|---|
#18+
Приемник, VB6: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Передатчик, .NET Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
.NET -код только родил, вроде претендует на правильность. Но эта пара нерабочая. Причину - в общем могу объяснить. VB6 ждет на входе указатель на ANSI-строку с терминирующим '\0' на конце. cds.lpData -указатель на начало строки, cds.cbData -длина строки(массива байтов). Я 100% уверен что .NET код отправляет указатель на Юникод-строку. Были б оба приложения .NET-юникод, думаю было б без проблем. Т.е. вопрос: как мне запихнуть в указатель cds.lpData на стороне .NET ANSI-строку? Как ее в .NET сделать (из дефолтной юникодовой As String)? Юникод надо странсформировать в ANSI согласно текущей кодировке системы (Панель управления -> Язык и региональные стандарты -> Дополнительно), т.е. если там стоит "Русский", то и ANSI-кодировка должна быть "Русский". Оговорка: VB6 код приемника переделывать на данном этапе не буду. Я конечно за Юникод (в перспективе). Но сейчас типа нужна заглушка. И не только заглушка. У меня есть еще C++ компонент, кот. посылаются WM_COPYDATA, перевод этого компонента в .NET/Unicode не планирую, т.е. мне надо знать как послать НЕюникод строку. В принципе, я побайтно думаю смогу это сделать, или порывшись в API WideCharToMultiByte и прочее в этом духе. "Красивого" способа нет какого-либо? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 21:33 |
|
SendMessage (WM_COPYDATA, String) Приемник - ANSI, Передатчик - Unicode (.Net)
|
|||
---|---|---|---|
#18+
Да, ребят (модераторы), у вас там чего вирус на сайте? Кнопки типа SRC -> COLOR-> дополнит. -> (со стрелками) не нажимаются. Я нарочно на нескольких компах попробовал. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 21:38 |
|
SendMessage (WM_COPYDATA, String) Приемник - ANSI, Передатчик - Unicode (.Net)
|
|||
---|---|---|---|
#18+
Дмитрий77В принципе, я побайтно думаю смогу это сделать, или порывшись в API а Marshal.StringToCoTaskMemAnsi никак не подойдёт? всё анальным способом хочется сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 22:39 |
|
SendMessage (WM_COPYDATA, String) Приемник - ANSI, Передатчик - Unicode (.Net)
|
|||
---|---|---|---|
#18+
Дмитрий77"Красивого" способа нет какого-либо? Изопропилвсё анальным способом хочется сделать?Ты, либо не дочитал, либо для тебя анальный=красивый. Я тебя еще раз попрошу, НЕ НАДО отвечать в таком стиле. Я тебя чем-то обидел? Хорошо я поясню. Имелось ввиду .NET-методом. Иначе б не спрашивал. Изопропила Marshal.StringToCoTaskMemAnsi никак не подойдёт?Подойдет, СПАСИБО. Именно об этом я и спрашивал. Код: vbnet 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.10.2013, 23:21 |
|
|
start [/forum/topic.php?fid=20&fpage=144&tid=1403891]: |
0ms |
get settings: |
9ms |
get forum list: |
10ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
80ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 10ms |
total: | 194ms |
0 / 0 |