Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Послать сообщение из своей программе в чужую 
:(
    Опции темы
Toska
Дата 2.10.2007, 21:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



Как мне из своей программы послать сообщение другой программе на класс компонета TRichViewEdit? 
А так же как считать от туда данные?

Нужно имено TRichViewEdit
PM MAIL   Вверх
Alexeis
Дата 2.10.2007, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



Цитата(Toska @  2.10.2007,  21:28 Найти цитируемый пост)
Как мне из своей программы послать сообщение другой программе

  При помощи функций SendMessage, PostMessage. 

Цитата(Toska @  2.10.2007,  21:28 Найти цитируемый пост)
на класс компонета TRichViewEdit? 

  Винда не посылает значения классам, она посылает сообщения окнам.

Отсюда вывод. Нужно послать сообщение окну TRichViewEdit при помощи функций SendMessage/PostMessage. 

Цитата(Toska @  2.10.2007,  21:28 Найти цитируемый пост)
А так же как считать от туда данные?

  Смотря какие данные. Можно получить только те что предусмотрены окном данного типа (класса в смысле класса окон Windows)


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Toska
Дата 2.10.2007, 23:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



У меня есть такая функция

Код

function ChangeWndFirstEditText(Wnd: HWND; const Text: string):
  boolean;
var
  EditWnd: HWND;
begin
  Result := False;
  EditWnd := FindWindowEx(Wnd,0,'TRichViewEdit', nil);
  if EditWnd = 0 then
    exit; // edit not found
 Result := SendMessage(EditWnd, WM_SETTEXT, 0, Integer(PChar(Text))) <> 0;
end;


Я использую SendMessage сообщение отправляется, но не отображается в окне TRichViewEdit.
Если посмотреть всякими шпионами окон, то текст есть, хотя его там нет, абсурд.

То что TRichViewEdit не стандартный компонет с этим не связана?

PM MAIL   Вверх
Alexeis
Дата 2.10.2007, 23:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



Цитата(Toska @  2.10.2007,  23:23 Найти цитируемый пост)
То что TRichViewEdit не стандартный компонет с этим не связана?

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


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
BaD_SeCt0R
Дата 2.10.2007, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 3
Всего: 18



Цитата(Toska @  2.10.2007,  23:23 Найти цитируемый пост)
То что TRichViewEdit не стандартный компонет с этим не связана?

А причем здесь компоненты? Тут либо эдит, либо его собрат рич. А уж если окошко не отвечает на сообщение - такова воля программистов.


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Toska
Дата 3.10.2007, 00:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 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.

Есть какая нибудт замена этому
PM MAIL   Вверх
BaD_SeCt0R
Дата 3.10.2007, 00:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 3
Всего: 18



Toska, хде ты это взяла??? Кто WinAPI отменил??? smile

Добавлено через 1 минуту и 4 секунды
PS у меня все всегда работало. Байки.


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Toska
Дата 3.10.2007, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



BaD_SeCt0R,  Для начала ВЗЯЛ  smile  


Я тоже думаю что фигня, я же могу послать в Edit, простой TRichEdit и т.д.

Сообственно подскажи как решить мою задачу 
PM MAIL   Вверх
Alexeis
Дата 3.10.2007, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



Проверка показала что в Delphi 2007 WM_SETTEXT устанавливает свойство Caption, но не сразу, а только после пересоздания окна.

Добавлено через 48 секунд
Но скорее всего Caption не отображается у TRichViewEdit ни где.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
BaD_SeCt0R
Дата 3.10.2007, 01:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Lazy Coder
**


Профиль
Группа: Участник
Сообщений: 432
Регистрация: 9.10.2006
Где: Анапа

Репутация: 3
Всего: 18



Цитата(Toska @  3.10.2007,  00:40 Найти цитируемый пост)
BaD_SeCt0R,  Для начала ВЗЯЛ

Экскьюз, у тя пол не указан smile
Toska, кинь ссылкой чтоли. Я ничего подобного на офсайте не увидел.

Добавлено через 6 минут и 46 секунд
Цитата(Alexeis @  3.10.2007,  00:43 Найти цитируемый пост)
Проверка показала что в Delphi 2007 WM_SETTEXT устанавливает свойство Caption


Alexeis, ты где у эдитов кэпшин видел? И не после пересоздания, а после инвалидэйта вродь как. Не буду утверждать, у самого стоит D7.

Это сообщение отредактировал(а) BaD_SeCt0R - 3.10.2007, 01:24


--------------------
Кто владеет информацией - владеет миром. (С) Френсис Бэкон.
PM MAIL ICQ   Вверх
Alexeis
Дата 3.10.2007, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 16
Всего: 459



BaD_SeCt0R, Caption есть еще у предка всех контролов TControl, просто оно не published.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
RA
Дата 3.10.2007, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115




Цитата(Toska @  2.10.2007,  23:23 Найти цитируемый пост)
Я использую SendMessage сообщение отправляется, но не отображается в окне TRichViewEdit.
Если посмотреть всякими шпионами окон, то текст есть, хотя его там нет, абсурд.

То что TRichViewEdit не стандартный компонет с этим не связана?



А как же RichViewEdit1.Format;  после принятия текста?
PM   Вверх
EvilsInterrupt
Дата 3.10.2007, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Executables research
***


Профиль
Группа: Завсегдатай
Сообщений: 1019
Регистрация: 14.7.2007
Где: Железнодорожный, МО, Россия

Репутация: 1
Всего: 9



PM MAIL WWW ICQ Jabber   Вверх
Toska
Дата 11.10.2007, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



Попробуйте создать форму с TRichViewEdit'ом и отправить туда свое сообщение.

У меня ни как не получается, думаю нужен какой то другой подход, нежеле SendMessage.

Помогите разобраться

PM MAIL   Вверх
Toska
Дата 12.10.2007, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



Более и менее разобрался, для передачи использую буфер обмена.
SendMessage(EditWnd, WM_Paste, 0, Integer(PChar(Text))) <> 0;

Может теперь кто подскажет как считать информацию с TRichEdit smile 
PM MAIL   Вверх
Toska
Дата 15.10.2007, 21:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



Все еще актуально 
PM MAIL   Вверх
MetalFan
Дата 15.10.2007, 22:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



Цитата(Toska @  12.10.2007,  18:12 Найти цитируемый пост)
SendMessage(EditWnd, WM_Paste, 0, Integer(PChar(Text))) 

ерунда какая-то.
оба параметра у WM_PASTE Not used; must be zero. 


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Toska
Дата 15.10.2007, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



MetalFan, Ну да, действительно, это  от моих эксперементов осталось. Но работает!

Может подскажешь по лучше решение?
PM MAIL   Вверх
RA
Дата 16.10.2007, 02:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Отправлять текст  WM_SetText забирать WM_GETTEXT но нужно кое что учитывать:

При отправке текста WParam должен быть равен длинне отправляемого текста, иначе RV текст не примет.
Пример:

Код

SendMessage(RichViewEdit1.Handle, WM_SetText, Length(edit1.text)+1, Lparam(edit1.text) );




Забор текста осуществляется за счёт WM_GETTEXT но опять таки нужно учитывать WPARAM который указывает на длину копируемого текста, и получается при помощи WM_GETTEXTLENGTH

Пример:
Код

var
TextCount :integer;
buf : array [1..250] of char;
begin

    TextCount:= SendMessage(RichViewEdit1.Handle, WM_GETTEXTLENGTH, 0, 0);
    SendMessage(RichViewEdit1.Handle, WM_GETTEXT, TextCount, integer(@buf));
    Memo1.text:= buf;



Для того что бы текст вырывать кусками существует
EM_GETTEXTRANGE  lparam которого указывает на начало копирования 

Пример:
Код

var
 buf : array [1..250] of char;
begin
SendMessage(RichViewEdit1.Handle, EM_GETTEXTRANGE, integer(@buf), 10 );
Memo1.text:= buf;









Это сообщение отредактировал(а) RA - 16.10.2007, 02:38
PM   Вверх
MetalFan
Дата 16.10.2007, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



RA, все конечно хорошо, но контрол, на сколько я понял, находится в другом процессе. соотв в лучшем случае ничего из вышеприведенного не сработает, в худшем - AV либо в своем, либо в чужом приложении...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
dumb
Дата 16.10.2007, 11:13 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



Цитата(MetalFan @  16.10.2007,  10:43 Найти цитируемый пост)
контрол, на сколько я понял, находится в другом процессе
а посему - сначала выделить кусок памяти в АП другого процесса(VirtualAllocEx), скопировать туда строку(WriteProcessMemory) и потом слать сообщение. smile
PM MAIL   Вверх
MetalFan
Дата 16.10.2007, 11:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



Цитата(dumb @  16.10.2007,  11:13 Найти цитируемый пост)
а посему

+ сначала через OpenProcess получить доступ... после также не забыть освободить память ну и  CloseHandle тож не помешает


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
MetalFan
Дата 16.10.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



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


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
RA
Дата 16.10.2007, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Цитата(MetalFan @  16.10.2007,  09:43 Найти цитируемый пост)
все конечно хорошо, но контрол, на сколько я понял, находится в другом процессе. соотв в лучшем случае ничего из вышеприведенного не сработает, в худшем - AV либо в своем, либо в чужом приложении... 


 smile  Батенька хотите верьте хотите нет но мой пример работает.
Проверено!

PS: Я исходник этого компонента смотрел в области обработки вышеупомянутых мессаг.

Это сообщение отредактировал(а) RA - 16.10.2007, 15:59
PM   Вверх
MetalFan
Дата 16.10.2007, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



Цитата(RA @  16.10.2007,  15:56 Найти цитируемый пост)
Батенька хотите верьте хотите нет но мой пример работает.
Проверено!

работает, если RV создан и находится в ТВОЕМ приложении


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
RA
Дата 16.10.2007, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Цитата(MetalFan @  16.10.2007,  16:06 Найти цитируемый пост)
работает, если RV создан и находится в ТВОЕМ приложении 


А также в чужом
PM   Вверх
Alix
Дата 16.10.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


L45
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 4.5.2005
Где: Pskov/Spb

Репутация: 3
Всего: 23



Цитата(MetalFan @  16.10.2007,  17:06 Найти цитируемый пост)
работает, если RV создан и находится в ТВОЕМ приложении 

WM_SETTEXT для любого окна в принципе работала всегда. RA, прав.


--------------------
Знание только тогда знание, когда оно приобретено усилиями своей мысли, а не памятью (с) Л. Толстой
High tech. Low live. (с) Gardner Dozois
PM MAIL ICQ Skype   Вверх
MetalFan
Дата 16.10.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



Цитата(RA @  16.10.2007,  16:10 Найти цитируемый пост)
А также в чужом

уверен? надо проверить...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
dumb
Дата 16.10.2007, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



Цитата(RA @  16.10.2007,  16:56 Найти цитируемый пост)
Батенька хотите верьте хотите нет но мой пример работает.
хех. то-то я думаю, что где-то что-то уже на эту тему видел... для некоторой пачки сообщений(в основном это LB_xxx/CB_xxx) ядро самостоятельно копирует данные при передаче между процессами. и WM_SETTEXT/WM_GETTEXT в их числе... smile
так что мы описали общую методику работы с чужими контролами... smile
PM MAIL   Вверх
Toska
Дата 16.10.2007, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



Проверьте пожалуйста, ни чего не получается!!!

Добавлено через 6 минут и 9 секунд
Код

procedure TForm1.Button3Click(Sender: TObject);
var
  h,EditWnd: HWND;
begin
  h := findwindow(nil, 'Form1');
  EditWnd := FindWindowEx(h,0,'TRichViewEdit', nil);
  if EditWnd = 0 then begin
                                 ShowMessage('Окно НЕ найдено');
                                 exit;
  end;
SendMessage(EditWnd, WM_SetText, Length(edit1.text)+1, Lparam(edit1.text) );

end;


По этой кнопке должно отправляться сообщение находящиеся в Edit, правильно понял?

Неработает
PM MAIL   Вверх
Toska
Дата 16.10.2007, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



Хотя с обыкновенным TRichEdit работает, а с TRichViewEdit нет
PM MAIL   Вверх
MetalFan
Дата 16.10.2007, 18:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



Цитата(dumb @  16.10.2007,  16:50 Найти цитируемый пост)
ядро самостоятельно копирует данные при передаче между процессами

правда? странно, что в мсдн про это нислова...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
RA
Дата 16.10.2007, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 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
PM   Вверх
Toska
Дата 16.10.2007, 19:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



Не работает. Прога канечно передает сообщение, но в TRichViewEdite оно не отображается!!!

То что у меня делфя 2006 ни как ни влияет?
PM MAIL   Вверх
MetalFan
Дата 16.10.2007, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



хм... а в каком пакедже он лежит? у меня в D2006 чтото нету его на палитре(


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
RA
Дата 16.10.2007, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Toska, А скомпилированный пример у тебя работает?
PM   Вверх
MetalFan
Дата 16.10.2007, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 16
Всего: 128



работает  smile 


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
RA
Дата 16.10.2007, 21:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Цитата(Toska @  16.10.2007,  19:38 Найти цитируемый пост)
То что у меня делфя 2006 ни как ни влияет? 


Скорее всего влияет ибо:   

   {$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
PM   Вверх
Toska
Дата 16.10.2007, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



Нифига себе какая фигня, скомпилированный работает smile 

Видимо дествительно та фигня, что я писал в начале топика.



RA, Напиши еще пример на считывание, пожалуйста

Добавлено через 3 минуты и 33 секунды
У тя так понимаю 6 делфя?


PM MAIL   Вверх
Toska
Дата 16.10.2007, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



RA, 
В твою скомпилированную прогу я могу послать сообщение, но если я твой код скомпилирую на своей делфе,
то послать туда сообщение не получится. 


попробуй послать сюда 

http://slil.ru/24988573
PM MAIL   Вверх
RA
Дата 17.10.2007, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Брутальный буратина
****


Профиль
Группа: Участник Клуба
Сообщений: 3497
Регистрация: 31.3.2002
Где: Лес

Репутация: 7
Всего: 115



Цитата(Toska @  16.10.2007,  23:18 Найти цитируемый пост)
В твою скомпилированную прогу я могу послать сообщение, но если я твой код скомпилирую на своей делфе,
то послать туда сообщение не получится. 


На эту цитату и вопрос о твоей D2006 я уже ответил директивами из исходника компонента ->
http://forum.vingrad.ru/index.php?showtopi...t&p=1289498

Тоесть RichViewEdit-ы скомпилированные из под делфи старше семёрки не понимают что такое: 
WM_GETTEXTLENGTH
WM_GETTEXT
WM_SETTEXT

ЗЫ: Это так задумано автором компонента. Зачем? не знаю .......

Добавлено через 6 минут и 55 секунд
Если у тебя есть сорс компонента, можно конечно поэксперементировать, с удалением этих директив. вдруг пропрёт  smile 

Это сообщение отредактировал(а) RA - 17.10.2007, 00:14
PM   Вверх
Toska
Дата 17.10.2007, 09:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



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

Фиг с ним, послать можно через буфер.

А вот как считать от туда?
PM MAIL   Вверх
Toska
Дата 17.10.2007, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



У тя какая версия RichView у меня 1.9.43.2
PM MAIL   Вверх
Toska
Дата 21.10.2007, 18:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



актуально
PM MAIL   Вверх
Toska
Дата 21.10.2007, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 62
Регистрация: 9.5.2007

Репутация: нет
Всего: нет



Помогите разобраться с методом через VirtualAllocEx/WriteProcessMemory/ReadProcessMemory/VirtualFreeEx
можно с примером smile 

Толька этим не тыкайте пожалуйста
http://delphiworld.narod.ru/base/dt_icons_pos_g_s.html
PM MAIL   Вверх
HellFire
Дата 6.3.2008, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 6.3.2008

Репутация: нет
Всего: нет



Тут еще вопрос возник. По поводу работы с RichViewEdit
Организовать все выше перечисленное удалось. Спасибки! Очень помогли.
Я на другом застрял. Как мне поставить курсор в первоначальное положение, там где он был, до вставки WM_SETTEXT
Как я понял нужно юзать что-то вроде. EM_GETSEL, EM_SETSEL
Но у мну ошибка вылетает если отправляю EM_GETSEL в RichViewEdit
Подскажите, как с этим боротся, или есть какой-то другой способ перевести курсор в конец строки
PM MAIL   Вверх
dumb
Дата 6.3.2008, 03:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 7
Всего: 158



Цитата(HellFire @  6.3.2008,  02:33 Найти цитируемый пост)
Но у мну ошибка вылетает если отправляю EM_GETSEL в RichViewEdit
wParam и lParam сделай nil, а значения бери из возвращаемого функцией результата - из dword'а два word'а вытащить, надеюсь, сможешь. smile
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.1547 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.