Запись информации в реестр

Программирование на Visual Basic for Applications
VikHion
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 14.10.2003 (Вт) 11:20
Откуда: Kirovograd

Запись информации в реестр

Сообщение VikHion » 25.06.2004 (Пт) 14:30

Доброго времени суток. Проблема следующая:
Windows XP, Office XP, Word

‘Имеется следующая декларация API функции:

Declare Function RegSetValue Lib "advapi32.dll" Alias _
"RegSetValueExA" (ByVal hKey As Long, _
ByVal lpValueName As String, ByVal Reserved As Long, _
ByVal dwType As Long, lpData As Any, _
ByVal cbData As Long) As Long

‘Константы:
Public Const HKEY_CURRENT_USER = &H80000001
Public Const ERROR_SUCCESS = 0&
Public Const REG_SZ = 1

‘Вызов функции:
If RegCreateKey(HKEY_CURRENT_USER, ReestrFolderPath, NeuerSchlussel) = _
ERROR_SUCCESS Then 'RegCreateKey декларацию не привожу
If RegSetValue(hKey, ReestrParametrOne, REG_SZ, ByVal 0&, ByVal strNameDatabase, Len(strNameDatabase)) _
= ERROR_SUCCESS Then
ReestrQueryAdd = True
Else
ReestrQueryAdd = False
……………………..

Папка создается, параметры нет, RegSetValue возвращает 6, а не 0.
Если кто знает что я делаю не так, буду благодарен за консультацию.

san*
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 17.06.2004 (Чт) 17:57
Откуда: Киев

Сообщение san* » 25.06.2004 (Пт) 17:36

RegSetValue(hKey, ReestrParametrOne, REG_SZ, ByVal 0&, ByVal strNameDatabase, Len(strNameDatabase))

По моему проблема в ByVal strNameDatabase Len(strNameDatabase). Попробуй перед этим написать
strNameDatabase= string$(strNameDatabase,vbNullChar)

san*
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 17.06.2004 (Чт) 17:57
Откуда: Киев

Сообщение san* » 25.06.2004 (Пт) 17:38

san* писал(а):RegSetValue(hKey, ReestrParametrOne, REG_SZ, ByVal 0&, ByVal strNameDatabase, Len(strNameDatabase))

По моему проблема в ByVal strNameDatabase Len(strNameDatabase). Попробуй перед этим написать
strNameDatabase= string$(strNameDatabase,vbNullChar)


Извини, что-то я напутал
strNameDatabase=strNameDatabase & vbNullChar

VikHion
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 14.10.2003 (Вт) 11:20
Откуда: Kirovograd

Сообщение VikHion » 26.06.2004 (Сб) 8:39

Спасибо за ответ, правда не сосвсем понял зачем нужно добавляьть Null в конец строки, он там и так кажется есть. Но попробовал. Ругается что Invalid use Null и т.д Может дело в ByVal Reserved As Long. Назначение этого параметра я просто не знаю, но он явно уже не Reserved. Если кто знает откликнитесь.

san*
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 17.06.2004 (Чт) 17:57
Откуда: Киев

Сообщение san* » 26.06.2004 (Сб) 15:47

Решил сам попробывать. Посмотри программу, у меня на винде 2000 работает в VB. На VBA думаю будет аналогично.
Вложения
Registry.rar
(1.69 Кб) Скачиваний: 45

VikHion
Начинающий
Начинающий
 
Сообщения: 15
Зарегистрирован: 14.10.2003 (Вт) 11:20
Откуда: Kirovograd

Сообщение VikHion » 29.06.2004 (Вт) 9:19

Ты был прав, ошибка с передачей параметров у меня в программе. За мной виртуальное пиво. Все прекрасно работает, а ByVal Reserved As Long совершенно не при чем. Ксати, на форуме "Популярные вопросы"есть очень неплохой материал по этой теме. Автор Areh. Спасибо. Тема закрыта


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 120

    TopList