firex
AutoIT Гуру
- Сообщения
- 943
- Репутация
- 208
script_1.au3
script_2.au3
Передаю второму скрипту указатель на объект созданный в первом скрипте, далее пытаюсь получить указатель на саму память используя _MemGlobalLock - и в результате ничего.
Раньше работал с такими объектами ( созданными самой системой ) -и проблем не возникало. Видимо тут все не так просто, может у кого есть идеи ( достаточно будет кинуть ссылку на нужную функцию (на msdn), так как подобных там множество ) ?
P.S. Второй скрипт нужно скомпилировать.
Добавлено:
Тема решена, что то я совсем ерунду тут накрутил. Все получилось путем топорного чтения процесса.
Код:
#include <Memory.au3>
$hMemory = _MemGlobalAlloc( 4, $GHND )
If $hMemory <> 0 Then
$hLock = _MemGlobalLock( $hMemory )
If $hLock <> 0 Then
$tStruct = DllStructCreate( "dword", $hLock )
DllStructSetData( $tStruct, 1, 14 )
_MemGlobalUnLock( $hMemory )
EndIf
Run( @ScriptDir & "\script_2.exe -" & Int( $hMemory ), @ScriptDir )
MsgBox( 64, "Mem", "hMemory=" & $hMemory )
_MemGlobalFree( $hMemory )
EndIf
script_2.au3
Код:
#include <Memory.au3>
$hMemory = Ptr( StringRegExpReplace( $CmdLineRaw, "^.*-([0-9]+).*$", "\1" ) )
$hLock = _MemGlobalLock( $hMemory )
MsgBox( 16, "Error", "hLock=" & $hLock & @LF & _
"hMemory=" & $hMemory & @LF & _
"Error=" & @Error )
_MemGlobalUnLock( $hMemory )
Передаю второму скрипту указатель на объект созданный в первом скрипте, далее пытаюсь получить указатель на саму память используя _MemGlobalLock - и в результате ничего.
Раньше работал с такими объектами ( созданными самой системой ) -и проблем не возникало. Видимо тут все не так просто, может у кого есть идеи ( достаточно будет кинуть ссылку на нужную функцию (на msdn), так как подобных там множество ) ?
P.S. Второй скрипт нужно скомпилировать.
Добавлено:
Сообщение автоматически объединено:
Тема решена, что то я совсем ерунду тут накрутил. Все получилось путем топорного чтения процесса.