Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Вниз

Добавить текст в чужой 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.06.14;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.038 c
1-1117451915
Mouserx
2005-05-30 15:18
2005.06.14
Использование inherited


14-1117049969
Nic87
2005-05-25 23:39
2005.06.14
Worlds3D - присоединяйтесь!


14-1116796669
Zacho
2005-05-23 01:17
2005.06.14
AMD: Три буквы для бедных


3-1115213043
Urvin
2005-05-04 17:24
2005.06.14
Как поставить ИГНОРКЕЙС в запрос?


14-1117002518
vecna
2005-05-25 10:28
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский