Войти

Показать полную графическую версию : Передача данных между процессами


garkin123
23-05-2009, 20:44
Два процесса. Набор данных, который нужно передать из первого в оконную процедуру второго.
Простая передача указателя, я думаю, здесь не поможет? Это же будет локальный адресс для первого процесса.
Как можно представить эту информацию в ином виде, доступном для считывания из второго процесса? К примеру привести указатель на локальную память в "глобальный" вид. Либо считать память из памяти первого процесса по локальному указателю.

pva
25-05-2009, 07:14
Раздел MSDN называется Interprocess Communication
http://msdn.microsoft.com/library (в поиске набираешь что нужно)
вкратце варианты:
1. через внешний файл
2. через общую память (тоже через файл, типа swap-а)
3. перенаправление потоков ввоба-вывода (только при старте процесса)
4. через pipe, mailslot
5. DDE
6. ActiveX
По указателю взять не получится (если не вести отладку)

DillerInc
25-05-2009, 11:46
garkin123, в первом процессе создаёшь file mapping с именем.Туда помещаешь свои данные.Во втором процессе открываешь этот file mapping по этому самому имени.Секция видна в обоих процессах.Это называется разделяемая память.
Вот функции,которые тебе понадобятся:
CreateFileMapping (http://msdn.microsoft.com/en-us/library/aa366537(VS.85).aspx)
MapViewOfFile (http://msdn.microsoft.com/en-us/library/aa366761(VS.85).aspx)
OpenFileMapping (http://msdn.microsoft.com/en-us/library/aa366791(VS.85).aspx)
UnmapViewOfFile (http://msdn.microsoft.com/en-us/library/aa366882(VS.85).aspx)

garkin123
25-05-2009, 14:48
Спасибо, уже сделал через мапинг.

К списку способов передачи стоит также добавить оконное сообщение WM_COPYDATA.




© OSzone.net 2001-2012