· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Проблемы с Registry WinAPI

Посл.отвђт Сообщенiе


Дата: Сен 29, 2004 12:51:11 · Поправил: Безпощадный даос

Начал разбирать код, написанный в VB под Assembler и выходит ошибка, непонятно в чем, вот код:
RegSetVal proc sSubKey :DWORD, sKey :DWORD, sVal :DWORD

invoke RegCreateKeyEx,HKEY_CURRENT_USER, sSubKey, 0, NULL, 0,KEY_WRITE, 0, RegSetVal, 0
invoke RegSetValueEx, eax, sKey, 0, REG_SZ, sVal, NULL ; NULL ??? Invalid Parametre
invoke RegCloseKey, eax
ret

RegSetVal endp

объявил Proto как:
RegSetVal PROTO :DWORD,:DWORD,:DWORD
правильно ли я делаю, просьба не издеваться(если вопрос простой), ассемблером занимаюсь не более чем полторы недели :)
да и вот вбшный код...
Public Function RegSetValue(ByVal hKey As RootKey, _
ByVal sSubKey As String, _
ByVal sKey As String, _
ByVal sValue As String) As Long

Call RegCreateKeyEx(hKey, sSubKey, 0&, vbNullString, 0&, KEY_WRITE, 0&, RegSetValue, 0&)
Call RegSetValueEx(RegSetValue, sKey, 0&, REG_SZ, ByVal sValue, Len(sValue))
Call RegCloseKey(RegSetValue)
End Function


Дата: Сен 29, 2004 13:37:48

в invoke нужно передавать адрес строки, т.е.
ADDR sSubKey а не просто sSubKey, то же и с sKey


Дата: Сен 29, 2004 13:40:16

RegSetVal proc sSubKey :DWORD, sKey :DWORD, sVal :DWORD

invoke RegCreateKeyEx,HKEY_CURRENT_USER, sSubKey, 0, NULL, 0,KEY_WRITE, 0, RegSetVal, 0
invoke RegSetValueEx, eax, sKey, 0, REG_SZ,ADDR sVal, NULL ; NULL ??? Invalid Parametre
invoke RegCloseKey, eax
ret

Не забывает ADDR для "Поинтер"...

ADDR заменяет ByVal (VB)

С уважением,

Gerard ( Жерар )
-----------------
Gerard


Дата: Сен 29, 2004 13:44:11

Извините,

invoke RegCreateKey,HKEY_LOCAL_MACHINE,ADDR cKey1,ADDR Results
invoke lstrlen,ADDR Folder
invoke RegSetValueEx,Results,ADDR cID1,0,REG_SZ,ADDR Folder,eax
invoke RegCloseKey,Results

Вот хорошо решение...

С уважением,

Gerard ( Жерар )
-----------------
Gerard


Дата: Сен 29, 2004 14:04:13

Вот пример: нажмешь на ОК - и в реестре в HKCU появится NewTestKey, а в нем - NewTestSubKey с TestValue. если че не понятно будет - спрашивай еще

1653414620__reg.zip


Дата: Сен 29, 2004 14:40:06

сколько не пытался, перебрал всякие варианты, но так не могу ничего придумать,
да и еще я заметил, что надо возвратить длину строки которую будем писать, как сделать это на masm?
может ктонибудь дать полный код записи в реестр, а потом в спокойных обстоятельствах я его разберу, или может кто то может дословно перевести вбшный код,
заранее всем огромнооооооооее, спасибо...


Дата: Сен 29, 2004 14:42:39

ой сорри чуть запоздало отправил, спасибо будем смотреть, и что будет непонятно будем спрашивать :)


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.037