Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] AutoIt работа с памятью.

Ответить
Настройки темы
[решено] AutoIt работа с памятью.

Аватара для Belfigor

Пользователь


Сообщения: 87
Благодарности: 11

Профиль | Отправить PM | Цитировать


Изменения
Автор: Belfigor
Дата: 20-07-2009
Возник вопрос, могу ли я с помощью AutoIt не только считывать данные из памяти конкретного процесса, а зарезервировать в оперативной памяти n-ное количество ячеек которые будут хранить в себе определенные числа которые будут в режиме реального времени изменяться и далее считываться другим скриптом? Думал про работу через ini, но все же более интересен аспект работы с памятью

Или же если возможно то хотелось бы узнать можно ли структурировать по ячейкам буфер обмена, чтобы туда в определенные ячейки заносились данные одним скриптом и потом считывались другим скриптом. ClipGet ClipPut как я понял работает на весь буфер

ini не предлагать, решение проблемы с помощью ини я знаю, хотелось бы узнать можно ли работать так с памятью и или буфером обмена.

Отправлено: 22:18, 22-06-2009

 

Аватара для proxy

Старожил


Сообщения: 460
Благодарности: 152

Профиль | Отправить PM | Цитировать


как уже написал вариант Creat0R, + еще использовать можно эту UDF.
А технология простая:

1. Дочерный скрипт проверят в родителсьвом скрипте скрытое поле ввода (или же ячейку в памяти), если она пуста то записывает туда комманду, которую должен выполнить родителський скрипт.

2. Родителський скрипт в цикле проверяет свое скрытое поле, ждет получения комманды. Как только полученна комманда, начинает её выполнять, а перед этим очищает свое скрытое поле.

вот и весь принцип интеракции

-------
Мысли-читатель сломался, может подробней расскажите?
А где исходный код? Или мы стихи обсуждаем?! )) Настройки темы > Решено ?


Отправлено: 01:02, 21-07-2009 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Belfigor

Пользователь


Сообщения: 87
Благодарности: 11

Профиль | Отправить PM | Цитировать


Возьму на вооружение, спасибо

Отправлено: 01:24, 21-07-2009 | #12


Аватара для Belfigor

Пользователь


Сообщения: 87
Благодарности: 11

Профиль | Отправить PM | Цитировать


Как можно узнать, где в памяти процесса начинается та самая "куча"?
Например я открываю процесс, начинаю шарить в памяти с 0х00000000, и только с 0х00010000 идут данные, ячейки с 0х00000000 по 0х00010000 пусты.

Отправлено: 07:06, 27-07-2009 | #13


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Belfigor:
где в памяти процесса начинается та самая "куча"? »
куча - объект ОС и он нигде не начинается, через него осуществляется "привязка" физической памяти к виртуальной, при выделении каждого блока сообщается его положение (указатель) в адресном пространстве процесса

Отправлено: 12:13, 27-07-2009 | #14


Аватара для Belfigor

Пользователь


Сообщения: 87
Благодарности: 11

Профиль | Отправить PM | Цитировать


А как мне узнать где эта область начинается для конкретного уже существующего процесса?

Отправлено: 15:05, 27-07-2009 | #15


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Belfigor, обходной путь:
Код: Выделить весь код
$PID = ProcessExists("Explorer.Exe")
$adr = _ProcessGetAllocAddress($PID)
ConsoleWrite("0x"& Hex($adr) &@CRLF)

Func _ProcessGetAllocAddress ($PID)
    Local $tPID = DllStructCreate("long")
    Local $tBuffer = DllStructCreate("byte")

    DllStructSetData($tPID, 1, $PID)
    Local $hProc = DllCall('kernel32.dll', 'int', 'OpenProcess', "int", 0x38, "int", 0, "int", DllStructGetData($tPID,1))
    Local $pMem = DllCall('kernel32.dll', 'int', 'VirtualAllocEx', "int", $hProc[0], "ptr", 0, "int", DllStructGetSize($tBuffer),   "int", 0x3000, "int", 0x4)

    DllCall('kernel32.dll', 'int', 'VirtualFreeEx', "int", $hProc[0], "ptr", $pMem[0], "int", 0, "int", 0x8000)
    DllCall("kernel32.dll", "int", "CloseHandle", "int", $hProc[0])

    Return $pMem[0]
EndFunc ; ==> _ProcessGetAllocAddress

Последний раз редактировалось amel27, 28-07-2009 в 08:44. Причина: оформление

Это сообщение посчитали полезным следующие участники:

Отправлено: 08:21, 28-07-2009 | #16


Аватара для Belfigor

Пользователь


Сообщения: 87
Благодарности: 11

Профиль | Отправить PM | Цитировать


amel27, сегодня ночью сяду смотреть что это дает, если оно поможет мне режить проблему вменяемой интеракции то слава богам, ты мой спаситель

Отправлено: 08:32, 28-07-2009 | #17


Googler


Сообщения: 3665
Благодарности: 1563

Профиль | Отправить PM | Цитировать


Цитата Belfigor:
если оно поможет мне режить проблему вменяемой интеракции »
строго говоря, эта UDF - игрушка и её нельзя использовать в рабочих скриптах, т.к. стартовый адрес находится в ведении процесса и может в любое время измениться, т.е. получать адрес можно только с одновременной блокировкой этого участка памяти... что и делает VirtualAllocEx()

я выдернул этот кусок из своей старой UDF по определению координат ярлыка на рабочем столе, там происходит выделение с копированием памяти между процессами... думаю то, что ты ищешь: http://forum.oszone.net/post-605123-110.html

Отправлено: 08:56, 28-07-2009 | #18



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] AutoIt работа с памятью.

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Delphi - Delphi | Работа с памятью чужого процесса, перехват API Savant Программирование и базы данных 17 11-04-2012 13:06
Работа с LDAP в autoIT iDemon AutoIt 0 30-05-2009 15:50
Разное - [решено] Работа со списками на AutoIt Demka_DV AutoIt 3 14-05-2009 11:10
[решено] Проблема с памятью Quickly Материнские платы и память 2 13-11-2008 16:27
[решено] траблы с памятью Kazus Непонятные проблемы с Железом 15 24-05-2007 14:04




 
Переход