Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

передача данных в чужое адрессное пространство [D7, XP]


4izh ©   (2006-08-20 12:23:00) 

народ помогите советом .

моя прога поставила хук на другую прогу в результате чего DLL была подгружена в чужоа а.п. но при етом все переменные были обнулены . как передать в ту DLL данные из проги установившей хук ?  

использовать сокеты и все файловые операции запрещено условием задачи


guav   (2006-08-20 23:29:00) [1]

Уже было предложение использовать MMF.
Для данной задачи - достаточно удобный путь, удобнее чем WM_COPYDATA.


4izh   (2006-08-20 22:37:00) [2]

создать не видимое окно, ето не плохое предложение .

с удовольствием выслушаю и другие предложения


DrPass   (2006-08-20 21:54:00) [3]


> приемная прога написана не мной и соответственно не ждет
> wm_copydata

Если ты в нее внедряешь свою DLL, то что тебе мешает в этой DLL создать невизуальное окно, принимающее в свою функцию wm_copydata?


Пусик   (2006-08-20 21:19:00) [4]


> 4izh   (20.08.06 21:04) [16]
> to пусик прочти вопрос с которого начинается данная ветка
> обсуждения


Не вижу в условии запрета на использование разделенной области памяти ы\в DLL.


4izh   (2006-08-20 21:04:00) [5]

to пусик

прочти вопрос с которого начинается данная ветка обсуждения


Пусик   (2006-08-20 20:42:00) [6]


> 4izh   (20.08.06 20:29) [14]
>пункт 3 отпадает по условию задачи


Что за условие?


4izh   (2006-08-20 20:29:00) [7]

to пусик

пункт 3 отпадает по условию задачи
а вот про пункт 2 хотелось бы узнать поподробнее


Пусик   (2006-08-20 20:12:00) [8]


> 4izh   (20.08.06 18:06) [7]
> а откуда я их возьму(в чужом а.п.) если они были извесны
> тока в проге устанавливающей хук


Любым способом устанавливаешь взаимодействие между двумя процессами:
1. Организуешь очередь сообщений
2. Создаешь глобальную доступную область в DLL
3. Используешь MMF, NamedPipes, MailSlots...


4izh   (2006-08-20 19:08:00) [9]

приемная прога написана не мной и соответственно не ждет wm_copydata

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

а если совсем конкркетно то длл в чужом а.п. надо передать хендл окна на которое эта длл подсажена. caption использовать не получится так как он динамически меняется


DrPass   (2006-08-20 18:31:00) [10]


> wm_copydata легко использовать для связи
> между прогами если приемная сторона етого ожидает

Само собой. Программа должна уметь принимать это сообщение и корректно его обрабатывать. Ты ж не можешь схватить ее за коки, сжать и заставить насильно принять данные :)

>  в противном случае
> придется ставить перехватчик на ето сообщение

Какой еще перехватчик? Предполагается, что ты сам пишешь и код, который посылает wm_copydata, и оконную функцию, которая его принимает. Другого не дано.

> просто в  чужой проге надо ныжимать несколько кнопачек

И что, для этого нужно внедриться в ее адресное пространство?


4izh   (2006-08-20 18:25:00) [11]

to virgo_style
нет не пакость просто в  чужой проге надо ныжимать несколько кнопачек


4izh   (2006-08-20 18:20:00) [12]

to drpass
если я все правильно понял то wm_copydata легко использовать для связи
между прогами если приемная сторона етого ожидает. в противном случае
придется ставить перехватчик на ето сообщение  или я не прав  ??


Virgo_Style   (2006-08-20 18:17:00) [13]

не пакость ли мы пишем


4izh   (2006-08-20 18:06:00) [14]

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


Пусик   (2006-08-20 17:26:00) [15]


> 4izh   (20.08.06 17:02) [5]
> после спроектирования длл в чужое а.п. все ее переменные
> равны нулю


Ну так инициализируй их нужными значениями.


4izh   (2006-08-20 17:02:00) [16]

после спроектирования длл в чужое а.п. все ее переменные равны нулю

переменные не передаются в DLL в чужом а.п.


Пусик   (2006-08-20 16:28:00) [17]


> 4izh   (20.08.06 12:23) 
>  но при етом все переменные были обнулены


Кем и как?


Сергей М.   (2006-08-20 15:52:00) [18]


> при етом все переменные были обнулены


Ты сам и обнулил их.


Ketmar   (2006-08-20 13:08:00) [19]

а еще sherd-секции. которые Delphi не поддерживает. %-)


DrPass   (2006-08-20 12:34:00) [20]


> все файловые операции запрещено условием задачи

Файловые операции - понятие растяжимое. Вообще все, или только те, которые что-то оставляют на диске? Memory-mapped файлы разрешены? А named pipes? А еще можно использовать wm_copydata


Наверх

Титульная страница Поиск, карта сайта Написать письмо