![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] AutoIt работа с памятью. |
|
[решено] AutoIt работа с памятью.
|
Пользователь Сообщения: 87 |
Возник вопрос, могу ли я с помощью AutoIt не только считывать данные из памяти конкретного процесса, а зарезервировать в оперативной памяти n-ное количество ячеек которые будут хранить в себе определенные числа которые будут в режиме реального времени изменяться и далее считываться другим скриптом? Думал про работу через ini, но все же более интересен аспект работы с памятью
![]() Или же если возможно то хотелось бы узнать можно ли структурировать по ячейкам буфер обмена, чтобы туда в определенные ячейки заносились данные одним скриптом и потом считывались другим скриптом. ClipGet ClipPut как я понял работает на весь буфер ![]() ini не предлагать, решение проблемы с помощью ини я знаю, хотелось бы узнать можно ли работать так с памятью и или буфером обмена. |
|
Отправлено: 22:18, 22-06-2009 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать как уже написал вариант Creat0R, + еще использовать можно эту UDF.
А технология простая: 1. Дочерный скрипт проверят в родителсьвом скрипте скрытое поле ввода (или же ячейку в памяти), если она пуста то записывает туда комманду, которую должен выполнить родителський скрипт. 2. Родителський скрипт в цикле проверяет свое скрытое поле, ждет получения комманды. Как только полученна комманда, начинает её выполнять, а перед этим очищает свое скрытое поле. вот и весь принцип интеракции |
------- Отправлено: 01:02, 21-07-2009 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 87
|
Профиль | Отправить PM | Цитировать Возьму на вооружение, спасибо
![]() |
Отправлено: 01:24, 21-07-2009 | #12 |
Пользователь Сообщения: 87
|
Профиль | Отправить PM | Цитировать Как можно узнать, где в памяти процесса начинается та самая "куча"?
Например я открываю процесс, начинаю шарить в памяти с 0х00000000, и только с 0х00010000 идут данные, ячейки с 0х00000000 по 0х00010000 пусты. |
Отправлено: 07:06, 27-07-2009 | #13 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Belfigor:
|
|
Отправлено: 12:13, 27-07-2009 | #14 |
Пользователь Сообщения: 87
|
Профиль | Отправить PM | Цитировать А как мне узнать где эта область начинается для конкретного уже существующего процесса?
|
Отправлено: 15:05, 27-07-2009 | #15 |
Googler Сообщения: 3665
|
Профиль | Отправить 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 |
Пользователь Сообщения: 87
|
Профиль | Отправить PM | Цитировать amel27, сегодня ночью сяду смотреть что это дает, если оно поможет мне режить проблему вменяемой интеракции то слава богам, ты мой спаситель
![]() |
Отправлено: 08:32, 28-07-2009 | #17 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата Belfigor:
я выдернул этот кусок из своей старой UDF по определению координат ярлыка на рабочем столе, там происходит выделение с копированием памяти между процессами... думаю то, что ты ищешь: http://forum.oszone.net/post-605123-110.html |
|
Отправлено: 08:56, 28-07-2009 | #18 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
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 |
|