![]() |
|
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]()
|
|
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
Как мне из своей программы послать сообщение другой программе на класс компонета TRichViewEdit?
А так же как считать от туда данные? Нужно имено TRichViewEdit |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
При помощи функций SendMessage, PostMessage. Винда не посылает значения классам, она посылает сообщения окнам. Отсюда вывод. Нужно послать сообщение окну TRichViewEdit при помощи функций SendMessage/PostMessage. Смотря какие данные. Можно получить только те что предусмотрены окном данного типа (класса в смысле класса окон Windows) -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
У меня есть такая функция
Я использую SendMessage сообщение отправляется, но не отображается в окне TRichViewEdit. Если посмотреть всякими шпионами окон, то текст есть, хотя его там нет, абсурд. То что TRichViewEdit не стандартный компонет с этим не связана? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Скорее всего так. WM_SETTEXT принимает любое окно, но отображать его или нет зависит от реализации. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: 3 Всего: 18 |
А причем здесь компоненты? Тут либо эдит, либо его собрат рич. А уж если окошко не отвечает на сообщение - такова воля программистов. -------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
Меня еще вот какой штукой кнули
В какой версии Delphi пишется проект? с офсайта: Processing of WM_GETTEXT, WM_GETTEXTLENGTH, WM_SETTEXT was disabled for Delphi 2005 and 2006, because it conflicted with VCL implementation. Я пишу 2006. Есть какая нибудт замена этому |
|||
|
||||
| BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: 3 Всего: 18 |
Toska, хде ты это взяла??? Кто WinAPI отменил???
Добавлено через 1 минуту и 4 секунды PS у меня все всегда работало. Байки. -------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
BaD_SeCt0R, Для начала ВЗЯЛ
Я тоже думаю что фигня, я же могу послать в Edit, простой TRichEdit и т.д. Сообственно подскажи как решить мою задачу |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
Проверка показала что в Delphi 2007 WM_SETTEXT устанавливает свойство Caption, но не сразу, а только после пересоздания окна.
Добавлено через 48 секунд Но скорее всего Caption не отображается у TRichViewEdit ни где. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| BaD_SeCt0R |
|
|||
![]() Lazy Coder ![]() ![]() Профиль Группа: Участник Сообщений: 432 Регистрация: 9.10.2006 Где: Анапа Репутация: 3 Всего: 18 |
Экскьюз, у тя пол не указан Toska, кинь ссылкой чтоли. Я ничего подобного на офсайте не увидел. Добавлено через 6 минут и 46 секунд
Alexeis, ты где у эдитов кэпшин видел? И не после пересоздания, а после инвалидэйта вродь как. Не буду утверждать, у самого стоит D7. Это сообщение отредактировал(а) BaD_SeCt0R - 3.10.2007, 01:24 -------------------- Кто владеет информацией - владеет миром. (С) Френсис Бэкон. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 16 Всего: 459 |
BaD_SeCt0R, Caption есть еще у предка всех контролов TControl, просто оно не published.
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
А как же RichViewEdit1.Format; после принятия текста? |
|||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: 1 Всего: 9 |
Есть хорошая Статья,от Антона Григорьева
|
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
Попробуйте создать форму с TRichViewEdit'ом и отправить туда свое сообщение.
У меня ни как не получается, думаю нужен какой то другой подход, нежеле SendMessage. Помогите разобраться |
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
Более и менее разобрался, для передачи использую буфер обмена.
SendMessage(EditWnd, WM_Paste, 0, Integer(PChar(Text))) <> 0; Может теперь кто подскажет как считать информацию с TRichEdit |
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
Все еще актуально
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
ерунда какая-то. оба параметра у WM_PASTE Not used; must be zero. -------------------- There are always someone smarter than you... |
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
MetalFan, Ну да, действительно, это от моих эксперементов осталось. Но работает!
Может подскажешь по лучше решение? |
|||
|
||||
| RA |
|
||||||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
Отправлять текст WM_SetText забирать WM_GETTEXT но нужно кое что учитывать:
При отправке текста WParam должен быть равен длинне отправляемого текста, иначе RV текст не примет. Пример:
Забор текста осуществляется за счёт WM_GETTEXT но опять таки нужно учитывать WPARAM который указывает на длину копируемого текста, и получается при помощи WM_GETTEXTLENGTH Пример:
Для того что бы текст вырывать кусками существует EM_GETTEXTRANGE lparam которого указывает на начало копирования Пример:
Это сообщение отредактировал(а) RA - 16.10.2007, 02:38 |
||||||
|
|||||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
RA, все конечно хорошо, но контрол, на сколько я понял, находится в другом процессе. соотв в лучшем случае ничего из вышеприведенного не сработает, в худшем - AV либо в своем, либо в чужом приложении...
-------------------- There are always someone smarter than you... |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
||||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
+ сначала через OpenProcess получить доступ... после также не забыть освободить память ну и CloseHandle тож не помешает -------------------- There are always someone smarter than you... |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
вот примерчик работы с чужим процессом. очень мне понравился
-------------------- There are always someone smarter than you... |
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
Проверено! PS: Я исходник этого компонента смотрел в области обработки вышеупомянутых мессаг. Это сообщение отредактировал(а) RA - 16.10.2007, 15:59 |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
работает, если RV создан и находится в ТВОЕМ приложении -------------------- There are always someone smarter than you... |
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
||||
|
||||
| Alix |
|
|||
|
L45 ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 4.5.2005 Где: Pskov/Spb Репутация: 3 Всего: 23 |
WM_SETTEXT для любого окна в принципе работала всегда. RA, прав. -------------------- Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой High tech. Low live. (с) Gardner Dozois |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
-------------------- There are always someone smarter than you... |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
хех. то-то я думаю, что где-то что-то уже на эту тему видел... для некоторой пачки сообщений(в основном это LB_xxx/CB_xxx) ядро самостоятельно копирует данные при передаче между процессами. и WM_SETTEXT/WM_GETTEXT в их числе...
так что мы описали общую методику работы с чужими контролами... |
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
Проверьте пожалуйста, ни чего не получается!!!
Добавлено через 6 минут и 9 секунд
По этой кнопке должно отправляться сообщение находящиеся в Edit, правильно понял? Неработает |
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
Хотя с обыкновенным TRichEdit работает, а с TRichViewEdit нет
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
правда? странно, что в мсдн про это нислова... -------------------- There are always someone smarter than you... |
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
Добавлено @ 18:54 Скомпилированный пример: http://stream.ifolder.ru/3760256 Сорс: Это сообщение отредактировал(а) RA - 16.10.2007, 18:55 Присоединённый файл ( Кол-во скачиваний: 17 )
RVTEST.rar 3,99 Kb |
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
Не работает. Прога канечно передает сообщение, но в TRichViewEdite оно не отображается!!!
То что у меня делфя 2006 ни как ни влияет? |
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
хм... а в каком пакедже он лежит? у меня в D2006 чтото нету его на палитре(
-------------------- There are always someone smarter than you... |
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
Toska, А скомпилированный пример у тебя работает?
|
|||
|
||||
| MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
работает
-------------------- There are always someone smarter than you... |
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
Скорее всего влияет ибо: {$DEFINE RICHVIEWDEF9}(* Delphi 8.0+ *) {$IFNDEF RICHVIEWDEF9} procedure WMGetTextLength(var Message: TMessage); message WM_GETTEXTLENGTH; procedure WMGetText(var Message: TMessage); message WM_GETTEXT; procedure WMSetText(var Message: TMessage); message WM_SETTEXT; {$ENDIF} Но зато должон работать EM_GETTEXTRANGE |
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
Нифига себе какая фигня, скомпилированный работает
Видимо дествительно та фигня, что я писал в начале топика. RA, Напиши еще пример на считывание, пожалуйста Добавлено через 3 минуты и 33 секунды У тя так понимаю 6 делфя? |
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
RA,
В твою скомпилированную прогу я могу послать сообщение, но если я твой код скомпилирую на своей делфе, то послать туда сообщение не получится. попробуй послать сюда http://slil.ru/24988573 |
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 7 Всего: 115 |
На эту цитату и вопрос о твоей D2006 я уже ответил директивами из исходника компонента -> http://forum.vingrad.ru/index.php?showtopi...t&p=1289498 Тоесть RichViewEdit-ы скомпилированные из под делфи старше семёрки не понимают что такое: WM_GETTEXTLENGTH WM_GETTEXT WM_SETTEXT ЗЫ: Это так задумано автором компонента. Зачем? не знаю ....... Добавлено через 6 минут и 55 секунд Если у тебя есть сорс компонента, можно конечно поэксперементировать, с удалением этих директив. вдруг пропрёт Это сообщение отредактировал(а) RA - 17.10.2007, 00:14 |
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
Ну и как слать сообщения в чужие окна, не зная на какой они делфе скомпилированы?
Фиг с ним, послать можно через буфер. А вот как считать от туда? |
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
У тя какая версия RichView у меня 1.9.43.2
|
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
актуально
|
|||
|
||||
| Toska |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 62 Регистрация: 9.5.2007 Репутация: нет Всего: нет |
Помогите разобраться с методом через VirtualAllocEx/WriteProcessMemory/ReadProcessMemory/VirtualFreeEx
можно с примером Толька этим не тыкайте пожалуйста http://delphiworld.narod.ru/base/dt_icons_pos_g_s.html |
|||
|
||||
| HellFire |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 6.3.2008 Репутация: нет Всего: нет |
Тут еще вопрос возник. По поводу работы с RichViewEdit
Организовать все выше перечисленное удалось. Спасибки! Очень помогли. Я на другом застрял. Как мне поставить курсор в первоначальное положение, там где он был, до вставки WM_SETTEXT Как я понял нужно юзать что-то вроде. EM_GETSEL, EM_SETSEL Но у мну ошибка вылетает если отправляю EM_GETSEL в RichViewEdit Подскажите, как с этим боротся, или есть какой-то другой способ перевести курсор в конец строки |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 7 Всего: 158 |
||||
|
||||
![]()
|
| Правила форума "Delphi: WinAPI и системное программирование" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |