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

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

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

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

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

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

Различия между двумя циклами C++
C++ Технология обмен данными между приложениями
C++ Как обмениваться данными между приложениями в сети?
C++ Обмен данными между двумя приложениями по системе клиент-сервер
Сообщения между win32 приложениями C++
C++ передача данных между потоками
Обмен между приложениями C++
Передача данных между классами C++
C++ Распространение данных между приложениями с использованием DLL
Расстояние между двумя множествами точек - это расстояние между наиболее близко расположенными точками этих C++
C++ Передача данных между классами
C++ Взаимодействие между двумя программами

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Deviaphan
Делаю внезапно и красиво
Эксперт C++
 Аватар для Deviaphan
1285 / 1219 / 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++
 Аватар для Deviaphan
1285 / 1219 / 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     Передача данных между двумя приложениями.
Ответ Создать тему
Опции темы

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