реклама на сайте
подробности

 
 
> Обмен данными двух программ.
upc2
сообщение Nov 10 2006, 06:57
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



Две программы на одном компьютере.Потребовалось организовать песылку данных из одной
программы в другую.Т.к. программы мои , то сделал это быстро, используя буфер обмена.
Все хорошо.Все работает.Потребовали программу наблюдения за процессом по сети.Разработал
новую и модернизировал старые программы.И выяснилось , что функция API CopyFile тоже
использует буфер обмена.И начались глюки с использованием буфера обмена. Решил отказаться
от использования буфера обмена в основных программах.Полезло в голову DDE,OLE и прочее, но и
они используют буфер обмена.Пока выкрутился так.Одна программа пишет данные в текстовый
файл на диск, а другая его забирает.
Поделитесь опытом как вы организовываете обмен данными между программами.Или как это сделать
правильно.С использованием COM и DCOM не предлагать.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 7)
sff
сообщение Nov 10 2006, 08:45
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 23-04-06
Пользователь №: 16 404



Цитата(upc2 @ Nov 10 2006, 09:57) *
Две программы на одном компьютере.Потребовалось организовать песылку данных из одной
программы в другую.Т.к. программы мои , то сделал это быстро, используя буфер обмена.
Все хорошо.Все работает.

Я что-то не особо представляю как это сделано через буфер обмена..

Вообще есть уйма способов, и по-видимому, вам подойдет отображение файла на память MapViewOfFile. Тогда у двух процессов будет один общий болк памяти и никакого промежуточного буфера.

А так в Windows есть ещё Named Pipes, Mailslots (уже на любителя).
Go to the top of the page
 
+Quote Post
upc2
сообщение Nov 10 2006, 09:39
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



Одна программа засылает данные в буфер обмена, другая забирает.
Спасибо.Я сейчас и рассматриваю отображение в память.Здесь есть один ньюанс.
Необходимо подобрать функции, которые работали бы и в 98 ,и в 2000 без
контроля версии. Или придется много переделывать.
Go to the top of the page
 
+Quote Post
sff
сообщение Nov 10 2006, 10:34
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 172
Регистрация: 23-04-06
Пользователь №: 16 404



Цитата(upc2 @ Nov 10 2006, 12:39) *
Необходимо подобрать функции, которые работали бы и в 98 ,и в 2000 без
контроля версии. Или придется много переделывать.

Работал с отображением достаточно давно, но по-моему, таких проблем не было.
Зависимо в MapViewOfFile это атрибут EXECUTE, а он в вашем случае не нужен.
А в CreateFileMapping тоже всё что связано с созданием отображения с выполняемым кодом.
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Nov 10 2006, 11:40
Сообщение #5


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



сокеты, каналы.... в общем средства межпроцессного взаимодействия. много написано
Go to the top of the page
 
+Quote Post
upc2
сообщение Nov 10 2006, 13:01
Сообщение #6


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



Цитата(jorikdima @ Nov 10 2006, 14:40) *
сокеты, каналы.... в общем средства межпроцессного взаимодействия. много написано


Нет с сокетами тоже не хочу связываться.Программы уже 4 года работают.Необходимо внести
минимум дополнительного кода.Уже набросал отображение файла на память .В понедельник
буду тестировать.
Go to the top of the page
 
+Quote Post
_artem_
сообщение Nov 10 2006, 13:08
Сообщение #7


учащийся
*****

Группа: Свой
Сообщений: 1 065
Регистрация: 29-10-05
Из: города контрастов
Пользователь №: 10 249



Там не только сокеты. Посмотрите мсдн для interprocess communication.


--------------------
Зачем лаять на караван , когда на него можно плюнуть?

Go to the top of the page
 
+Quote Post
upc2
сообщение Nov 13 2006, 05:52
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 506
Регистрация: 29-09-05
Из: Донецк
Пользователь №: 9 063



Спасибо всем.Проанализировал все ваши советы.В данной ситуации остановился на буфере обмена.
Отображение файла в память ,в данном случае, ничего нового не вносит.Одна программ должна
создавать файл стандартными файловыми функциями В/В, а другая уже связывает этот файл с некоторой областью памяти.Проще и во второй использовать функции В/В.Меньше мороки.Так сейчас и
делается .Связь через текстовый файл.
Буфер обмена я использовал не корректно.Задействовал когда-то стандартный текстовый формат и
успокоился.Мои программы обмениваются с частотой около 1 сек.Если другая программа занесет
в буфер свои данные , то произойдет сбой.
Оказывается этого можно избежать использованием собственного формата.Создается формат для
своих данных и регистрируется.Для него резервируется обьем динамической памяти.И данными
пользуются те программы , которые поддерживают этот формат.Главное уход от использования
общего текстового формата.И все функции работают в Win98 и 2000.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th June 2025 - 20:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016