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

Вниз

взять текст из RichEdit   Найти похожие ветки 

 
ink   (2005-07-30 12:01) [0]

Здраствуйте!
Нашёл хэндл RichEdit из чужой программы, как мне вытащить оттуда текст? Будучи благодарен!


 
Leonid Troyanovsky ©   (2005-07-30 12:29) [1]


> ink   (30.07.05 12:01)  
> Нашёл хэндл RichEdit из чужой программы, как мне вытащить
> оттуда текст? Будучи благодарен!


Попробуй SendMessage WM_GETTEXT.

--
Regards, LVT.


 
ink   (2005-07-30 15:37) [2]

Не работает :(


 
Leonid Troyanovsky ©   (2005-07-30 15:42) [3]


> ink   (30.07.05 15:37) [2]
> Не работает :(


Уверен, что RichEdit? Что за приложение?
Уверен, что правильный хендл?
Уверен, что WM_GETTEXT?

Тогда, код в студию.

--
Regards, LVT.


 
begin...end ©   (2005-07-30 18:58) [4]

Возможно также, что не выделена память под буфер, предназначенный для получения текста.


 
GuAV ©   (2005-07-30 19:05) [5]

Rich Edit: If the text to be copied exceeds 64K, use either the EM_STREAMOUT or EM_GETSELTEXT message.


 
Leonid Troyanovsky ©   (2005-07-30 19:18) [6]


> GuAV ©   (30.07.05 19:05) [5]
> Rich Edit: If the text to be copied exceeds 64K, use either
> the EM_STREAMOUT or EM_GETSELTEXT message.


Для использования оного нужно внедрятся в чужой процесс.
Например, http://rsdn.ru/Forum/?mid=471943

--
Regards, LVT.


 
GuAV ©   (2005-07-30 19:40) [7]


> Для использования оного нужно внедрятся в чужой
> процесс.

Оно понятно, я просто указал на возможную проблему - ограничение 64К...

И кстати, мне кажется лучше не внедрять dll, а обойтись вызовами VirtualAllocEx и ReadProcessMemory.


 
Leonid Troyanovsky ©   (2005-07-30 19:45) [8]


> GuAV ©   (30.07.05 19:40) [7]

> И кстати, мне кажется лучше не внедрять dll, а обойтись
> вызовами VirtualAllocEx и ReadProcessMemory.


Почему бы ее не внедрить? Возьмет выделенное и снимется.
А VirtualAllocEx в 9х нет.

--
Regards, LVT.


 
XProger ©   (2005-07-31 07:50) [9]


var
h   : DWORD;
buf : PChar;
ch  : LongInt;
begin
// Edit1.Text - класс окна
// Edit2.Text - класс компонента в этом окне
// Memo1.Text - результат
h := FindWindowEx(FindWindow(PChar(Edit1.Text),nil), 0, PChar(Edit2.Text), nil);
if h = 0 then
ShowMessage("Нет такого компонента.")
else
begin
GetMem(buf, 65535);
SendMessage(h, WM_GETTEXT, 65535, integer(buf));
Memo1.Text := buf;
FreeMem(buf);
end;
end;


 
XProger ©   (2005-07-31 07:52) [10]

P.S.
А вы те ещё извращенцы ;)


 
begin...end ©   (2005-07-31 08:56) [11]

> XProger ©   (31.07.05 7:50) [9]

> GetMem(buf, 65535)

Гениально. Вначале узнать, какова же длина получаемого текста (WM_GETTEXTLENGTH или GetWindowTextLength)-- это, конечно, некошерно. Вместо этого нужно сразу выделить кучу памяти. 64 КБ для однострочного edit"а -- неплохо.

> XProger ©   (31.07.05 7:52) [10]

Как видите, КТО тут извращенец -- это большой вопрос.


 
ink   (2005-08-02 00:24) [12]

//XProger ©
Ты гений! :)
Всё работает!

Благодарю всех!



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

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

Наверх





Память: 0.47 MB
Время: 0.039 c
3-1123748691
Nilov Serge
2005-08-11 12:24
2005.09.25
из Delphi получить все параметры процедуры MsSql-сервера


4-1118237025
bckfvjd
2005-06-08 17:23
2005.09.25
Установка шрифта


6-1117626153
Rater
2005-06-01 15:42
2005.09.25
Socks через indy не работает (на FTP)


1-1125333693
Ivanov
2005-08-29 20:41
2005.09.25
.rar с паролем


14-1125467609
CHES
2005-08-31 09:53
2005.09.25
Поклонники Opera. Всем срочно на их сайт





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский