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

Додавання елементів в контекстне меню “Створити”
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>

*

*