Сейчас на форуме: tyns777 (+5 невидимых)

 eXeL@B —› Программирование —› Как мне из СВОЕЙ программы послать сообщение ДРУГОЙ программе
<< . 1 . 2 .
Посл.ответ Сообщение


Ранг: 81.7 (постоянный), 10thx
Активность: 0.030
Статус: Участник

Создано: 01 октября 2007 23:59
· Личное сообщение · #1

Здравствуйте.

Собственно к вопросу:

Как мне из СВОЕЙ программы послать сообщение ДРУГОЙ программе на класс компонета TRichViewEdit?
А так же как считать от туда данные?



Ранг: 117.1 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 13 октября 2007 08:56
· Личное сообщение · #2

AVE пишет:
Теперь остался вопрос как считать от туда данные


GetWindowText не пробовал?

-----
Security through obscurity is just an illusion





Ранг: 141.4 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 13 октября 2007 14:06 · Поправил: intro
· Личное сообщение · #3

AVE
а тут www.trichview.com/forums/ <-- не судьба поискать? официальный форум поддержки компонента. учись искать инфу сам. там точно есть ответ на вопрос про чтение данных. ищи.

и ещё, кстати, вот:

Veliant пишет:
в общем по f2 считывает в квипе набранный текст и его транслит вбивает на его место...там тоже используется TRichViewEdit.....сорри что комментов нет...так для ради интереса пробывал делать=)


посмотри как там происходит считывание данных




Ранг: 81.7 (постоянный), 10thx
Активность: 0.030
Статус: Участник

Создано: 13 октября 2007 19:36
· Личное сообщение · #4

intro да пробывал я все



Ранг: 301.4 (мудрец), 194thx
Активность: 0.170.01
Статус: Участник

Создано: 13 октября 2007 22:07
· Личное сообщение · #5

SendMessage(Window,WM_GETTEXT,1024,LPARAM(@nm)); вот так считывается отлично




Ранг: 81.7 (постоянный), 10thx
Активность: 0.030
Статус: Участник

Создано: 13 октября 2007 23:56
· Личное сообщение · #6

Veliant Боюсь уже что либо спрашивать

что за параметр (@nm)?




Ранг: 756.3 (! !), 113thx
Активность: 0.610.05
Статус: Участник
Student

Создано: 14 октября 2007 00:03 · Поправил: Isaev
· Личное сообщение · #7

AVE пишет:
что за параметр (@nm)?

Странный вопрос... Очевидно адрес переменной, куда считывать значение

Или где ты собираешься результат искать?

-----
z+Dw7uLu5+jqLCDq7vLu8PvpIPHs7uMh





Ранг: 81.7 (постоянный), 10thx
Активность: 0.030
Статус: Участник

Создано: 14 октября 2007 00:27
· Личное сообщение · #8

Подскажите что не верно, тип для nm правильно указал?
Как считать данные в memo

var
h,EditWnd: HWND;
nm : Integer;
begin
h := findwindow(nil, 'Form1');
EditWnd := FindWindowEx(h,0,'TRichViewEdit', nil);
if EditWnd = 0 then exit;
Memo1.Text := IntToStr(SendMessage(EditWnd,WM_GETTEXT,1024,LPARAM(@nm)));;
end;



Ранг: 117.1 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 14 октября 2007 06:38
· Личное сообщение · #9

nm - это должен быть указатель на массив символов, куда положить данные, а у тебя это указатель на целую переменную.

ппц, справку в MSDN читал?
И куда проще было воспользоваться GetWindowText

var
buf: array[0..1023] of char;
begin
GetWindowText(EditWnd, @buf, 1024);
end;


-----
Security through obscurity is just an illusion





Ранг: 81.7 (постоянный), 10thx
Активность: 0.030
Статус: Участник

Создано: 14 октября 2007 08:55
· Личное сообщение · #10

так тоже не работает:

h,EditWnd: HWND;
nm : array[0..1023] of char;
begin
h := findwindow(nil, 'Form1');
EditWnd := FindWindowEx(h,0,'TRichViewEdit', nil);
if EditWnd = 0 then exit;
SendMessage(EditWnd,WM_GETTEXT,1024,LPARAM(@nm));
Memo1.Lines.Add(nm);




Ранг: 81.7 (постоянный), 10thx
Активность: 0.030
Статус: Участник

Создано: 14 октября 2007 14:40
· Личное сообщение · #11

Veliant по моему WM_GETTEXT не подходит, ведь там может быть и картинка какая нибудь?



Ранг: 117.1 (ветеран)
Активность: 0.050
Статус: Участник

Создано: 15 октября 2007 07:44
· Личное сообщение · #12

ведь там может быть и картинка какая нибудь?

Тогда делай BitBlt.

-----
Security through obscurity is just an illusion





Ранг: 81.7 (постоянный), 10thx
Активность: 0.030
Статус: Участник

Создано: 15 октября 2007 23:50
· Личное сообщение · #13

Все еще актуально, но BitBlt думаю здесь мало умесно



Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 16 декабря 2007 16:42 · Поправил: SnikerS
· Личное сообщение · #14

Да уж... Я то думал что форумы нужны чтоб делиться информацией и опытом...
Ну да ладно. О великие гении!!! Помогите бедному, начинающему программисту в таком вопросе:
LRESULT SendMessage(
HWND hWnd,
UINT Msg,
WPARAM wParam,
LPARAM lParam
);

hWnd - ну он и в Африке хэндл

Msg
[in] Specifies the message to be sent.
wParam
[in] Specifies additional message-specific information.
lParam
[in] Specifies additional message-specific information.


Меня интересуют эти параметры: Msg, wParam, lParam
Раскажите плиз по всем трем. Какой магией вы пользуетесь чтоб узнать что в эти параметры записывать чтоб считать данные с чужой проги.
Пример: SendMessage(EditWnd,WM_GETTEXT,1024,LPARAM(@nm));
WM_GETTEXT - бывают же всякие разные месаги, в том числе и самописные. Как их-то узнать?
1024 - это вообще ставит в тупик... Всегда 0 использовал.
LPARAM(@nm)-это понял почему, но мне кажется если Msg будет другой то обом...

П.С.: Если вас воротит от тупости вопроса и не компетентности автора - плиз, воздержитесь от ответа




Ранг: 340.0 (мудрец), 22thx
Активность: 0.120
Статус: Участник
THETA

Создано: 16 декабря 2007 17:52
· Личное сообщение · #15

SnikerS
Если в общих чертах, то Msg - сообщение, посылаемое окну, а wParam и lParam - сопровождающие конкретное сообщение параметры (могут быть равны нулю): подробнее можно узнать в MSDN.

-----
Программист SkyNet




Ранг: 8.2 (гость)
Активность: 0.010
Статус: Участник

Создано: 16 декабря 2007 21:10
· Личное сообщение · #16

Вот описание:
function SendMessage(Wnd: HWnd; Msg, wParam: Word; lParam: Longint): Longint;

Посылает сообщение оконной функции указанного окна. Возвpат из функции
осуществляется только после обpаботки сообщения.


Wnd: Окно, пpинимающее сообщение или $FFFF для посылки всем всплывающим
окнам в системе.
Msg: Тип сообщения.
wParam: Дополнительная инфоpмация о сообщении.
lParam: Дополнительная инфоpмация о сообщении.

Возвpащаемое значение:
Значение, возвpащенное пpинимающей оконной функцией.

Я знаю тока такой способ



Ранг: 8.2 (гость)
Активность: 0.010
Статус: Участник

Создано: 16 декабря 2007 21:15
· Личное сообщение · #17

14-15 уроки Iczelion'а



Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 17 декабря 2007 00:30 · Поправил: SnikerS
· Личное сообщение · #18

k2007 пишет:
function SendMessage(Wnd: HWnd; Msg, wParam: Word; lParam: Longint): Longint;

Спасибо конечно, но я и по англ. читать умею... То что я написал выше из MSDN по англ., то что ты написал - тоже самое только по русски.
А вот если бы ты описал с примерами все значения этих параметров:
wParam: Дополнительная инфоpмация о сообщении.
lParam: -//-.
Т.е. какие они бываю для каждого отдельного события(message).

P.S.: На самом деле мне уже не нужен ответ на этот вопрос. Буду делать по другому - с гемором - через ReadProcessMemory, т.к. сколько я не искал, к сожалению, ничего не нашел для решения своего проблемы.



Ранг: 8.2 (гость)
Активность: 0.010
Статус: Участник

Создано: 17 декабря 2007 14:13
· Личное сообщение · #19

>>То что я написал выше из MSDN по англ., то что ты написал - тоже самое только по русски.

Пардон не заметил!



Ранг: 29.8 (посетитель)
Активность: 0.020
Статус: Участник

Создано: 17 декабря 2007 15:07 · Поправил: Grom_
· Личное сообщение · #20

SnikerS
попробую обьяснить
если все расскрыть то получим
-Послать мессагу - вызвать функцию системы!
- Msg - тип int , по сути это просто КОД сообщения(функции), по нему разбор что те нуно от системы.
- wParam и lParam - это дополнительные параметры через которые ты передаешь нужные(для мессаги/функции) данные
, параметры эти DWORD следовательно , ты можешь туда впихнуть все что угодно , начиная от простого числа(тип) , заканчивая АДРЕСОМ массива или класса . Что туды пихать , это зависит от мессаги!!!!! (как она возмет данные и в качестве каких типов из wParam и lParam ), мессаги разные так же как и функции , не все же функции с одинаковыми параметрами. Для этого и сделали (как я думаю) универсально через DWORD.

А по твоему случаю нуно разбираться, как у тя текст для выдергивания устроен, может он действительно тупо рисуется и т.п. , в каком обьекте(класс) текст отображается.

З.Ы. Стандартные мессаги обрабатывают стандартные средства(обьекты) , или тех кто их поддерживает , а самопал может и не видеть твои мессаги



Ранг: 3.6 (гость)
Активность: 0=0
Статус: Участник

Создано: 21 декабря 2007 01:55
· Личное сообщение · #21

Я пытаюсь что-нибудь придумать с клиентом покерного рума.
Кое какие данные я беру с элементов которые находятся в окне.
А кое что выдергиваю из памяти.
Уже полностью управляю окном клиента из своей проги
В основном всю инфу нашел на специализированных по программированию сайтах. Но и вам спасибо тоже.



Ранг: 237.0 (наставник), 20thx
Активность: 0.130
Статус: Участник
sysenter

Создано: 21 декабря 2007 02:52 · Поправил: HiEndsoft
· Личное сообщение · #22

Помниться у меня инета еще не было и документации оч. маловато, так вот я эти wParam и lParam через MS Spy добывал и смотрел что к чему. С инетом -то проще, но креатива меньше......и гемороя

-----
продавец резиновых утёнков





Ранг: 681.5 (! !), 405thx
Активность: 0.420.21
Статус: Участник
ALIEN Hack Team

Создано: 22 декабря 2007 15:27
· Личное сообщение · #23

AVE
Короче, тут уже много чего написано было (мне аж всё читать лень), так что начнём, собственно, с вопроса.
Послать сообщение из своей проги другой проге - это неправильное выражение, мы посылаем сообщение не проге, а окну, и нам в данном случае пофиг, какой проге/процессу/потоку оно принадлежит. Delphi - это тяжёлый случай, поэтому будем исходить из структуры окон в проге на делфях.
Вначале найдём главное окно, на котором находятся все компоненты - выражаясь нормально, через FindWindowA определим хэндл окна, которое будет являться родительским для всех компонентов формы.
В качестве параметров передаём только класс окна. Это канает, потому что класс формы уникален, но далее нам нужно будет работать со структурой дочерних элементов, к примеру, твой TRichViewEdit расположен на объекте класса TPanel,тогда через FindWindowExA и GetWindow ты дойдёшь до именно того объекта с классом TPanel, а потом опять вызовешь FindWindowExA + GetWindow, чтоб получить хэндл именно того TRichEdit, который тебе нужен, а далее посылай ему какие хочешь сообщения. Справка по API - в MSDN

-----
Stuck to the plan, always think that we would stand up, never ran.



<< . 1 . 2 .
 eXeL@B —› Программирование —› Как мне из СВОЕЙ программы послать сообщение ДРУГОЙ программе
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати