- Сообщения
- 3,557
- Репутация
- 628
В теме http://autoit-script.ru/index.php/topic,2733.0.html показан пример как один процесс передает данные другому. передача данных односторонняя .
один процесс создает область данных
другой подключается к ней
я использовал несколько иначе - оба процесса создают область обмена данными
первый:
второй:
оба процесса получают друг от друга информацию,могут ее обработать и передать обратно
насколько корректно использование функции в таком виде? в документации по CreateFileMapping я мало что понял. английским владею на уровне интуиции
а машинный перевод оставляет желать лучшего.
я некоторое время тестировал подобный вариант и не столкнулся с какими либо трудностями.
один процесс создает область данных
Код:
_WinAPI_CreateFileMapping(-1, 2048, 'MyFileMapping')
другой подключается к ней
Код:
_WinAPI_OpenFileMapping('MyFileMapping')
я использовал несколько иначе - оба процесса создают область обмена данными
первый:
Код:
#include <WinAPIEx.au3>
OnAutoItExitRegister('_exit')
Global $hMapping, $pAddress, $tData
$hMapping = _WinAPI_CreateFileMapping(-1, 2048, 'MyFileMapping')
$pAddress = _WinAPI_MapViewOfFile($hMapping)
$tData = DllStructCreate('wchar[1024];wchar[1024]', $pAddress)
$Form1 = GUICreate("Окно 1", 309, 90, 100, 100)
$Button1 = GUICtrlCreateButton("Button1", 168, 56, 75, 25)
$Input1 = GUICtrlCreateInput("Первый", 32, 24, 217, 21)
$label = GUICtrlCreateLabel('', 32, 50, 100, 21)
GUISetState(@SW_SHOW)
While 1
$string = DllStructGetData($tData, 2)
GUICtrlSetData($label, $string)
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
$Text = GUICtrlRead($Input1)
DllStructSetData($tData, 1, $Text)
EndSwitch
WEnd
Func _exit()
_WinAPI_UnmapViewOfFile($pAddress)
_WinAPI_CloseHandle($hMapping)
EndFunc ;==>_exit
второй:
Код:
#include <WinAPIEx.au3>
OnAutoItExitRegister('_exit')
Global $hMapping, $pAddress, $tData
$hMapping = _WinAPI_CreateFileMapping(-1, 2048, 'MyFileMapping')
$pAddress = _WinAPI_MapViewOfFile($hMapping)
$tData = DllStructCreate('wchar[1024];wchar[1024]', $pAddress)
$Form1 = GUICreate("Окно 2", 309, 90, 100, 300)
$Button1 = GUICtrlCreateButton("Button1", 168, 56, 75, 25)
$Input1 = GUICtrlCreateInput("Второй", 32, 24, 217, 21)
$label = GUICtrlCreateLabel('', 32, 50, 100, 21)
GUISetState(@SW_SHOW)
While 1
$string = DllStructGetData($tData, 1)
GUICtrlSetData($label, $string)
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
Case $Button1
$Text = GUICtrlRead($Input1)
DllStructSetData($tData, 2, $Text)
EndSwitch
WEnd
Func _exit()
_WinAPI_UnmapViewOfFile($pAddress)
_WinAPI_CloseHandle($hMapping)
EndFunc ;==>_exit
оба процесса получают друг от друга информацию,могут ее обработать и передать обратно
насколько корректно использование функции в таком виде? в документации по CreateFileMapping я мало что понял. английским владею на уровне интуиции
а машинный перевод оставляет желать лучшего.
я некоторое время тестировал подобный вариант и не столкнулся с какими либо трудностями.