![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
передача данных в чужое адрессное пространство [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