|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » BINARY - последовательность значений параметров в реестре. |
|
BINARY - последовательность значений параметров в реестре.
|
Ветеран Сообщения: 842 |
Профиль | Отправить PM | Цитировать
Как красиво записать строку?
$x = Binary(0) & Binary(24) & Binary(@DesktopWidth) & Binary(@DesktopHeight-52) & Binary(0) RegWrite("HKCU\Software\PowerISO", "MainWindow", "REG_BINARY", $x) Как-то так нельзя - BinaryString(0,24 & @DesktopWidth... итп...) ? |
|
------- Отправлено: 19:02, 18-08-2010 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать Эта тема ждёт ответа, если глупый вопрос, то удалите тему.
Просто скрипт готов, и пора его кампильнуть. )) --- А вообще суперзадача, если бы старые данные не трогать, а только записать нужные байты с определённой позиции в строке! Это лучшее решение. Позицию в строке всегда можно указать явно, парсить и искать тут не нужно. Насколько я понял, там обычно всегда данные записанны кусками по четыре байта. То-есть в моём примере надо заменить @DesktopWidth в строке начиная с девятого байта строки. И сам @DesktopWidth тоже знимает 4 байта, только в перевёрнутом "форматированном" виде Binary() - 2048(десятичное) > 800(хекс) > 00 80 00 00(интелевское) |
------- Последний раз редактировалось semiono, 20-08-2010 в 21:10. Отправлено: 18:31, 20-08-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать $tReg = DllStructCreate("int;int Data;int Width;int Height;int") $tBin = DllStructCreate("byte["& DllStructGetSize($tReg) &"]", DllStructGetPtr($tReg)) DllStructSetData($tReg, "Data" , 24) DllStructSetData($tReg, "Width" , @DesktopWidth) DllStructSetData($tReg, "Height", @DesktopHeight-52) RegWrite("HKCU\Software\PowerISO", "MainWindow", "REG_BINARY", DllStructGetData($tBin,1)) |
Отправлено: 14:03, 21-08-2010 | #3 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 00:19, 22-08-2010 | #4 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать semiono
Думаю понятно, что одну последовательность байтов (блок памяти) можно интепретировать по разному - как массив целых, рациональных или действительных чисел, либо как массив ANSI/UNICODE/... знаков (текстовая строка) или еще как... При создании структуры через DllStructCreate() мы как раз и задаем пособ кодирования набора байтов: "int;int Data;int Width;int Height;int" - последовательность из 5 целых чисел по 4 байта =20 байт, а три элемента структуры по ходу именуем для удобства обращения. Но при создании новой структуры мы можем указать на уже существующую структуру (последний параметр DllStructCreate()), в этом случае память под структуру не выделяется, мы лишь "перекодируем" данные первой структуры, в примере - как простую последовательность байтов - "byte[20]". Само собой, длина второй "виртуальной" структуры не должна превышать (в байтах) длину первой "реальной" структуры, иначе последствия могут быть печальными. В нашем случае структуры одинаковой длины (DllStructGetSize() как раз возвращает длину структуры в байтах), поэтому определять их можно в любом порядке: |
|
Отправлено: 09:00, 22-08-2010 | #5 |
Ветеран Сообщения: 842
|
Профиль | Отправить PM | Цитировать Для меня в основном не понятно, то что по документации DllStructCreate() инициализируется так
(разрядность имя;разрядность имя;разрядность имя;разрядность имя) Хотя глядя на запись byte[20] можно понять, что в скобках можно ещё и указать количество, а само имя можно иногда опустить. Но ещё и указатель , DllStructGetPtr($tReg) ) ...вообщем из справки всего этого не понятно, всех возможных определений. Меня смутило не суперпозиция функций DllStructCreate(DllStructGetSize(), DllStructGetPtr()) а замена типов данных на указатели итп. Но к этому надо со временем привыкать просто |
------- Отправлено: 14:00, 22-08-2010 | #6 |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата semiono:
|
|
Отправлено: 16:55, 22-08-2010 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
C/C++ - [решено] Как сгенерировать случайное число на всем диапазоне значений int? | Michael | Программирование и базы данных | 14 | 04-02-2011 17:08 | |
Разное - Увеличение управляющих параметров в реестре | janpit | Microsoft Windows 2000/XP | 12 | 08-08-2008 10:32 | |
Интерфейс - [решено] редактирование параметров интерфейса в реестре | Reset5 | Microsoft Windows 2000/XP | 2 | 14-06-2008 15:11 | |
BIND for Win32 binary. | Guest | Сетевые технологии | 2 | 05-04-2004 11:53 | |
ftp ascii or binary | AndreySpb | Вебмастеру | 4 | 09-10-2002 22:44 |
|