Статьи по Делфи
Меню сайта


Категории каталога
Мои статьи [2]
Функции и процедуры Win Api [20]
Работа с мышью [10]
Реестр и Делфи [11]
Работа с файлами [38]
Делфи и Хакер [10]
Инсталлятор собственными руками [6]
Хитрости в делфи [3]
Работа с системой [19]


Форма входа


Поиск по каталогу


Друзья сайта


Наш опрос
Понравились ли вам треки
Всего ответов: 156


Приветствую Вас, Гость · RSS 2020-09-19, 9:11 PM
Начало » Статьи » Функции и процедуры Win Api

Доступ к реестру средствами API
Создать подраздел в реестре:

RegCreateKey (Key:HKey; SubKey: PChar; var Result: HKey): Longint;

* Key - указывает на "корневой" раздел реестра, в Delphi1 доступен только один - HKEY_CLASSES_ROOT, а в Delphi3 - все.
* SubKey - имя раздела - строится по принципу пути к файлу в DOS (пример subkey1subkey2 ...). Если такой раздел уже существует, то он открывается.
* В любом случае при успешном вызове Result содержит Handle на раздел.
* Об успешности вызова судят по возвращаемому значению, если ERROR_SUCCESS, то успешно, если иное - ошибка.

Открыть подраздел:

RegOpenKey(Key: HKey; SubKey: PChar; var Result: HKey): Longint;

* Раздел Key
* Подраздел SubKey
* Возвращает Handle на подраздел в переменной Result. Если раздела с таким именем нет, то он не создается.
* Возврат - код ошибки или ERROR_SUCCESS, если успешно.

Закрывает раздел:

RegCloseKey(Key: HKey): Longint;

* Закрывает раздел, на который ссылается Key.
* Возврат - код ошибки или ERROR_SUCCESS, если успешно.

Удалить подраздел:

RegDeleteKey(Key: HKey; SubKey: PChar): Longint;

* Удалить подраздел KeySubKey.
* Возврат - код ошибки или ERROR_SUCCESS, если нет ошибок.

Получить имена всех подразделов раздела Key:

RegEnumKey(Key:HKey; index: Longint; Buffer: PChar; cb: Longint): Longint;

* Key - Handle на открытый или созданный раздел
* Buffer - указатель на буфер
* cb - размер буфера
* index - индекс, должен быть равен 0 при первом вызове RegEnumKey. Типичное использование - в цикле While, где index увеличивается до тех пор, пока очередной вызов RegEnumKey не завершится ошибкой

Возвращает текстовую строку, связанную с ключом KeySubKey:

RegQueryValue(Key: HKey; SubKey: PChar; Value: PChar; var cb: Longint): Longint;

* Ключподключ KeySubKey.
* Value - буфер для строки
* cb - размер, на входе - размер буфера, на выходе - длина возвращаемой строки.
* Возврат - код ошибки.

Задать новое значение ключу KeySubKey:

RegSetValue(Key: HKey; SubKey: PChar; ValType: Longint; Value: PChar; cb: Longint): Longint;

* Ключподключ KeySubKey.
* ValType - тип задаваемой переменной,
* Value - буфер для переменной
* cb - размер буфера. В Windows 3.1 допустимо только Value=REG_SZ.
* Возврат - код ошибки или ERROR_SUCCESS, если нет ошибок.

Удаляет значение lpValueName находящееся в ключе hKey:

RegDeleteValue(HKEY hKey, LPCTSTR lpValueName);

* hKey - ключ. hKey должен был быть открыт с доступом KEY_SET_VALUE процедурой RegOpenKey.
* lpValueName - значение, находящееся в ключе hKey.
* Возвращает ERROR_SUCCESS если успешно.

Выдает список значений у ключа hKey:

LONG RegEnumValue( HKEY hKey, DWORD dwIndex, LPTSTR lpValueName, LPDWORD lpcbValueName,
LPDWORD lpReserved, LPDWORD lpType, LPBYTE lpData, LPDWORD lpcbData);

* hKey - ключ.
* dwIndex - этот параметр должен быть 0 при первом вызове, а далее по анологии с RegEnumKey (т.е. можно использовать в цикле),
* lpValueName - буфер для названия значения
* lpcbValueName - размер lpValueName
* lpReserved должно быть всегда 0
* lpType - буфер для названия типа (int)
* lpData - буфер для данных
* lpcbData-размер для lpData

Примечание:
При каждой новом вызове функции после предыдущего нужно заново переназначить lpcbValueName.

lpcbValueName = sizeof(lpValueName)

Примеры:

{ Создаем список всех подразделов указанного раздела }
procedure TForm1.Button1Click(Sender: TObject);
var
MyKey: HKey; { Handle для работы с разделом }
Buffer: array[0 .. 1000] of char; { Буфер }
Err, { Код ошибки }
index: longint; { Индекс подраздела }
begin
Err := RegOpenKey(HKEY_CLASSES_ROOT, ′DelphiUnit′, MyKey); { Открыли раздел }
if Err <> ERROR_SUCCESS then
begin
MessageDlg(′Нет такого раздела !!′, mtError, [mbOk], 0);
exit;
end;
index := 0;
{Определили имя первого подраздела }
Err := RegEnumKey(MyKey, index, Buffer, Sizeof(Buffer));
while err = ERROR_SUCCESS do { Цикл, пока есть подразделы }
begin
memo1.lines.add(StrPas(Buffer)); { Добавим имя подраздела в список }
inc(index); { Увеличим номер подраздела }
Err := RegEnumKey(MyKey, index, Buffer, Sizeof(Buffer)); { Запрос }
end;
RegCloseKey(MyKey); { Закрыли подраздел }
end;

Категория: Функции и процедуры Win Api | Добавил: Admin (2006-12-16) | Автор: M@ster
Просмотров: 15991 | Комментарии: 59 | Рейтинг: 5.0 |

Всего комментариев: 3
0
3 alexisfl18   [Материал]
After my recent contract
http://mew.photos.telrock.org/?entry.asia
jackie chain porn longer flash free porn sacramento porn escort mature milf porn xxx soiled panties porn

0
2 tamekasy69   [Материал]
Started unusual spider's web throw
http://engines.telrock.org/?entry-jaiden
porn star huge tits porn face women that love girth free porn free porn vidios and clips free xxx voyear porn

0
1 3BEPEK   [Материал]
старо как мир эта статья есть или была у каждого чела, который когда-либо писал на делфи. написана еще под Delphi 2.

Имя *:
Email *:
Код *: