Консультация № 54003
01.09.2006, 16:28
0.00 руб.
0 4 4
Здравствуйте, уважаемые эксперты!
Вопрос: есть две программы, нужно, чтобы они пользвались (могли получать и изменять значения) одними переменными: какие функции? События не пойдут...
Спасибо!

Обсуждение

Неизвестный
01.09.2006, 18:03
общий
это ответ
Здравствуйте, Наумов Сергей Александрович / snov!
Не уверен, что понял вопрос.
Если речь идет об обмене данными между программами, то можно посмотреть здесь http://www.firststeps.ru/, Шаг 117.
Неизвестный
01.09.2006, 21:24
общий
это ответ
Здравствуйте, Наумов Сергей Александрович / snov!
1. С помощью DLL.
Все процессы, загрузившие одну и у ту же библиотеку (dll) будут использовать общую область памяти.
Это можно сделать следующим образом:
#pragma data_seg(".myseg")
int sharedlnts[10];
// другие переменные общего пользования
#pragma data_seg()
#pragma comment(lib, "msvcrt" "-SECTION:.myseg,rws");
Массив sharedlnts будет использоваться всеми процессами, загрузившими данную библиотеку.
подробнее здесь:
http://www.realcoding.net/article/view/2713?ShmID=e2abb6f172de14b33bd7d4d6bbf130f4
2. Клиент - сервер (можно сделать передачу данных в 2 направлениях).
Это можно реализовать с помощью:
- сокетов, подробнее здесь:
http://www.rsdn.ru/article/files/progs/inetd.xml
http://sources.ru/cpp/cpp_network.shtml#3
http://www.realcoding.net/article/view/2232?ShmID=554616e5c2822e365c71f6f654e37fb9
- каналы (named pipes)
http://www.excode.ru/art6065p1.html
3. Разделяемые файлы.
Смысл такой, что один процесс записывает информацию в файл, другой читает.
По моему, это легко реализовать с помощью ini файлов.
работа с ini файлами:
http://firststeps.ru/mfc/ini/ini1.html

Это вроде все основные способы... выбирайте...
Удачи!
Неизвестный
01.09.2006, 21:32
общий
это ответ
Здравствуйте, Наумов Сергей Александрович / snov!
коммент: static int sharedlnts[10];
Помоему, стоит объявить static.
Неизвестный
04.09.2006, 09:41
общий
это ответ
Здравствуйте, Наумов Сергей Александрович / snov!
Я бы посоветовал Вам посмотреть в MSDN в сторону FindWindow и WM_COPYDATA!
Форма ответа