Навигация
Главная »  Delphi 

Хитрости использования системного реестра в Дельфи (документация)


Источник: articles
Добавление элементов в контекстное меню "Создать"
1. Создать новый документ, поместить его в папку windows/shellnew
2. В редакторе реестра найти расширение этого файла, добавить новый подключ, добавить туда строку: filename в качестве значения которой указать имя созданного файла.

Путь к файлу который открывает не зарегистрированные файлы
1. Найти ключ hkey_classes_root\unknown\shell
2. Добавить новый ключ open
3. Под этим ключом еще ключ с именем command в котором изменить значение (По умолчанию) на имя запускаемого файла, к имени нужно добавить %1. (windows заменит этот символ на имя запускаемого файла)

В проводнике контекстное меню "Открыть в новом окне"
1. Найти ключ hkey_classes_root\directory\shell
2. Создать подключ: opennew в котором изменить значение (По умолчанию) на: "Открыть в новом окне"
3. Под этим ключом создать еще подключ command (По умолчанию) = explorer %1

Использование средней кнопки мыши logitech в качестве двойного щелчка
Подключ hkey_local_machine\software\logitech и там найти параметр doubleclick заменить 000 на 001

Новые звуковые события
Например создает звуки на запуск и закрытие winword
hkey_current_user\appevents\shemes\apps добавить подключ winword и к нему подключи open и close.
Теперь в настройках звуков видны новые события

Путь в реестре для деинсталяции программ:
hkey_local_machine\software\microsoft\windows\ currentversion\uninstall

Работа с реестром в delphi 1

В delphi 2 и выше появился объект tregistry при помощи которого очень просто работать с реестром. Но мы здесь рассмотрим функции api, которые доступны и в delphi 1.
Реестр предназначен для хранения системных переменных и позволяет зарегистрировать файлы программы, что обеспечивает их показ в проводнике с соответствующей иконкой, вызов программы при щелчке на этом файле, добавление ряда команд в меню, вызываемое при нажатии правой кнопки мыши над файлом. Кроме того, в реестр можно внести некую свою информацию (переменные, константы, данные о инсталлированной программы ...). Программу можно добавить в список деинсталляции, что позволит удалить ее из менеджера "Установка/Удаление программ" панели управления.
Для работы с реестром применяется ряд функций api :

regcreatekey (key: hkey; subkey: pchar; var result: hkey): longint;
Создать подраздел в реестре. key указывает на "корневой" раздел реестра, в delphi1 доступен только один - hkey_classes_root, в в delphi3 - все. subkey - имя раздела - строится по принципу пути к файлу в dos (пример subkey1\subkey2\ ...). Если такой раздел уже существует, то он открывается (в любом случае при успешном вызове 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;
Удалить подраздел key\subkey. Возврат - код ошибки или error_success, если нет ошибок.

regenumkey(key: hkey; index: longint; buffer: pchar;cb: longint): longint;
Получить имена всех подразделов раздела key, где key - handle на открытый или созданный раздел (см. regcreatekey и regopenkey), buffer - указатель на буфер, cb - размер буфера, index - индекс, должен быть равен 0 при первом вызове regenumkey. Типичное использование - в цикле while, где index увеличивается до тех пор, пока очередной вызов regenumkey не завершится ошибкой (см. пример).

regqueryvalue(key: hkey; subkey: pchar; value: pchar; var cb: longint): longint;

Возвращает текстовую строку, связанную с ключом key\subkey.value - буфер для строки; cb- размер, на входе - размер буфера, на выходе - длина возвращаемой строки. Возврат - код ошибки.

regsetvalue(key: hkey; subkey: pchar; valtype: longint; value: pchar; cb: longint): longint;
Задать новое значение ключу key\subkey, valtype - тип задаваемой переменной, value - буфер для переменной, cb - размер буфера. В windows 3.1 допустимо только value=reg_sz. Возврат - код ошибки или error_success, если нет ошибок.

Примеры :

{ Создаем список всех подразделов указанного раздела }

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;



 

 Oracle: Работа с датами в Oracle.
 Delphi: Как писать Win32API приложения на Delphi.
 Новые версии XE2 RAD Studio, Delphi и C++Builder компании Embarcadero ломают стереотипы разработки бизнес-приложений.
 C++Builder XE2.
 Новости рынка средств разработки и корпоративного программного обеспечения.


Главная »  Delphi 

© 2017 Team.Furia.Ru.
Частичное копирование материалов разрешено.