Итак, есть желание исследовать вопрос о возможности передачи данных между разными приложениями с помощью организации разделяемого сегмента данных.
Создал dynamic shared dll с кодом
//DllCommonSource.h
#pragma data_seg("Shared")
int ex_i = 0;
#pragma data_seg()
//DllCommonSource.cpp
#pragma comment(linker, "/section:Shared,RWS")
Создал два тестовых приложения
// приложение источник
// Source.cpp
#include <DllCommonSource.h>
#pragma comment(linker, "/section:Shared,RWS")
.....
void CMyDlg::OnButton()
{
ex_i++;
}
// приложение приемник
// Receiver.cpp
#include <DllCommonSource.h>
#pragma comment(linker, "/section:Shared,RWS")
.....
void::OnTimer(UINT nIDTimer )
{
CString str; str.Format( "%d", ex_i );
m_TextCtrl.SetWindowText(str);
}
И получилось....
При запуске нескольких программ источников переменная ex_i у них общая.
А вот в приёмнике эта переменная всегда 0.
Где грабли?
И вообще такое взаимодействие между разными программами возможно?