![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
чужой RichEdit [D5, WinXP]
Sour © (2004-01-13 13:51:00)Кто-нить знает как корректно работать с чужим richedit-ом. А то у меня не получаются некоторые манипуляции. например:
1.
SendMessage(iHandle, EM_GETSELTEXT, 0, Longint(@p));,
где s: array[1..100] of char;
sendmessage возвращает правильное число выделенных символов, а в p ничего не пишется, хотя если iHandle моего RichEdit все нормально.
2.
s.min := 1;
s.max := 11;
SendMessage(iHandle, EM_EXSETSEL, 0, Longint(@s));,
где s: TCharRange;
Тут вообще, если ничего до вызова sendmessage в richedit не было выделено, то ничего и не происходит, а если до вызова че-нить выделить, то после этого сообщения выделяется весь вилимый текст richedit?
YuRock (2004-01-14 14:54:00) [1]> AKul © (14.01.04 14:42) [8]
Да, память меня подводит (вернее лень дочитать хелп)...
Но можно попробовать еще VirtualAllocEx() (только для NT-Base)
AKul (2004-01-14 14:42:00) [2]To YuRock © (14.01.04 13:50) [7]:
Если моя память меня не подводит, то GlobalAlloc - выделение памяти в куче процесса, т.е. у каждого процесса своя куча (хотя я мог чего-то забыть).
Помойму в win32 нет разницы между GlobalAlloc и LocalAlloc (она была в win 3.11)
YuRock (2004-01-14 13:50:00) [3]> AKul © (13.01.04 14:35) [1]
> Если под "чужим" подразумевается другой процесс, то так ничего не получиться
А если мамять под переменнйю (например, для текста) выделить через GlobalAlloc?
KosilkA (2004-01-14 13:47:00) [4]
> Sour © (14.01.04 13:28) [5]
ничо не понимаю... кто куда , в чье тело не попадает??? у меня усё работает )))
Sour (2004-01-14 13:28:00) [5]> KosilkA
прога не попадает в тело if??
KosilkA (2004-01-14 11:55:00) [6]procedure TForm1.Timer1Timer(Sender: TObject);
var
arr:array [1..$FF] of Char;
begin
if
attachthreadinput(getwindowthreadprocessid(getforegroundwindow,nil),GetCurrentThreadId,true)
then
begin
SendMessage(getfocus,WM_GETTEXT,SizeOf(Arr),Integer(@Arr));
memo1.Lines.Add(arr);
end;
end;
Cobalt (2004-01-14 09:37:00) [7]Надо внедряться в его АП. Например, с помощью Хука. Примеры есть в статьях.
Sour (2004-01-14 06:01:00) [8]А как тогда можно получить допустим текст из RichEdit в чужом приложении, Handle RichEdit-а я знаю??
AKul (2004-01-13 14:35:00) [9]Если под "чужим" подразумевается другой процесс, то так ничего не получиться, так как для каждого процесса свое адресное пространство. Если в твоем процессе @p - это адрес переменной p, то в другом процесее по этому адресу может находиться, например, код.