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

Вниз

чужой RichEdit   Найти похожие ветки 

 
Sour ©   (2004-01-13 13:51) [0]

Кто-нить знает как корректно работать с чужим 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?


 
AKul ©   (2004-01-13 14:35) [1]

Если под "чужим" подразумевается другой процесс, то так ничего не получиться, так как для каждого процесса свое адресное пространство. Если в твоем процессе @p - это адрес переменной p, то в другом процесее по этому адресу может находиться, например, код.


 
Sour ©   (2004-01-14 06:01) [2]

А как тогда можно получить допустим текст из RichEdit в чужом приложении, Handle RichEdit-а я знаю??


 
Cobalt ©   (2004-01-14 09:37) [3]

Надо внедряться в его АП. Например, с помощью Хука. Примеры есть в статьях.


 
KosilkA ©   (2004-01-14 11:55) [4]

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;


 
Sour ©   (2004-01-14 13:28) [5]

> KosilkA
прога не попадает в тело if??


 
KosilkA ©   (2004-01-14 13:47) [6]


> Sour ©   (14.01.04 13:28) [5]

ничо не понимаю... кто куда , в чье тело не попадает??? у меня усё работает )))


 
YuRock ©   (2004-01-14 13:50) [7]

> AKul ©   (13.01.04 14:35) [1]
> Если под "чужим" подразумевается другой процесс, то так ничего не получиться

А если мамять под переменнйю (например, для текста) выделить через GlobalAlloc?


 
AKul ©   (2004-01-14 14:42) [8]

To YuRock ©   (14.01.04 13:50) [7]:
Если моя память меня не подводит, то GlobalAlloc - выделение памяти в куче процесса, т.е. у каждого процесса своя куча (хотя я мог чего-то забыть).
Помойму в win32 нет разницы между GlobalAlloc и LocalAlloc (она была в win 3.11)


 
YuRock ©   (2004-01-14 14:54) [9]

> AKul ©   (14.01.04 14:42) [8]

Да, память меня подводит (вернее лень дочитать хелп)...

Но можно попробовать еще VirtualAllocEx() (только для NT-Base)



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

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

Наверх




Память: 0.48 MB
Время: 0.045 c
1-1078585143
Alexey_
2004-03-06 17:59
2004.03.28
Увеличение размеров Hint у иконки в Трей е


14-1076624145
Marser
2004-02-13 01:15
2004.03.28
СПИДа нет!


1-1078668907
able
2004-03-07 17:15
2004.03.28
Gutter


1-1078909890
MadGhost
2004-03-10 12:11
2004.03.28
как в функцию передать переменную по ссылке?


3-1077959547
Michail Dalakov
2004-02-28 12:12
2004.03.28
Oracle и побитовые операции