|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Notepad++, Scintilla, SendMessages и Delphi
Здравствуйте, у меня проблемы с управлением Scintillой в n++ через сообщения. Использую delphi.
Получаю handle скинтиллы через FindWindow и FindWindowEx. Пытаюсь передать строку для замены так: Код:
str:='qwerty'#0; sendmessage(hwndScintilla,2170,0, lparam(pchar(str)) ); 2170 - это SCI_REPLACESEL. Я не подключаю заголовочные файлы, поэтому использую просто числа вместо констант. Но вместо переданной строки встаёт вот это: https://yadi.sk/i/-Vp5G2gdTIngLA Причём при каждом перезапуске n++ и моей программы "это" всегда разное. А сообщения, возвращающие числа, работают нормально: Код:
sendmessage(hwndScintilla,2143,0,0 ) Как мне передать строку для замены в Scintilla? Документация отсюда: https://www.scintilla.org/ScintillaD...SCI_REPLACESEL Константы тут: http://freesourcecode.net/cprojects/...de/Scintilla.h |
#2
|
|||
|
|||
Почитай вот тут: https://www.tek-tips.com/viewthread.cfm?qid=1181059
|
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
romserg (21.09.2019)
|
#3
|
|||
|
|||
lmikle, спасибо, действительно, про адресные пространства я не подумал. Правда, WM_COPYDATA вряд ли подойдёт, т.к. scintilla не сможет её обработать, я теперь копаю в сторону VirtualAllocEx.
|
#4
|
|||
|
|||
Собственно, я и хотел указать на это.
Кстати, посмотри, может все-таки нужно именно COPYDATA, просто в hParam передавать нужное сообщение, а в lParam - адрес строки. |
#5
|
|||
|
|||
lmikle, увы...
Пришлось передавать по одному символу с помощью WM_CHAR (в VirtualAllocEx копаться не захотел). |