Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 27 • Страница 1 из 21  2  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Забанен
Статус: Не в сети
Регистрация: 27.08.2004
Откуда: BY, Pltsk-Minsk
Hi! C Visual Basic`ом 6.0 я знаком не так давно, поэтому появилось пару вопосов:
1) Возможно ли изменять параметры реестра из VB, т.е. нажал кнопку -> параметр изменился :) .
2) Как научить программу, например, определять владельца компьютера или какое оборудование у него установлено.



Партнер
 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
ANTIHacker
1). Можно. С помощью функций API
2). Тоже самое. Читай MSDN.

_________________
Цель жизни - d20 по жизни...


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
Ну это больше вопрос не по VB, а по API Windows. :) Все можно, если знаеш как


 

Забанен
Статус: Не в сети
Регистрация: 27.08.2004
Откуда: BY, Pltsk-Minsk
Avaddon
Цитата:
1). Можно. С помощью функций API

Если можно, то поподробней, пожалуйста.
Цитата:
Читай MSDN.

А MSDN и нет :( .

Добавлено спустя 30 секунд:
Ray Adams
Цитата:
Все можно, если знаеш как

Знать бы как :) .

_________________
Подставлю ладони - их болью своей наполни,
Наполни печалью, страхом гулкой темноты...


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
ANTIHacker
Можно и подробнее :) http://msdn.microsoft.com/library/defau ... ctions.asp
А про MSDN-online ( http://msdn.microsoft.com ) слышать не доводилось?

_________________
Цель жизни - d20 по жизни...


 

Забанен
Статус: Не в сети
Регистрация: 27.08.2004
Откуда: BY, Pltsk-Minsk
Avaddon
Цитата:

Благодарствую :) .
Цитата:
А про MSDN-online ( http://msdn.microsoft.com ) слышать не доводилось?

По правде, нет.

_________________
Подставлю ладони - их болью своей наполни,
Наполни печалью, страхом гулкой темноты...


 

Забанен
Статус: Не в сети
Регистрация: 27.08.2004
Откуда: BY, Pltsk-Minsk
При использовании функции LONG вылетает ошибка "Ошибка компелляции. Ожидается номер строки или метка или оператор или конец оператора".
Вот код:
LONG RegCloseKey( _
HKEY hKey _
);
И еще вопрос, вместо hKey просто записывать путь в реестре?

_________________
Подставлю ладони - их болью своей наполни,
Наполни печалью, страхом гулкой темноты...


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
ANTIHacker
Вместо KEY использовать то, что вернула RegOpenKey.
А типа LONG в Барсике нет, зато есть тип Longint

_________________
Цель жизни - d20 по жизни...


 

Забанен
Статус: Не в сети
Регистрация: 27.08.2004
Откуда: BY, Pltsk-Minsk
Avaddon
Цитата:
Вместо KEY использовать то, что вернула RegOpenKey.

Извините меня за мою тупость, но я только учусь. RegOpenKey и RegCloseKey нужно использовать совместно?

_________________
Подставлю ладони - их болью своей наполни,
Наполни печалью, страхом гулкой темноты...


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
ANTIHacker
Совершенно верно. Работа с реестром - транзакционна.
-Открыл (RegOpenKey)
- почитал, пописал
- закрыл (RegCloseKey)

_________________
Цель жизни - d20 по жизни...


 

Забанен
Статус: Не в сети
Регистрация: 27.08.2004
Откуда: BY, Pltsk-Minsk
Avaddon
Цитата:
Работа с реестром - транзакционна.

Спасибо. Теперь всё стало понятно ;) .
Наверное, я тебя уже утомил, но всё таки задам последний (надеюсь) вопрос:
Вот я пишу:
Longint RegOpenKey(HKEY_USERS, LPCTSTR lpSubKey, PHKEY phkResult);
HKEY_USERS - нужно указывать полный путь к ключу, так?
LPCTSTR lpSubKey - здесь указывается сам ключ?
PHKEY phkResult - ?

_________________
Подставлю ладони - их болью своей наполни,
Наполни печалью, страхом гулкой темноты...


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
Так. Ты в Барсике, поэтому используй утилиту WinAPI-что-то там (не помню). Она тебе сгенерит прототип функции типа
Function RegOpenKey(Key as Longint, subKey as String, out phkResult as Longint ) as Longint exterlnal 'user32.dll' (не помню я как это точно будет, 100 лет барсик не гонял).

Вызываешь ее так
Dim key as Longint
If RegOpenKey(HKEY_LOCAL_MACHINE, "\Software\ZZ",key) = 0 Then
' Твой код тут
RegCloseKey(key);
Else
MsgBox "Ходи лесом, реестр запилили!"
End if

_________________
Цель жизни - d20 по жизни...


 

Забанен
Статус: Не в сети
Регистрация: 27.08.2004
Откуда: BY, Pltsk-Minsk
Avaddon
Ага. Получилось. Еще раз огромное спасибо.

Добавлено спустя 40 минут, 47 секунд:
Avaddon
Цитата:
утилиту WinAPI-что-то

Хм... я так ее и не нашёл. А если вводить
Цитата:
Function RegOpenKey(Key as Longint, subKey as String, out phkResult as Longint ) as Longint exterlnal 'user32.dll'

Вылетает ошибка phkResult Ожидается разделитель списка или).

_________________
Подставлю ладони - их болью своей наполни,
Наполни печалью, страхом гулкой темноты...


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
ANTIHacker
А утилита называется APILoad.exe Входит в состав MSVC.
Вот тебе экспорт всех Reg функций:
Код:
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long

Public Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long

Public Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias "RegQueryInfoKeyA" (ByVal hKey As Long, ByVal lpClass As String, lpcbClass As Long, ByVal lpReserved As Long, lpcSubKeys As Long, lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor As Long, lpftLastWriteTime As FILETIME) As Long

Public Declare Function RegQueryValue Lib "advapi32.dll" Alias "RegQueryValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpValue As String, lpcbValue As Long) As Long

Public Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long         ' Note that if you declare the lpData parameter as String, you must pass it By Value.

Public Declare Function RegReplaceKey Lib "advapi32.dll" Alias "RegReplaceKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal lpNewFile As String, ByVal lpOldFile As String) As Long

Public Declare Function RegRestoreKey Lib "advapi32.dll" Alias "RegRestoreKeyA" (ByVal hKey As Long, ByVal lpFile As String, ByVal dwFlags As Long) As Long

Public Declare Function RegSaveKey Lib "advapi32.dll" Alias "RegSaveKeyA" (ByVal hKey As Long, ByVal lpFile As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long

Public Declare Function RegSetKeySecurity Lib "advapi32.dll" Alias "RegSetKeySecurity" (ByVal hKey As Long, ByVal SecurityInformation As Long, pSecurityDescriptor As SECURITY_DESCRIPTOR) As Long

Public Declare Function RegSetValue Lib "advapi32.dll" Alias "RegSetValueA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal dwType As Long, ByVal lpData As String, ByVal cbData As Long) As Long

Public Declare Function RegSetValueEx 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         ' Note that if you declare the lpData parameter as String, you must pass it By Value.

Public Declare Function RegUnLoadKey Lib "advapi32.dll" Alias "RegUnLoadKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long

_________________
Цель жизни - d20 по жизни...


 

Забанен
Статус: Не в сети
Регистрация: 27.08.2004
Откуда: BY, Pltsk-Minsk
Avaddon
Вот полный код:
Private Sub Form_Load()
Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Dim key As Longint
If RegOpenKey(HKEY_LOCAL_MACHINE, "\Software\ZZ", key) = 0 Then
' Твой код тут '
RegCloseKey(key);
Else
MsgBox "Ходи лесом, реестр запилили!"
End If
End Sub
Но опять же вылетает ошибка: Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Только комментарии огут появляться осле Конец процедуры, Конец функции, Конец сво-ва.

_________________
Подставлю ладони - их болью своей наполни,
Наполни печалью, страхом гулкой темноты...


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
ANTIHacker
Мдя... тяжкий случай....
Почитай синтаксис Барсика.
все public декларации должны быть вне тела какой-либо функции

_________________
Цель жизни - d20 по жизни...


 

Забанен
Статус: Не в сети
Регистрация: 27.08.2004
Откуда: BY, Pltsk-Minsk
Avaddon
Цитата:
все public декларации должны быть вне тела какой-либо функции

"Константы, ..., массивы, определенные пользователем типы не допускаются в качестве общих элементов модулей объектов" :spy: .

_________________
Подставлю ладони - их болью своей наполни,
Наполни печалью, страхом гулкой темноты...


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
???????? Чего??????????
Если ты говоришь о классах, то да, а о модулях - легко.

_________________
Цель жизни - d20 по жизни...


 

Забанен
Статус: Не в сети
Регистрация: 27.08.2004
Откуда: BY, Pltsk-Minsk
Avaddon
Стоп-стоп-стоп. Я окончательно запутался.
Я ввожу Public Declare Function RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long вне тела Form Load и выскакивает
Цитата:
Константы, ..., массивы, определенные пользователем типы не допускаются в качестве общих элементов модулей объектов
. Ввожу в теле Form Load - Только комментарии огут появляться осле Конец процедуры, Конец функции, Конец сво-ва :insane: :mad2:

_________________
Подставлю ладони - их болью своей наполни,
Наполни печалью, страхом гулкой темноты...


 

Member
Статус: Не в сети
Регистрация: 15.04.2004
Откуда: Москва
О!!! Создай модуль и помести туда определение. И все внешние определения кидай туда.

_________________
Цель жизни - d20 по жизни...


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 27 • Страница 1 из 21  2  >
-

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan