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

Додавання елементів в контекстне меню "Створити"
1. Створити новий документ, помістити його в папку windows / shellnew
2. У редакторі реєстру знайти розширення цього файлу, додати новий з'єднання, додати туди рядок: filename як значення якій вказати ім'я створеного файлу.


Шлях до файлу який відкриває не зареєстровані файли
1. Знайти ключ hkey_classes_rootunknownshell
2. Додати новий ключ open
3. Під цим ключем ще ключ з ім'ям command в якому змінити значення (За умовчанням) на ім'я запускається файлу, до імені треба додати% 1. (Windows замінить цей символ на ім'я запускається файлу)


У провіднику контекстне меню "Відкрити у новому вікні"
1. Знайти ключ hkey_classes_rootdirectoryshell
2. Створити з'єднання: opennew в якому змінити значення (За замовчуванням) на: "Відкрити у новому вікні"
3. Під цим ключем створити ще з'єднання command (За замовчуванням) = explorer% 1


Використання середньої кнопки миші logitech як подвійного клацання
Дод hkey_local_machinesoftwarelogitech і там знайти параметр doubleclick замінити 000 на 001


Нові звукові події
Наприклад створює звуки на запуск і закриття winword
hkey_current_userappeventsshemesapps додати з'єднання winword і до нього підключи open і close.
Тепер в настройках звуків видно нові події


Шлях у реєстрі для деінсталяції програм:
hkey_local_machinesoftwaremicrosoftwindows currentversionuninstall


Робота з реєстром в 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 (приклад subkey1subkey2 …). Якщо такий розділ вже існує, то він відкривається (у будь-якому випадку при успішному виклику result містить handle на розділ). Про успішність виклику судять по поверненню значенням, якщо error_success, то успішно, якщо інше – помилка.


regopenkey (key: hkey; subkey: pchar; var result: hkey): longint;
Відкрити підрозділ keysubkey і повертає handle на нього у змінній result. Якщо розділу з таким ім'ям немає, то він не створюється. Повернення – код помилки або error_success, якщо успішно.


regclosekey(key: hkey): longint;
Закриває розділ, на який посилається key. Повернення – код помилки або error_success, якщо успішно.
regdeletekey(key: hkey; subkey: pchar): longint;
Видалити підрозділ keysubkey. Повернення – код помилки або 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;


Повертає текстовий рядок, пов'язану з ключем keysubkey.value – буфер для рядка; cb-розмір, на вході – розмір буфера, на виході – довжина повертається рядка. Повернення – код помилки.


regsetvalue (key: hkey; subkey: pchar; valtype: longint; value: pchar; cb: longint): longint;
Поставити нове значення ключа keysubkey, 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;


Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*