Помощь - Поиск - Пользователи - Календарь
Полная версия: Как 2 программы могут обмениваться данными?
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
Гость
Вот такой вот интересный вопрос... 2 программы на одном компьютере как могут обменяться данными?
Ну не сокеты конечноsmile.gif Все-таки комп один, хотя почему и нет.. но все-таки с сокетами в Delphi7 ужасно (если винда без паков)

Можно обменяться через файл, но это слишком примитивно, т.к. надо постоянно дожидаться новой записи из файла это слишком большая нагрузка - непозволительно.

Может можно как через память обмен совершить напрямую сообщениями?

Хочу сделать что-то вроде такой схемы:

При вызове такого-то расширения стартует моя программа. Если копия уже открыта, то эта закрывается и передает свой параметр (параметр в командной строке) первой, а сам на закрытие...
таким образом активна постоянно одна прога, а копии отсылают только свои командные строки, с которыми они были вызваны...
Dark
помоему где то на форуме видел =) поиском не буду искать...
Винда обменивается сообщениями, вот их и посылаешь другому приложению!
Дальше, при создании окна есть такой параметр который следит за копиями окна (по моему так) и его можно проконтролировать

это низкий уровень WINAPI =0))
Guest
а это именно обычные строчные сообщения? Или обмениваться чем угодно не получится?
По-моему как-то я читал про обмен через какую-то TMemoryStream то ли что-то в этом направлении.... ток на данный момент забыл эту фишкуsmile.gif
Dark
Нет, я имел ввиду что программам можно посылать сообщения при помощи менеджера сообщений винды. У каждой виндопрограммы есть свой обработчик этих сообщений, например WM_EXIT - и оно закрывается =)))
Соответственно есть пользовательское сообщение у него 2 параметра, через них можно передавать инфу...

Поищи по WM_EXIT либо в хелпе дельфи либо по инету...
Shadow
это динамический обмен данными DDE (Dinamical Data Exchange) одно приложение работает как сервер другое как клиент
смотри компоненты DdeServerConv , DdeClientConv , DdeServerItem,DdeClientItem
---------
книга программирование в DELPHI 7 А.Я.Архангельский стр. 461
hiv
DDE не советую пользоваться, их поддержка в винде приостановлена, в смысле они конечно есть, но баги в них не правят и не развивают. А багов там много - я эту вещь пробовал... (правда его сетевую версию NetDDE)
Romtek
Я в этом не уверен, но может запустить поток в одной программе. А другая программа его "словит" и завершит?
У потока будет свой ID и его можно будет определить обеими программами. Сам не пробовал, не знаю.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.