На зло блокноту. Або все для роботи з розширеннями в Windows за допомогою Delphi, Різне, Програмування, статті

Стаття показує на конкретних прикладах, як асоціювати вашу програму з будь-яким розширенням Windows, самому зареєструвати своє розширення в системі і як додати пункт в контекстному меню Windows (Типу “відкрити в …”) для відкриття документів вашої прогою (мабуть текстовим редактором 🙂


Невелике вступ, яке треба прочитати


Привіт всім кодерам! Ця стаття присвячується широкому колу читачів – будь ви новачок у програмуванні на Delphi або просунутий кодер. Я надесь, інформація, представлена ​​тут мною, буде вам цікава. Ну да ладно, це так – відступ, приступимо до головного, чи то пак до кодінг! Але спочатку я розповім вам, навіщо став писати цю допомогу …


Нещодавно я закінчив робити текстовий редактор. А коли закінчив, то подумав, непогано було б вмонтувати в Maks Editor (надалі за цією назвою буде матися на увазі мій текстовий процесор) функції асоціації з різними розширеннями Windows, заодно зробити так, щоб можна було самому реєструвати розширення і прописувати пункти в контекстному меню Windows, що відповідають за запуск документів (типу “Відкрити в …”) моїм текстовим процесором!


Хто розібрався в тому, що я сказав, може пропускати наступні 3 параграфа і читати далі, хто ні – зараз поясню суть вищесказаних слів … Пам’ятаєте, коли ви створюєте текстовий файл (неважливо яким способом), то перед вами розкривається блокнот (розкриватися може і щось інше), і значок вашого файлу замінюється значком блокнота (або програми, що відповідає за обробку файлів з розширенням. txt). Так от, за кожне розширення в Windows відповідає одна програма, яка називається “програмою за замовчуванням”. Цю програму звичайно можна легко змінити для будь-якого розширення: вибираєте пункт “відкрити за допомогою”, знаходите потрібну прогу і ставте галочку – використовувати її для всіх файлів такого типу.


З асоціацією розширень начебто розібралися – їдемо далі. Що значить – самому реєструвати розширення? А це значить, ви повинні сказати Windows: “Ось тобі нове розширення, засос, подруга!” і прописати прогу, яка буде працювати з цим розширенням – буде “прогою за замовчуванням”. Тобто: зареєструєте ви розширення .maks, І тепер при кожному відкриття файлу типу *.maks, Буде відкриватися ваша прога (яку ви, напевно, самі створили) і з’являтися значок, відповідний значку проги.


З цим теж начебто все ясно – прем вперед … Прописка пункту контекстного меню. Ну тут все легко – в головному контексті Windows створюється ваш пункт, при натисканні по якому відкривається ваше додаток з вмістом того файлу, щодо якого перебувало меню. Прогу теж можна зробити будь-хто.


Так от, всі ці речі можуть знадобитися вам, якщо ви, наприклад, створюєте текстовий редактор. Причому, не обов’язково намагатися над кодінгом редактора – можна просто покласти який-небудь RichEdit на форму і все … прописати пункт в контекстному меню Віндоуз типу “Відкрити за MyEditor”. І написати ось це в подія onshow форми:


if (ParamCount > 0) and FileExists(ParamStr(1)) then
RichEdit.LoadFromFile (ParamStr (1)); / / якщо ми відразу відкриваємо файл з Windows, то завантажуємо його в едітор

Тепер ви можете легко і швидко працювати з документами за допомогою вашого едітора без попереднього інсталлірованія його в систему! Віндоуз сама пізнає поле для редагування і буде заносити туди дані після відкриття!


І запам’ятайте, все, що я вам зараз покажу, вимагає знань роботи з реєстром – але це в принципі не головне. Просто я все робив під Windows XP, а реєстр XP і реєстр “Ленолліума” – це різні речі. Тому я не даю ніякої гарантії, що у вас все буде нормально в іншій операційці (я навіть з упевненістю кажу, що окрім XP, у вас асоціація та інша нісенітниця взагалі не піде в іншій системі: ~ (. Так що якщо ви читаєте цю допомогу, затишно розташувавшись в Win 3.1, то можете зав’язувати читання (що я вам, звичайно не рекомендую, так як матеріал корисний для зміцнення знань про будову та роботу реєстру). І не думайте, що я в цій маленькій статейка розповім про те, як зробити текстовий редактор, я просто покажу вам по 1 приміром на кожен з цих пунктів:


  1. Як асоціювати стандартне розширення з прогою

  2. Зареєструвати своє розширення

  3. Додати пункт в контексті

І все це створити програмно за допомогою нашої улюбленої Delphi.


Пояснювати я буду, виходячи з пристрою Delphi 7, але в інших середовищах цей процес зовсім не відрізнятиметься, оскільки модуль Registry діє скрізь.


Починаємо кодинг (або трохи про реєстр)


Отже почнемо. Запускаємо Delphi, Створюємо додаток, у нас з’являється форма. На неї ми кладемо RichEdit і змінюємо його властивість align на alclient. Тим самим ми розтягнули його по всій формі. Також краще стерти напис “RichEdit1” в його властивості Lines. Тепер створіть ще 1 форму: натисніть file->new->form. Але ця форма (буду називати її form2) у нас поки що не як не пов’язана з головною формою (form1). Для того, що їх хоч якось зв’язати, відкрийте вікно редактора коду у form1 і додайте модуль з вашою другою формою: пишете слово unit і ідентифікатор форми (у даній випадку 2).


uses unit2; / / обов’язково!

З’єднали, ну все одно, form2 ніде не буде у нас видно при запуску проги. Для цього її треба викликати. Як ви будете її викликати, вирішувати вам. Можна створити головне меню зверху і звідти, але я не буду пояснювати, як це робити. Я просто взяв і помістив звичайну кнопку на RichEdit1 – Не надто правильно, але на увазі. Тепер обробляємо подію onclick кнопки button1 (Для цього клацаємо по ній 2 рази).


procedure TForm1.Button1Click(Sender: TObject);
begin
/ / Викликаємо форму так, щоб вона залишалася у фокусі, поки ми її не вирубаємо
form2.ShowModal;
end;

Все, тепер на form2 ложим кілька компонент: 2 edit”a, 2 checkbox”a, 3 button”a.


Перший Edit буде служити у нас полем введення для розширення, яке ми хочемо зареєструвати, так що змінимо його властивість name на extension. А перша кнопка буде у нас реєструвати це розширення – назвемо її createext, Друга кнопка буде це розширення дізінтегріровать (яке слово розумне я придумав 🙂 – назвемо її deleteext. Перший CheckBox буде служити у нас розширенням .txt (Я покажу вам приклад тільки з одним розширенням, так як робота з іншими розширеннями ідентична), тобто якщо чекбокс включений – коштує хрестик, то асоціюємо нашу прогу з розширенням *.txt, Якщо вимкнений – хрестика немає, то відміняємо інтеграцію, прописавши блокнот “прогою за умовчанням” (як на початку було :). Так що змінюємо його ім’я на txt. Другий CheckBox працюватиме спільно з edit2: В edit2 ми будемо вводити пункт в контекстному меню, що нам треба зареєструвати, а прапорець буде вказувати нам, створювати цей пункт або видаляти (включений – створюємо, вимкнений – видаляємо :). Змінюємо ім’я другого прапорця на context, А ім’я другого edit”a на contextstr. Зміни імен я зробив тільки для зручності (щоб не заплутатися :). І нарешті остання кнопка під ім’ям Gues буде робити … потім дізнаєтеся що 🙂


Отже почнемо кодувати, але спочатку я дам вам деяку інфу про реєстр:


Як ви, напевно, знаєте, реєстр – це велика база даних вашої системи, в якому дуже легко напартачити, а виправити скоєне деколи просто неможливо (взагалі, я вам відразу раджу відкрити реєстр і тримати його відкритим до кінця кодинга). Так от в реєстрі 6 головних розділів, а ми будемо працювати з розділом HKEY_CLASSES_ROOT – В ньому зберігаються настройки, що відповідають за реєстрацію різних розширень, контекстних меню, назв системних програм (корзини, наприклад) і ще купа всього іншого. Відкривши розділ HKEY_CLASSES_ROOT, Ми першою справу бачимо список з 18 зареєстрованих текстових розширень, які починаються зі знака ! (! Txt, наприклад). Спустившись трохи нижче ми, може знайти еквіваленти цих розширень типу .txt (Перед назвою стоїть крапка). У цих розширеннях ми ссилаемя на розширення типу !txt, Які знаходяться на самому початку і містять основну інформацію про “програму за замовчуванням” і іконці цієї проги. Так от, відкриваємо розділ !txt, З яким ми будемо працювати, і що ж ми бачимо: розділ defaulticon, В якому міститься строковою параметр з адресою іконки проги +, 0 і розділ типу shell->open->command. У розділі command теж строковою параметр із значенням адреси “програми за умовчанням”, після якої стоїть “% 1”. Значить нам потрібно тільки змінити адресу проги і ікони і готова справа. В принципі так, але подивіться в розділ .txt – В ньому зберігається строковою параметр із значенням, ссилающімя на розділ !txt, Тобто параметр !txt.


Значить нам потрібно, щоб цей параметр теж присутній – раптом хто-небудь ненавмисно його видалить …


Дія 1: Асоціація з розширенням. Txt


Коротше приступаємо до реалізації функції, що асоціює нашу прогу і її іконку з розширенням .txt. Для цього ми створимо процедуру під назвою fileass, А також занесемо модуль registry, Що відповідає за роботу з реєстром.


uses registry ;/ / це обов’язково
private / / заносимо її ось сюди
procedure fileass; / / функція заносить всі параметри асоціації з розширенням. txt в реєстр або видаляє їх

Вона буде відповідати за інтеграцію або дізінтеграцію розширення .txt. Ну втім, все зрозуміло з лістингу з докладними коментарями:


procedure tform9.fileass;
var reg: TRegistry; / / мінлива, ініціалізує реєстру
begin
if txt.Checked then / / якщо флафок включений, то
begin
/ / Ініціалізували реєстру
reg := TRegistry.Create;
/ / Встановлюємо головний розділ
reg.RootKey := HKEY_CLASSES_ROOT;
/ / Створюється ключ “. Txt”, якщо його немає
reg.OpenKey(“.txt”,true);
/ / Створюється параметр із значенням “! Txt”, якщо його немає
reg.WriteString(“”, “!txt”);
/ / Закриваємо цей ключ
reg.CloseKey;
/ / Створюється ключ “! TxtDefaultIcon”
reg.OpenKey(“!txtDefaultIcon”,true);
/ / Заноситься значення параметра “ім’я додатку, 0” – піктограма нашої проги
reg.WriteString(“”, paramstr(0) + “, 0”);
/ / Виходимо з ключа
reg.CloseKey;
/ / Створюється ключ “! Txtshellopencommand”
reg.OpenKey(“!txtshellopencommand”, true);
/ / Створюється параметр із значенням “ім’я файлу”% 1 “” – адресу нашої проги
reg.WriteString(“”, ParamStr(0) + ” “%1″”);
/ / Закриваємо ключ
reg.CloseKey;
/ / Звільняємо реєстр, але настройки зберігаємо
reg.Free;
end;

if not txt.Checked then / / якщо прапорець відключений, то
begin
/ / Ініціалізували реєстру
reg := TRegistry.Create;
/ / Встановлюємо головний розділ
reg.RootKey := HKEY_CLASSES_ROOT;
/ / Створюється ключ “. Txt”
reg.OpenKey(“.txt”,true);
/ / Створюється параметр із значенням “! Txt”
reg.WriteString(“”, “!txt”);
/ / Виходимо
reg.CloseKey;
/ / Створюється ключ “! TxtDefaultIcon”
reg.OpenKey(“!txtDefaultIcon”,true);
/ / Заноситься значення параметра “ім’я додатку, 0” – піктограма блокнота
reg.WriteString(“”, “NOTEPAD.exe” + “, 0”);
/ / Виходимо
reg.CloseKey;
/ / Створюється ключ “! Txtshellopencommand”
reg.OpenKey(“!txtshellopencommand”, true);
/ / Створюється параметр із значенням “ім’я файлу% 1” – адреса блокнота
reg.WriteString(“”, “NOTEPAD.exe” + ” “%1″”);
/ / Закриваємо ключ
reg.CloseKey;
/ / Звільняємо реєстр, але настройки зберігаємо
reg.Free;
end;
end;

В принципі все … 1-а (і найголовніша) функція готова. Тільки в адресі іконки я вказав адресу програми (paramstr(0)), Тому що я вже підготував нову ікону, яка позначає мій текстовий едітор. Якщо ви нічого не зробите. Під розширенням .txt буде матися на увазі ваша прога з іконкою Delphi. Так що вкажіть правильний шлях в ключі Defaulticon.


Дія 2: Реєстрація свого розширення


Тепер зробимо самі реєстрацію розширень (за це, як ми пам’ятаємо, у нас відповідають компоненти extension, createext,deleteext). Для цього ми створимо процедуру newext. А за дізінтеграцію у нас буде відповідати процедура delext. Як завжди додаємо їх в розділ PRIVATE і потім описуємо.


Private
Procedure fileass;
Procedure newext; / / інтегрує наше розширення
Procedure delext; / / дізінтегрірует наше розширення

procedure tform2.newext;
var reg: tregistry; / / наша змінна для роботи з реєстром
begin
/ / Ініціалізували її
reg:=tregistry.Create;
/ / Встановлюємо початковий розділ
reg.RootKey:=Hkey_Classes_Root;
/ / Створюємо ключ типу “. Наше розширення”
reg.OpenKey(“.”+extension.Text,true);
/ / Записуємо в ньому посилання на ключ типу “!. Наше розширення”
reg.WriteString(“”,”!”+extension.Text);
/ / Закриваємо ключ
reg.CloseKey;
/ / Створюємо ключ типу “!. Наше расшіреніеdefaulticon”
reg.OpenKey(“!”+extension.Text+”defaulticon”,true);
/ / Записуємо туди іконку нашої проги
reg.WriteString(“”,paramstr(0)+”, 0″);
/ / Виходимо
reg.CloseKey;
/ / Створюємо ключ типу “!. Наше расшіреніеshellopencommand”
reg.OpenKey(“!”+extension.Text+”shellopencommand”,true);
/ / Записуємо в нього адресу проги
reg.WriteString(“”,paramstr(0)+” “1””);
/ / Закриваємо ключ
reg.CloseKey;
/ / Прибираємо, але настройки зберігаємо
reg.Free;
end;

Друга процидурку:


procedure tform2.delext;
var reg: tregistry; / / ініціалізували змінну для роботи з реєстром
begin
/ / Створюємо клас для роботи з реєстром
reg:=tregistry.Create;
/ / Встановлюємо початковий розділ
reg.RootKey:=HKEY_CLASSES_ROOT;
/ / Видаляємо ключ типу “. Наше розширення”
reg.DeleteKey(“.”+extension.Text);
/ / Видаляємо ключ типу “! Наше розширення”
reg.DeleteKey(“!”+extension.Text);
/ / Закриваємося
reg.CloseKey;
/ / Вирубуємо все, але настройки зберігаємо
reg.Free;
end;

Дія 3: Додавання пункту в контекстне меню Windows


От і друга частина нашого доброго діла готова. Залишилася остання, що відповідає за додавання, видалення пункту контекстного меню. За це у нас (а ну ка згадали 🙂 відповідають компоненти context і contextstr. Ну я як завжди створив нову процедуру checkcontext і написав в ній …


Private
procedure fileass;
procedure newext;
procedure delext;
procedure checkcontext; / / перевіряє, натиснутий чи прапорець, в разі успіху створює пункт контексту, в разі неуспіху видаляє його

procedure tform2.checkcontext;
var reg: tregistry; / / ініціалізували змінну для роботи з реєстром
begin
/ / Якщо прапорець включений, то
if context.Checked then
begin
/ / Створюємо клас для роботи з реєстром
reg:=tregistry.Create;
/ / Встановлюємо початковий розділ
reg.RootKey:=HKEY_CLASSES_ROOT;
/ / Створюємо ключ типу “* Shellлюбое ваше слово”
reg.OpenKey(“*ShellOpenWithMaksEditor”,true);
/ / Записуємо в нього строковою параметр типу “будь-яке ваше слово”
reg.WriteString(“”,”OpenWithMaksEditor”);
/ / Записуємо в нього строковою параметр типу “пункт контексту”
reg.WriteString(“”,contextstr.Text);
/ / Закриваємо ключ
reg.CloseKey;
/ / Створюємо ключ типу “* ShellOpenWithMaksEditorcommand”
reg.OpenKey(“*ShellOpenWithMaksEditorcommand”,true);
/ / Записуємо в нього строковою параметр типу “command”
reg.WriteString(“”,”command”);
/ / Записуємо в нього також строковою параметр типу “адреса проги +”% 1 “”
reg.WriteString(“”,paramstr(0)+” “1%””);
/ / Закриваємо ключ
reg.CloseKey;
/ / Вирубуємо весь контекстний плагин нахрен, а настройки залишаємо
reg.Free;
end else
if not context.Checked then / / інакше, якщо прапорець відключений
begin
/ / Ініціалізували змінну для роботи з реєстром
reg:=tregistry.Create;
/ / Встановлюємо начальнай розділ
reg.RootKey:=HKEY_CLASSES_ROOT;
/ / Видалення ключа типу “* Shellлюбое слово”
reg.DeleteKey(“*ShellOpenWithMaksEditor”);
/ / Закриваємо реєстр
reg.CloseKey;
/ / Йдемо
reg.Free;
end;
end;


Ось і остання процидурку готова, як видно, тут перевіряється, чи включений прапорець: якщо включений, то пункт, введений в context, Створюється, якщо вимкнений, то пункт, який був попередньо створений – видаляється. Але ми ще забули найголовніше: адже у нас є тільки процедури: адже їх ще треба підставити куди-небудь, щоб вони працювали. Коротше, підставляємо процедуру, що відповідає за створення нового розширення (newext) В компонент createext (Кнопка), функцію, відповідальну за видалення розширення (delext) В компонент deleteext (Кнопка). А процедуру, асоціюють вашу прогу з .txt (fileass) І процедуру створення, видалення пункту контексту (checkcontext) В компонент Gues (Кнопка) – ось вона і стала в нагоді, вона буде закривати форму, попередньо зробивши деякі зміни, продекларовані вище! Ну конено всі функції треба прописати в події onclick кнопок:


/ / Реакція кнопки на клік мишею – створення розширення
procedure TForm2.createextClick(Sender: TObject);
begin
newext;
end;

/ / Реакція кнопки на клік мишею – видалення розширення
procedure TForm2.deleteextClick(Sender: TObject);
begin
delext;
end;

/ / Реакція кнопки на клік мишею – асоціація з розширенням. Txt і створення / видалення пункту в контексті
procedure TForm2.GuesClick(Sender: TObject);
begin
fileass;
checkcontext;
close;
end;

Ну ось в принципі і все … звичайно можна було просто записати коди 4 вищесказаних процедур в події onclick кнопок, але це не є найзручніший спосіб …


І на закінчення приведу весь код проги:


interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,registry;

type
TForm2 = class(TForm)
extension: TEdit;
Gues: TButton;
txt: TCheckBox;
context: TCheckBox;
contextstr: TEdit;
createext: TButton;
deleteext: TButton;
procedure GuesClick(Sender: TObject);
procedure createextClick(Sender: TObject);
procedure deleteextClick(Sender: TObject);
private
procedure fileass;
procedure newext;
procedure delext;
procedure checkcontext;
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure tform2.fileass;
var reg:tregistry;
begin
reg:=tregistry.create;
if txt.Checked then
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_CLASSES_ROOT;
/ / Створюється ключ “. My”
reg.OpenKey(“.txt”,true);
/ / Створюється параметр із значенням “myfile”
reg.WriteString(“”, “!txt”);
reg.CloseKey;
/ / Створюється ключ “myfileDefaultIcon”
reg.OpenKey(“!txtDefaultIcon”,true);
/ / Заноситься значення параметра “ім’я додатку, 0” – піктограма
reg.WriteString(“”, application.ExeName + “, 0”);
reg.CloseKey;
/ / Створюється ключ “myfileshellopencommand”
reg.OpenKey(“!txtshellopencommand”, true);
/ / Створюється параметр із значенням “ім’я файлу% 1”
reg.WriteString(“”, ParamStr(0) + ” “%1″”);
reg.CloseKey;
reg.Free;
end;

if not txt.Checked then
begin
reg := TRegistry.Create;
reg.RootKey := HKEY_CLASSES_ROOT;
/ / Створюється ключ “. My”
reg.OpenKey(“.txt”,true);
/ / Створюється параметр із значенням “myfile”
reg.WriteString(“”, “!txt”);
reg.CloseKey;
/ / Створюється ключ “myfileDefaultIcon”
reg.OpenKey(“!txtDefaultIcon”,true);
/ / Заноситься значення параметра “ім’я додатку, 0” – піктограма
reg.WriteString(“”, “NOTEPAD.exe” + “, 0”);
reg.CloseKey;
/ / Створюється ключ “myfileshellopencommand”
reg.OpenKey(“!txtshellopencommand”, true);
/ / Створюється параметр із значенням “ім’я файлу% 1”
reg.WriteString(“”, “NOTEPAD.exe” + ” “%1″”);
reg.CloseKey;
reg.Free;
end;
end;

procedure tform2.newext;
var reg: tregistry; / / наша змінна для роботи з реєстром
begin
/ / Ініціалізували її
reg:=tregistry.Create;
/ / Встановлюємо початковий розділ
reg.RootKey:=Hkey_Classes_Root;
/ / Створюємо ключ типу “. Наше розширення”
reg.OpenKey(“.”+extension.Text,true);
/ / Записуємо в ньому посилання на ключ типу “!. Наше розширення”
reg.WriteString(“”,”!”+extension.Text);
/ / Закриваємо ключ
reg.CloseKey;
/ / Створюємо ключ типу “!. Наше расшіреніеdefaulticon”
reg.OpenKey(“!”+extension.Text+”defaulticon”,true);
/ / Записуємо туди іконку нашої проги
reg.WriteString(“”,paramstr(0)+”, 0″);
/ / Виходимо
reg.CloseKey;
/ / Створюємо ключ типу “!. Наше расшіреніеshellopencommand”
reg.OpenKey(“!”+extension.Text+”shellopencommand”,true);
/ / Записуємо в нього адресу проги
reg.WriteString(“”,paramstr(0)+” “1””);
/ / Закриваємо ключ
reg.CloseKey;
/ / Прибираємо, але настройки зберігаємо
reg.Free;
end;

procedure tform2.delext;
var reg: tregistry; / / ініціалізували змінну для роботи з реєстром
begin
/ / Створюємо клас для роботи з реєстром
reg:=tregistry.Create;
/ / Встановлюємо початковий розділ
reg.RootKey:=HKEY_CLASSES_ROOT
/ / Видаляємо ключ типу “. Наше розширення”
reg.DeleteKey(“.”+extension.Text);
/ / Видаляємо ключ типу “! Наше розширення”
reg.DeleteKey(“!”+extension.Text);
/ / Закриваємося
reg.CloseKey;
/ / Вирубуємо все, але настройки зберігаємо
reg.Free;
end;

procedure tform2.checkcontext;
var reg: tregistry; / / ініціалізували змінну для роботи з реєстром
begin
/ / Якщо прапорець включений, то
if context.Checked then
begin
/ / Створюємо клас для роботи з реєстром
reg:=tregistry.Create;
/ / Встановлюємо початковий розділ
reg.RootKey:=HKEY_CLASSES_ROOT;
/ / Створюємо ключ типу “* Shellлюбое ваше слово”
reg.OpenKey(“*ShellOpenWithMaksEditor”,true);
/ / Записуємо в нього строковою параметр типу “будь-яке ваше слово”
reg.WriteString(“”,”OpenWithMaksEditor”);
/ / Записуємо в нього строковою параметр типу “пункт контексту”
reg.WriteString(“”,contextstr.Text);
/ / Закриваємо ключ
reg.CloseKey;
/ / Створюємо ключ типу “* ShellOpenWithMaksEditorcommand”
reg.OpenKey(“*ShellOpenWithMaksEditorcommand”,true);
/ / Записуємо в нього строковою параметр типу “command”
reg.WriteString(“”,”command”);
/ / Записуємо в нього також строковою параметр типу “адреса проги”% 1 “”
reg.WriteString(“”,paramstr(0)+” “1%””);
/ / Закриваємо ключ
reg.CloseKey;
/ / Вирубуємо весь контекстний плагин нахрен, а настройки залишаємо
reg.Free;
end else
if not context.Checked then / / інакше, якщо прапорець відключений
begin
/ / Ініціалізували змінну для роботи з реєстром
reg:=tregistry.Create;
/ / Встановлюємо начальнай розділ
reg.RootKey:=HKEY_CLASSES_ROOT;
/ / Видалення ключа типу “* Shellлюбое слово”
reg.DeleteKey(“*ShellOpenWithMaksEditor”);
/ / Закриваємо реєстр
reg.CloseKey;
/ / Йдемо
reg.Free;
end;
end;

procedure TForm2.GuesClick(Sender: TObject);
begin
fileass;
checkcontext;
end;

procedure TForm2.createextClick(Sender: TObject);
begin
newext;
end;

procedure TForm2.deleteextClick(Sender: TObject);
begin
delext;
end;

end.

Невелике висновок, який треба прочитати


Я розповів вам кілька корисних функцій, але не враховував ті глюки, які ви відразу помітите – наприклад, я не прописував подія oncreate і onclose форми (ну треба ж зберігати настройки, що відповідають за активність прапорців в Ініфайлах, щоб не було ніяких зміна :). Це все я залишаю вам … на вечерю …


 


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


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

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

Ваш отзыв

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

*

*