| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Перехват ExtTextOut мусор или непонятная кодировка |
| Автор: -Сергей- 10.4.2014, 10:59 | ||||
| Внедряю код в процесс с целью перехватить текст, передаваемый в ExtTextOut. Перехватываю обе функции ExtTextOutA и ExtTextOutW. Для тестирования написал прогу, которая использует обе функции. Функции перехватываются хорошо. Для передачи отловленного текста использую WM_COPYDATA ExtTextOutW перехватывается, но дело в том, что когда я сам вызываю ее в коде, текст получаю нужный, а вот контроллы которые рисуют текст, например TButton, с надписью "Кнопка" от нее я получаю непонятную кодировку "DzȕȖȗȒȈ" или текст "Button" приходит как "%XWWRQ" C ExtTextOutA совсем все плачевно - там я получаю мусор вместе с Access violation. Вызываю я ее правильно, но перехватывается она как ExtTextOutW (в приемнике Msg.CopyDataStruct.dwData = 2) непонимаю почему. Помогите разобраться в чем дело. Работаю в OC W7 Delphi XE5 Перехват и передача:
Принимающая сторона:
|
| Автор: CynicRus 10.4.2014, 14:37 | ||||
Хм, можно попробовать проверить Options на:
ну и если оно соответствует, то декодировать это. Пример разбора на C++
|
| Автор: -Сергей- 14.4.2014, 05:13 | ||||||
| Спасибо за пример! Я не сильный знаток С, кое-что понимаю, кое-что не совсем. Как на паскале будет это:
Так что ли?
И здесь непонятно
allIndices это же не массив, а WORD |
| Автор: CynicRus 14.4.2014, 07:39 | ||||||||
allIndices - указатель на Word массив же. В случае с циклом - да, похоже на то. |
| Автор: -Сергей- 22.4.2014, 08:16 | ||
Перевел на Delphi, может кому пригодится.
|