|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
07.12.2008, 19:51 | #1 |
Старожил
Регистрация: 29.01.2008
Сообщений: 2,406
|
Общение между програмамми...
Привет всем!
Есть такая задача. Хочу сразу сказать, что-бы не предлогали решения, не имеющих даже косвенной связи с настоящим вопросом. Мне просто стало интересно. Короче, есть 2 проги. I посылает сообщение II. Условие, хендл известен! Код:
Код:
|
07.12.2008, 20:28 | #2 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
У вас нет понятия что такое процесс... данных находятся в разных сегментах в разных адрессах памяти. Почему бы вам просто не юзать File Mapping ? там по имени спокойно обращаться можно к общей кучи для двух приложений.
|
07.12.2008, 21:45 | #3 |
Старожил
Регистрация: 29.01.2008
Сообщений: 2,406
|
Ясно, а если напишу:
p := @s; sendMessage(h: HWND, wm_user+1, integer(p: pinter), 0); то нормально примет? |
07.12.2008, 22:05 | #4 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
08.12.2008, 19:25 | #5 |
Старожил
Регистрация: 29.01.2008
Сообщений: 2,406
|
Значит общаться между приложениями модно только по средствам tWMCopyData? Если нужно это делать только при помощи сообщений?
А всётке интересно, почему? Ведь integer-ы передаёт нормально. Пачему он так hendle не может передать, или поинтер? Вот так, например, нормально работает: Код:
Последний раз редактировалось rpy3uH; 09.12.2008 в 12:42. |
08.12.2008, 20:32 | #6 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Я понимаю вы очень занятой человек и прочитать мой пост вообще не судьба ?
|
09.12.2008, 04:22 | #7 |
Старожил
Регистрация: 29.01.2008
Сообщений: 2,406
|
Я читал ваш пост...
Значит, если я правильно понял, адресс одной переменной одного процесса, может совпадать и адресом переменной другого процесса? А что с File Mapping-ом? Последний раз редактировалось Altera; 09.12.2008 в 04:49. |
09.12.2008, 11:00 | #8 |
Android Developer
Старожил Подтвердите свой е-майл
Регистрация: 19.02.2007
Сообщений: 3,708
|
Адреса не могут совпадать. Как я понимаю... в нашем случае имеется Виндовс.. поэтому адресс это [адрес сегмента]:[смешение] так вот это смещение может совпадать, а вот адреса никак. адрес сегмента слово - регистр cs... но даже если так просто взять и поменять то вам не даст виндовс так просто обращаться к адресному простарнству другого процеса. Для этого имеются функции Read(Write)ProcessMemory. В теории можно в сообщение передать адресс переменной просто DWord(@Variable) а потом через ReadProcessMemory попробывать произвести чтение из этого адреса нужного кол-ва байт. Но серьезно... проверять эту теорию не проверял, но поидеи должно проканать.
File Mapping - в сети уйма материала который все описывает. Сдесь опять рассказывать не буду. Заинтерисовался своей теорией все вышло...смотрим пример Последний раз редактировалось rpy3uH; 09.12.2008 в 12:43. |
09.12.2008, 12:50 | #9 | |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Цитата:
С помощью FileMapping можно разделять один кусок памяти между несколькими процессами. FileMapping является главным средством межпроцессорного взаимодействия, тем более когда надо обмениваться большими порциями данных. |
|
09.12.2008, 15:36 | #10 | |
Старожил
Регистрация: 29.01.2008
Сообщений: 2,406
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Общение между формами | kate4ka | Общие вопросы Delphi | 2 | 10.03.2008 22:49 |
Общение форм | Rapid | Общие вопросы Delphi | 9 | 17.11.2007 17:56 |
Общение программ через TEvent | UnD)eaD)Snake | Win Api | 6 | 11.09.2007 07:03 |
"Общение" между формой и вызываемой процедурой | Квэнди | Общие вопросы Delphi | 6 | 11.01.2007 14:10 |