Главная страница
    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.47 MB
Время: 0.034 c
1-1117282188
Джон
2005-05-28 16:09
2005.06.14
как создать сообщение-ошибка


11-1099415567
Aleks
2004-11-02 20:12
2005.06.14
как правильно установить компонент


11-1096533981
Solik
2004-09-30 12:46
2005.06.14
exe


1-1117037233
CAMCOH
2005-05-25 20:07
2005.06.14
MDI: Как обратится из одной child формы к объектам другой child ф


8-1109365806
Hedrox
2005-02-26 00:10
2005.06.14
Проигрывание треков





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский