CRACKL@B Оригинальный DVD-ROM крэкера: CRACKL@B DVD !
Домой | Статьи | RAR-cтатьи | Форум | Программирование | Скачать | DVD-ROM
Новичку | FAQ | Ссылки | Интервью | Архив | Новости | Связь


Русский / Russian English / Английский

Сейчас на форуме: crypto, RaMMicHaeL, Ara (+8 невидимых пользователей)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS ·

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


Ранг: 69.2 (постоянный)
Статус: Участник

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

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

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

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

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

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

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


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

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


Ранг: 126.4 (ветеран)
Статус: Участник

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

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

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

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


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


Ранг: 69.2 (постоянный)
Статус: Участник

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

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

Ранг: 115.3 (ветеран)
Статус: Участник

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

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


Ранг: 69.2 (постоянный)
Статус: Участник

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

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

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


Ранг: 392.4 (мудрец)
Статус: Участник
Vixerunt

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

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

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

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

-----
xOAg8vsg7/Du8fLuIOPl7ejpISEhIDsp
AVE


Ранг: 69.2 (постоянный)
Статус: Участник

Создано: 14 октября 2007 00:27:55
Личное сообщение #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;
pushick

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

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

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

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

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


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


Ранг: 69.2 (постоянный)
Статус: Участник

Создано: 14 октября 2007 08:55:47
Личное сообщение #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);
AVE


Ранг: 69.2 (постоянный)
Статус: Участник

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

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

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

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

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

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

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


Ранг: 69.2 (постоянный)
Статус: Участник

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

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

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

Создано: 16 декабря 2007 16:42:09 · Поправил: 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 будет другой то обом...

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


Ранг: 314.3 (мудрец)
Статус: Участник

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

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

-----
Если тебя обсуждают за спиной, значит ты впереди!
k2007

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

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

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

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


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

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

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

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

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

14-15 уроки Iczelion'а
SnikerS

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


Ранг: 111.6 (ветеран)
Статус: Участник

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

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

-----
I_m alcoholic
ARCHANGEL


Ранг: 149.4 (ветеран)
Статус: Участник
ALIEN Hack Team

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

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

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


Оригинальный DVD-ROM крэкера: CRACKL@B DVD !


Вы находитесь на форуме сайта CRACKLAB.RU
Проект ReactOS