Уважаемые специалисты и знатоки, прошу не пинать ноггами, а помочь в разрешении некоторых проблемных вопросов: Я остановился на MASM32 1). Где найти хорошую инфу с описанием кодов ошибок на русском, ибо английский компьютерный слэнг мне не понятен? 2). invoke RegCreateKey,HKEY_LOCAL_MACHINE, ADDR SubKey,ADDR hKey .if !eax invoke RegSetValueEx,hKey,ADDR szznak,0,REG_SZ,ADDR sz12345,4 Я не сразу понял, что 4 надо заменить на 5, иначе в реестр попадёт "1234" a). Где найти инфу о том когда, как и зачем делать такие указания длины? b). sz - означает тип вводимого параметра? Тогда где найти подробную инфу о других, как ввести параметр типа "dword", а как типа "hex", "строковой параметр" и т. д. 3). Вот рабочий под masm 32 код: Код (Text): ++++++++++++++++++++++++++++++++++ .386 .model flat, stdcall option casemap :none ; case sensitive include \masm32\include\windows.inc include \masm32\include\user32.inc include \masm32\include\kernel32.inc include \masm32\include\advapi32.inc includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\advapi32.lib .data SubKey db "Software\_AZL\Andreyka\",0 szznak db "znak",0 szCaption db "Строка в окне",0 szNoRun db "Вы ещё не запускали меня!",13,10 db "Я внесу измененя в реестр",0 szHasRun db "Глуый ты человек, не надо запускать меня повторно.",0 sz12345 db "12345",0 .data? hKey dd ? hValue dd ? szBuffer db 4 dup (?) .code start: invoke RegOpenKeyEx,HKEY_LOCAL_MACHINE,ADDR SubKey,NULL,KEY_QUERY_VALUE,ADDR hKey ;open our key .if !eax ;if it is there we more then likley wrote it invoke RegQueryInfoKey, hKey,0,0,0,0,0,0,0,0,ADDR hValue,0,0 ;get the size of the entry invoke RegQueryValueEx, hKey, ADDR szznak,0,0,ADDR szBuffer,ADDR hValue ;get the value and keep it in the buffer invoke lstrcmp,ADDR szBuffer,ADDR sz12345 ;compare it our ran string .if !eax ;if they are the same it means the user has not modified it invoke MessageBox,NULL,ADDR szHasRun,ADDR szCaption,MB_OK+MB_ICONINFORMATION ;alert them .endif .else invoke MessageBox,NULL,ADDR szNoRun,ADDR szCaption,MB_OK+MB_ICONINFORMATION ;Alert the fact we have never been ran on this machine invoke RegCreateKey,HKEY_LOCAL_MACHINE, ADDR SubKey,ADDR hKey ;create the key .if !eax ;make sure it does not fail invoke RegSetValueEx,hKey,ADDR szznak,0,REG_SZ,ADDR sz12345,5 ;set the szRan string in the registry .endif .endif invoke RegCloseKey , hKey ;close the registry key invoke ExitProcess,NULL ret end start +++++++++++++++++++++++++++++++++++++++++++++++ Не поможет ли кто-нибудь мне его улучшить, а именно: a). Прога не функционирует, если ветки в реестре есть, а ключ "12345" не совпадает b). Добавить кнопку нет, чтобы при нажатии на неё запись не создавалась с). Запись создаётся даже при выходе через "alt F4". Сделать так, чтобы она создавалась искючительно при нажатии на "Ok". И, наконец, подсказать книгу, в которой действительно содержится подходящая инфа, позволяющая самостоятельно разобраться с этим. Заранее благодарен за любую помощь.
MSDN тебе в руки. В крайнем случае SDK. Русский MSDN ты вряд ли найдешь, а вот русский SDK вполне возможно поискать. А вот анлийский учи, иначе весь твой ассемблер будет простым гаданием на кофейной гуще
Это хороший, но не актуальный совет, ибо полезен не на краткосрочный период, сам знаю - НАДО. Но до того, я хотел бы получить конкретные ответы на любые мои вопросы, так, чтобы уже сегодня я мог бы что-то делать и понимать, забегая вперёд своей компетентности. Это видишь ли нормально. Так бывает всегда, когда кто-то чего-то существенного достигает. Так атомная бомба , например, была сделана до того, как человек научился понимать детально этот процесс. А говолрю я это потому, что хочу убедить тех, кто захочет мне ответить, не советовать мне не спешить.
1. Такого нет даже на английском. Только мелкие комменты. 2. а. Завершаюший ноль. 2. б. REG_SZ - да, это строка с завершающим нулём. Найти остальное можно в MSDN. 3. Добавь парамтер MB_YESNO вместо MB_OK и проверяй что возвращает MessageBoxA
niccolo ну тогда из всего мною сказанного выделю основную фразу, которая тебе уж точно должна помочь: ищи русский SDK! Такое есть в сети! Сам находил когда-то. Там все по-русски описано. Не все конечно, но про реестр тебе хватит. Это вполне краткосрочная перспектива. 30 минут на гугл и скачивание потрать
Потрачу, но, т.к. я пока не знаю с чем его едят, то можно уточнение: Русский SDK для SubSilver - это то, что нужно? Какой размер он должен иметь? И, если это инфа, то почему её надо устанавливать?
niccolo 1) errlook.exe из поставки студии (или FormatMessage с нужным locale id) - описание ошибок на русском.