Листинг 7.19.
Отмена быстрого запуска приложения
procedure UnregisterQuickStart();
var
reg: TRegistry;
begin
reg := TRegistry.Create();
reg.RootKey := HKEY_LOCAL_MACHINE;
//Удаляем сведения о программе из реестра
reg.DeleteKey(paths + \'\\' + Application.Title + \'.exe\');
reg.Free();
end;
В приведенных выше листингах значение константы paths равно:
const paths = \'SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths\
Регистрация типов файлов
Теперь рассмотрим вопрос, нередко интересующий программистов, приложения которых должны уметь сохранять и загружать данные из файлов. Логично задавать всем таким файлам одно расширение: получается тип файлов приложения.
Открытие файлов (документов) приложения из самого приложения организовать несложно: достаточно применить диалог открытия файла. Но как заставить, например, Проводник автоматически запускать наше приложение при выборе соответствующего файла? Сделать это тоже несложно: достаточно внести небольшие изменения в раздел реестра HKEY_CLASSES_ROOT.
Итак, перечень операций, которые нужно произвести для регистрации собственного типа файла (пусть, MYDOC).
1. Создать раздел HKEY_CLASSES_ROOT\.mydoc, в параметр (По умолчанию) которого записать имя типа файла, например TricksDelphi. DocumentSample.
2. Создать раздел HKEY_CLASSES_ROOT\
3. Если нужно, чтобы для документа использовался определенный значок, необходимо создать раздел HKEY_CLASSES_ROOT\
4. Наконец, для автоматического запуска приложения при выборе файла заданного типа создаем paздeлHKEY_CLASSES_ROOT\<имя_типa>\Shell \Open\Command, в параметр (По умолчанию) которого записываем строку вида <путь_приложения> %1 для передачи имени документа в командной строке.
Пример процедуры, которая производит все вышеперечисленные манипуляции, приводится в листинге 7.20.
Листинг 7.20.
Регистрация типа файла
procedure RegisterAppDocuments();
var
reg: TRegistry;
begin
reg := TRegistry.Create();
reg.RootKey := HKEY_CLASSES_ROOT;
//Вносим информацию о нашем типе файла в реестр
//..само расширение
if reg.OpenKey(\'.mydoc\', True) then
begin
reg.WriteString(\'\', \'TricksDelphi.DocumentSample\');
reg.CloseKey();
end;
//..описание типа файла
if reg.OpenKey(\'TricksDelphi.DocumentSample\', True) then
begin
reg.WriteString(\'\', \'Документ TricksDelphi.DocumentSample\');
reg.CloseKey();
end;
//..значок для файлов MYDOC-типа
if reg.OpenKey(\'TricksDelphi.DocumentSample\DefaultIcon\', True)
then
begin
reg.WriteString(\'\', Application.ExeName + \', 1\');
reg.CloseKey();
end;
//..приложение, открывающее MYDOC-документ
if reg.OpenKey(\'TricksDelphi.DocumentSample\Shell\Open\Command\',
True)
then
begin
reg.WriteString(\'\', Application.ExeName + \' %1\');
reg.CloseKey();
end;
reg.Free();
end;
Результат работы этой процедуры показан на рис. 7.10.
Рис. 7.10. Результат регистрации типа файла