Додавання елементів в контекстне меню "Створити"

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_MACHINESoftwareMicrosoftWindowsCurrentVersionUninstall

Робота з реєстром в 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;

Об'єкт INIFILES – робота з INI файлами.


Чому іноді краще використовувати INI-файли, а не реєстр?


Тому для зберігання параметрів настройки програми зручно використовувати
стандартні INI файли Windows. Робота з INI файлами ведеться за допомогою об'єкта
TIniFiles модуля IniFiles. Короткий опис методів об'єкта TIniFiles дано нижче.

Constructor Create(“d: est.INI”);

Створити екземпляр об'єкта і пов'язати його з файлом. Якщо такого файлу немає, то
він створюється, але тільки тоді, коли проведете в нього запис інформації.

WriteBool(const Section, Ident: string; Value: Boolean);

Присвоїти елементу з ім'ям Ident розділу Section значення типу boolean

WriteInteger(const Section, Ident: string; Value: Longint);

Присвоїти елементу з ім'ям Ident розділу Section значення типу Longint

WriteString(const Section, Ident, Value: string);

Присвоїти елементу з ім'ям Ident розділу Section значення типу String

ReadSection (const Section: string; Strings: TStrings);

Читати всі імена всіх коректно описаних змінних розділу Section
(Некоректно описані опускаються)

ReadSectionValues(const Section: string; Strings: TStrings);

Читати всі імена і значення всіх коректно описаних змінних розділу
Section. Формат: ім'я_змінної = значення

EraseSection(const Section: string);

Видалити розділ Section з усім вмістом

ReadBool (const Section, Ident: string; Default: Boolean): Boolean;

Прочитати значення змінної типу Boolean розділу Section з ім'ям Ident, і
якщо його немає, то замість нього підставити значення Default.

ReadInteger (const Section, Ident: string; Default: Longint): Longint;

Прочитати значення змінної типу Longint розділу Section з ім'ям Ident, і
якщо його немає, то замість нього підставити значення Default.

ReadString(const Section, Ident, Default: string): string;

Прочитати значення змінної типу String розділу Section з ім'ям Ident, і
якщо його немає, то замість нього підставити значення Default.

Free;

Закрити і звільнити ресурс. Необхідно викликати при завершенні роботи з INI
файлом

Property Values[const Name: string]: string;

Доступ до існуючого параметру на ім'я Name

Приклад:

Procedure TForm1.FormClose(Sender: TObject);
var
IniFile:TIniFile;
begin
IniFile: = TIniFile.Create ("d: est.INI"); {Створили екземпляр об'єкта}
IniFile.WriteBool ("Options", "Sound", True); {Секція Options: Sound: = true}
IniFile.WriteInteger ("Options", "Level", 3); {Секція Options: Level: = 3}
IniFile.WriteString(“Options” , “Secret password”, Pass);
{Секція Options: у Secret password записати значення змінної Pass}
IniFile.ReadSection ("Options", memo1.lines); {Читаємо імена змінних}
IniFile.ReadSectionValues ("Options", memo2.lines); {Читаємо імена і значення}
IniFile.Free; {Закрили файл, знищили об'єкт і звільнили пам'ять}
end;

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


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

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

Ваш отзыв

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

*

*