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

Вниз

Как получить текст окна класса TRichView?   Найти похожие ветки 

 
Deltas ©   (2008-08-30 04:49) [0]

Здравствуйте, уважаемые мастера Delphi. Мне необходимо прочитать текст окна класса TRichView в чужой программе. Каким образом это можно сделать, не активируя это окно? Может быть кто-то уже сталкивался с подобной проблемой?...


 
KilkennyCat ©   (2008-08-30 12:23) [1]


> не активируя это окно

что в данном случае понимается под активацией?


 
Юрий Зотов ©   (2008-08-30 13:05) [2]

WM_GETTEXT ?


 
{RASkov} ©   (2008-08-30 13:17) [3]

http://delphimaster.net/view/4-1219747063/

> [0] Deltas ©   (30.08.08 04:49)

Может задачу в целом нарисуешь... например, зачем из чужого окна текст нужен?
Может есть другие варианты решения вопроса...


 
KilkennyCat ©   (2008-08-30 13:29) [4]


> Юрий Зотов ©   (30.08.08 13:05) [2]


даже если окна нет вообще?


 
Deltas ©   (2008-08-30 14:28) [5]


> что в данном случае понимается под активацией?

Под активацией понимается тот момент, когда окно получает фокус ввода.
Тогда задачу можно было бы решить с помощью функции keybd_event: выделить весь текст (Ctrl+A) и скопировать в буфер обмена (Ctrl+C).


> WM_GETTEXT ?

К сожалению, WM_GETTEXT получает текст заголовка окна, и для TRichView вовзвращает пустую строку. Стандартное EM_STREAMOUT для TRichEdit не поддерживается классом TRichView.


> Может задачу в целом нарисуешь... например, зачем из чужого
> окна текст нужен?
> Может есть другие варианты решения вопроса...

Задача следующая. В программе-чате использован TRichView. У меня клиентская версия чата. В окне класса TRichView отображается разговор всех пользователей чата. Мне необходимо анализировать постоянно обновляющийся текст в этом окне.


> даже если окна нет вообще?

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


 
Юрий Зотов ©   (2008-08-30 14:42) [6]

The EM_GETTEXTEX message allows you to get all of the text from the rich edit control in any particular code base you want.

(c) MSDN


 
Deltas ©   (2008-08-30 15:18) [7]


> Юрий Зотов ©   (30.08.08 14:42) [6]

Проверил. Сообщение EM_GETTEXTEX также не поддерживается классом TRichView.


 
Юрий Зотов ©   (2008-08-30 15:30) [8]

> Deltas ©   (30.08.08 15:18) [7]

А какой класс ОКНА имеет TRichView? Это можно выяснить любой программой типа WinSpy (или посмотреть по исходникам).

Если класс окна будет известен, то все остальное можно найти в MSDN.


 
Deltas ©   (2008-08-30 16:05) [9]

Класс окна называется TRichView. Я же написал это в вопросе...

> Мне необходимо прочитать текст окна класса TRichView в чужой
> программе.


 
Deltas ©   (2008-08-30 16:12) [10]

Может ли здесь скрываться истина в том, что в модуле RichEdit сообщения описаны следующим образом:
   EM_STREAMOUT = WM_USER + 74;
   EM_GETTEXTEX = WM_USER + 94;

?

The RegisterWindowMessage function is typically used to register messages for communicating between two cooperating applications.
(c) MSDN


 
Юрий Зотов ©   (2008-08-30 21:02) [11]

> Deltas ©   (30.08.08 16:05) [9]

Это Дельфийский класс, а нужен системный класс Windows. См. Subclassing.


 
Deltas ©   (2008-08-30 21:22) [12]


> А какой класс ОКНА имеет TRichView? Это можно выяснить любой
> программой типа WinSpy (или посмотреть по исходникам).

Посмотреть исходники не представляется возможным, потому что данный компонент можно скачать и установить только в уже откомпилированных модулях (*.dcu). А куда мне нужно смотреть в WinSpy? Я пользуюсь входящей в пакет утилит Delphi программой WinSight32. Класс окна называется TRichView. Про subclassing глянул, цитирую "...The window class (which is similar to the objects or classes in object-oriented programming) contains information...". Или Вы имеете в виду некий родительский базовый класс класса TRichView?


 
Юрий Зотов ©   (2008-08-31 07:34) [13]

Имеется в виду "родной" системный класс окна. Дельфийский класс окна совпадает с классом объекта, но в его основе все равно лежит тот самый системный класс. Например, компонент TListBox создает окно класса TListBox, но порождено оно от системного класса ListBox.

Утилиты типа WinSpy умеют этот системный класс показывать. Например, Spy & Capture показывает его на закладке Styles в окошке Subclassed From.


 
Юрий Зотов ©   (2008-08-31 07:41) [14]

Кстати, откуда вообще взялся TRichView, что за компонент такой? В D5 его нет, насколько помню.


 
Deltas ©   (2008-08-31 13:59) [15]


> Кстати, откуда вообще взялся TRichView, что за компонент
> такой?

TRichView — это пакет компонентов для Borland Delphi и C++Builder, позволяющих просматривать, редактировать и распечатывать форматированные гипертекстовые документы.
В стандартную потавку Delphi он не входит, распространяется как отдельный продукт. Использован во многих приложениях.
http://www.trichview.ru/

> Юрий Зотов ©   (31.08.08 07:34) [13]

Спасибо, теперь знаю, в каком направлении работать.


 
svt   (2008-09-17 23:11) [16]

TRichView поддерживает EM_GETTEXTRANGE.
Правда, зависит от версии TRichView и с какими директивами компилятора скомпилирована программа



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

Форум: "Основная";
Текущий архив: 2009.10.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.042 c
2-1251022510
Риг
2009-08-23 14:15
2009.10.25
Программное позиционирование объектов.


4-1219732438
KygECHuK
2008-08-26 10:33
2009.10.25
Выгрузка WinApi перехватчика


15-1251469925
Suspended
2009-08-28 18:32
2009.10.25
Про мошенничество


2-1251196735
D1987
2009-08-25 14:38
2009.10.25
TListView


2-1251374237
cyber-pilot
2009-08-27 15:57
2009.10.25
Пропадают вкладки в PageControl е





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