Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 20, средняя оценка - 4.70
Kiton
0 / 0 / 0
Регистрация: 12.05.2012
Сообщений: 7
#1

Передача данных между двумя приложениями. - C++

12.05.2012, 08:19. Просмотров 2798. Ответов 3
Метки нет (Все метки)

Суть проблемы такова: есть приложение на с#, производящее вычисления, результатом является массив данных. Есть прога на с++ + QT, умеющая визуализировать подобные данные. Вопрос: можно ли как-то передать данные (массив интов) из проги на с# в прогу на с++ в реальном времени (т.е., например, без записи в файл и чтения)?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2012, 08:19     Передача данных между двумя приложениями.
Посмотрите здесь:
C++ Обмен данными между двумя приложениями по системе клиент-сервер
C++ Распространение данных между приложениями с использованием DLL
Передача данных между классами C++
C++ Передача данных между потоками
C++ Передача данных между классами
Обмен между приложениями C++
Сообщения между win32 приложениями C++
C++ Технология обмен данными между приложениями
C++ Как обмениваться данными между приложениями в сети?
Расстояние между двумя множествами точек - это расстояние между наиболее близко расположенными точками этих C++
C++ Взаимодействие между двумя программами
C++ Расстояние между двумя точками

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
12.05.2012, 08:29     Передача данных между двумя приложениями. #2
Можно, если размер массива не сильно большой. Можно через глобальную память передавать или маршалить между процессами, но тогда вдвое больше памяти оперативной потребуется.
Если массив не большой (несколько мегабайт, например), то можно через буфер обмена Windows. Это самый простой способ, потому что не будет проблем с синхронизацией.
Kiton
0 / 0 / 0
Регистрация: 12.05.2012
Сообщений: 7
12.05.2012, 08:37  [ТС]     Передача данных между двумя приложениями. #3
Спасибо! А можно пример или ссылку как в с++ (qt) проге вытащить данные из буфера обмена?
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
12.05.2012, 08:55     Передача данных между двумя приложениями. #4
Я фрагмент кода скопирую. BuildData строку формирует, остальные функции это WinAPI.
Этот код копирует данные в буфер обмена. Нужно второму приложению послать сообщение о необходимости извлечь данные из буфера. WM_COPYDATA, если не ошибаюсь.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
        std::wstring data;
        BuildData( data );
 
        wchar_t * lptstrCopy = NULL; 
        HGLOBAL hglbCopy = NULL; 
 
        if( !OpenClipboard() ) 
            return; 
 
        EmptyClipboard(); 
 
        hglbCopy = GlobalAlloc( GMEM_MOVEABLE, (data.size()+1)*2 ); 
        if (hglbCopy == NULL) 
        { 
            CloseClipboard(); 
            return; 
        } 
 
        lptstrCopy = (wchar_t*)GlobalLock(hglbCopy); 
 
        memcpy(lptstrCopy, data.c_str(), data.size()*2);
        lptstrCopy[data.size()] = 0;
        GlobalUnlock(hglbCopy); 
 
        SetClipboardData(CF_UNICODETEXT, hglbCopy); 
 
        CloseClipboard();
Yandex
Объявления
12.05.2012, 08:55     Передача данных между двумя приложениями.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru