Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Как передать строку из одной программы в другую


Автор: unit0 22.3.2006, 14:43
Одна копия программы может генерировать специальное сообшение для другой.
Вместе с сообщением нужно передать строку.
Думал передавать указатель через параметры сообщения - не работает.

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

Автор: _hunter 22.3.2006, 14:59
поиск по форуму WM_COPYDATA.

Автор: Artemon 22.3.2006, 15:09
Это можно сделать кучей способов:

1) Сокеты.
2) Разделяемая область памяти DLL.
3) Буфер обмена.
4) WM_COPYDATA
3) Pipe

Автор: YanTsys 23.3.2006, 01:20
Если не ошибаюсь (у меня билдер старый) у вас в папке
Builder\Examples\Apps
будут образцы приложений
AUTOCON и AUTOSRV
откомпилируйте и запустите...

кстати к куче способов прибавте

6) реестр...

Но так как судя по всему вы работаете с сообщениями то правильный ответ все же WM_COPYDATA

WM_COPYDATA
wParam = (WPARAM) (HWND) hwnd; // дескриптор окна, отправляющего данные
lParam = (LPARAM) (PCOPYDATASTRUCT) pcds; // указатель на структуру с данными

Автор: OlexXX 24.3.2006, 23:47
Самый простой и дубовый способ - через текстовый файл. Именно: программа 2 в цикле опрашивает какой-то каталог (моно виндовс) на наличие файла с именем, ан пример, str.dat. Как токо он появился - читаем его содержимое и удаляем. Для 1-й проги это сигнал, что файл прочитан. Тут много что можно придумать. Я делал, к примеру, проверку в 1-ой программе, запущена ли вторая и т.д.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)