Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: CL | DM;

Вниз

Добавить текст в чужой RichEdit 2.0   Найти похожие ветки 

 
3k   (2005-04-17 13:58) [0]

Здравствуйте, уважаемые мастера.
Есть такая проблема, речь пойдет о RichEdit 2.0 . Нашел я окно, его Handle, имя класса (RichEdit20W). Как записать в RichEdit чужого приложения текст. Не прокатывает почему-то WM_SETTEXT.


 
Roadstar   (2005-04-18 10:13) [1]

И не прокатит, потому, что это чужой процесс.
Ищи тут: CreateRemoteThread, Write/Read ProcessMemory и т.д.


 
ANB ©   (2005-04-18 11:21) [2]


> Roadstar   (18.04.05 10:13) [1]
- не прав.


> 3k   (17.04.05 13:58)  
про WM_SETTEXT я уже сюда писал, к тексту эдитов это сообщение никакого отношения не имеет. 2 пути - эмулировать нажатие клавиш (не очень просто и проблемы с русскими буквами) или попробовать юзать EM_SETSEL + EM_REPLACESEL. Для эдитов и мемок проверял - работает. Для RichEdit попробуй сам.
ЗЫ.Иногда WM_GETTEXT/WM_SETTEXT для некоторых эдитов работает правильно, но я редко на такие нарывался.


 
ANB ©   (2005-04-18 11:21) [3]


> Roadstar   (18.04.05 10:13) [1]
- не прав.


> 3k   (17.04.05 13:58)  
про WM_SETTEXT я уже сюда писал, к тексту эдитов это сообщение никакого отношения не имеет. 2 пути - эмулировать нажатие клавиш (не очень просто и проблемы с русскими буквами) или попробовать юзать EM_SETSEL + EM_REPLACESEL. Для эдитов и мемок проверял - работает. Для RichEdit попробуй сам.
ЗЫ.Иногда WM_GETTEXT/WM_SETTEXT для некоторых эдитов работает правильно, но я редко на такие нарывался.


 
ANB ©   (2005-04-18 11:22) [4]


> Roadstar   (18.04.05 10:13) [1]
- не прав.


> 3k   (17.04.05 13:58)  
про WM_SETTEXT я уже сюда писал, к тексту эдитов это сообщение никакого отношения не имеет. 2 пути - эмулировать нажатие клавиш (не очень просто и проблемы с русскими буквами) или попробовать юзать EM_SETSEL + EM_REPLACESEL. Для эдитов и мемок проверял - работает. Для RichEdit попробуй сам.
ЗЫ.Иногда WM_GETTEXT/WM_SETTEXT для некоторых эдитов работает правильно, но я редко на такие нарывался.


 
3k   (2005-04-18 14:31) [5]

> ANB "или попробовать юзать EM_SETSEL + EM_REPLACESEL"

Пробывал, не работает. Может я ошибся где (см. ниже)? И насчет эмуляции нажатий клавиш, тоже думал, слишком медленно работает.

procedure Insert(hREdit:THandle; Index:Integer; const S:string);
var
L: Integer;
Selection: TCharRange;
Fmt: PChar;
Str: string;
begin
if Index >= 0 then
begin
Selection.cpMin := SendMessage(hREdit, EM_LINEINDEX, Index, 0);
if Selection.cpMin >= 0 then Fmt := "%s"#13#10
else begin
Selection.cpMin :=SendMessage(hREdit, EM_LINEINDEX, Index - 1, 0);
if Selection.cpMin < 0 then Exit;
L := SendMessage(hREdit, EM_LINELENGTH, Selection.cpMin, 0);
if L = 0 then Exit;
Inc(Selection.cpMin, L);
Fmt := #13#10"%s";
end;
Selection.cpMax := Selection.cpMin;
SendMessage(hREdit, EM_EXSETSEL, 0, Longint(@Selection));
Str := Format(Fmt, [S]);
SendMessage(hREdit, EM_REPLACESEL, 0, LongInt(PChar(Str)));
end;
end;


 
ANB ©   (2005-04-19 09:26) [6]

Я у себя проверил. Текст присваивается. Тебе нужно именно добавить или заменить ?
Если заменить - это всего 2 команды :

SendMessage(hControl, EM_SETSEL, 0, -1); // Выделить все
SendMessage(hControl, EM_REPLACESEL, 0, LongWord(PChar(sText))); // Заменить выделение

Если добавить - нужно загнать выделение в конец.


 
3k   (2005-04-22 02:38) [7]

В отъезде был, так что хочу вернуться к теме.

To: ANB ©   (19.04.05 09:26) [6]
1. А hREdit RichEdit"a, это был handle в другом приложении, т.е Вы посылали текст не в RichEdit собственного приложения?
2. Это был именно RichEdit 2.0?


 
3k   (2005-04-22 02:38) [8]

В отъезде был, так что хочу вернуться к теме.

To: ANB ©   (19.04.05 09:26) [6]
1. А hREdit RichEdit"a, это был handle в другом приложении, т.е Вы посылали текст не в RichEdit собственного приложения?
2. Это был именно RichEdit 2.0?


 
ANB ©   (2005-04-22 09:16) [9]

Я в WordPad посылал. Версия 5.1 от XP.


 
3k   (2005-04-22 18:29) [10]

ANB & Roadstar, огромное спасибо за помощь. Ошибку нашел, и как всегда она была просто идиотской.

С уважением, 3k.



Страницы: 1 вся ветка

Текущий архив: 2005.06.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
4-1114281844
Host
2005-04-23 22:44
2005.06.14
Как проверить возможность записи в файл


9-1110998907
Alecsey
2005-03-16 21:48
2005.06.14
Трейнеры


1-1117530290
Karlson
2005-05-31 13:04
2005.06.14
Как средствами Delphi создать Help-файл?


4-1113990260
Grief
2005-04-20 13:44
2005.06.14
Скоростная работа с битмапами


1-1117414651
rosl
2005-05-30 04:57
2005.06.14
свернуть развернуть ветку