Если у вас есть контроль над «этим приложением» (например, Yahoo Messenger), вы можете создать общую память, используя winapi:
LPSECURITY_ATTRIBUTES lpAtt=NULL;
HANDLE INVALID_FILE_HANDLE=(HANDLE)0xFFFFFFFF; //Memory handle
hMapFile=::CreateFileMapping(INVALID_FILE_HANDLE,
lpAtt,PAGE_READWRITE, 0,nSize, SharedMemName);
if (hMapFile == NULL)
{
ShowSomeMessageBox("Could not create shared memory");
return NULL;
}
LPTSTR pBuf = (LPTSTR) MapViewOfFile(hMapFile, FILE_MAP_ALL_ACCESS,0,0,nSize);
if(NULL==pBuf)
{
ShowSomeMessageBox("Could not create mapped view of theshared memory");
return NULL;
}
Если у вас есть этот буфер, вы можете записать в него данные, используя CopyMemory или любой другой API-интерфейс.
В вашем приложении C # вы можете использовать InterOp (P-invoke) для вызова WinAPI:
Использование:
OpenFileMapping (), MapViewOfFile ()
и т.д., чтобы открыть общую память
Использование:
Marshal.ReadInt32 (), Marshal.StructureToPtr ()
и т.д., чтобы прочитать данные в ваши структуры данных C #.