Валерий Борисок - Delphi. Трюки и эффекты
- Название:Delphi. Трюки и эффекты
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Валерий Борисок - Delphi. Трюки и эффекты краткое содержание
«Delphi. Трюки и эффекты», как и все издания данной серии, адресована тем, кто хочет научиться делать с помощью уже знакомых программных пакетов новые, интересные вещи. В первой части книги многое говорится о среде разработки Delphi (самых последних версий) и программировании на языке Object Pascal. Благодаря этому издание подходит и новичкам, и начинающим программистам. Вторая (основная) часть книги описывает удивительные возможности, скрытые в языке, и на примерах учит читателя программистским фокусам – от «мышек-невидимок» и «непослушных окон» до воспроизведения МРЗ и управления офисными программами Word и Excel из приложений Delphi. Купив эту книгу, вы пройдете непростой путь к вершинам программистского мастерства весело и интересно.
Delphi. Трюки и эффекты - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
//в соответствующих разделах)
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\Run\',
False)
then
begin
if reg.ValueExists(Application.Title) then
begin
//Программа есть в разделе Run —
//запускается при каждой загрузке Windows
optAutoRun.Checked := True;
reg.CloseKey();
Exit;
end;
reg.CloseKey();
end;
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\
RunOnce\', False)
then
begin
if reg.ValueExists(Application.Title) then
begin
//Программа есть в разделе RunOnce —
//запускается один раз при старте Windows
optRunOnce.Checked := True;
reg.CloseKey();
Exit;
end;
reg.CloseKey();
end;
//Автозапуск программы (рассматриваемым способом) не включен
optRunNone.Checked := True;
reg.Free();
end;
Параметры запуска изменяются (в рассматриваемом приложении) при нажатии кнопки Применить (листинг 7.17).
Листинг 7.17. Применение режима запуска
procedure TForm1.cmbApplyClick(Sender: TObject);
var
reg: TRegistry;
begin
reg := TRegistry.Create();
reg.RootKey := HKEY_LOCAL_MACHINE;
//Отмена прошлого режима
//..удаление параметра из раздела Run
if not optAutoRun.Checked then
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\
Run\', False)
then
begin
reg.DeleteValue( Application.Title );
reg.CloseKey();
end;
//..удаление параметра из раздела RunOnce
if not optRunOnce.Checked then
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\
RunOnce\',False)
then
begin
reg.DeleteValue( Application.Title );
reg.CloseKey();
end;
//Установка нового режима (создание параметра в соотвествующем
//разделе)
if optAutoRun.Checked then
//..добавление параметра в раздел Run
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\
Run\', True)
then
begin
reg.WriteString( Application.Title, Application.ExeName);
reg.CloseKey();
end;
if optRunOnce.Checked then
//..добавление параметра в раздел RunOnce
if reg.OpenKey(\'Software\Microsoft\Windows\CurrentVersion\
RunOnce\',True)
then
begin
reg.WriteString( Application.Title, Application.ExeName);
reg.CloseKey();
end;
//Для верности обновим показания на форме по данным из реестра
GetRunMode();
reg.Free();
end;
При желании вы можете изменить ветвь реестра на HKEY_CURRENT_USER, если приложение (которое вы будете делать) запускалось только для определенных пользователей.
Запуск приложения из командной строки
Сразу оговоримся, что из командной стр оки (например, из окна Запуск программы,открываемого командой Пуск→ Выполнить)можно запустить любое приложение: достаточно только ввести его полный или относительный (относительно рабочей папки) путь. Однако, возможно, вы замечали, что некоторые приложения можно запускать, просто вводя в командной строке имя приложения, например msaccess или winword. Займемся обеспечением возможности запуска приложения таким ускоренным способом.
Чтобы зарегистрировать приложение для быстрого запуска, можно поместить его путь в ветвь реестра SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths корневого раздела HKEY_CURRENT_USER ИЛИ HKEY_LOCAL_MACHINE. Путь ЕХЕ-файла приложения должен быть записан в параметр (По умолчанию) подраздела, имеющего такое же имя, как и ЕХЕ-файл приложения (включая расширение).
Пример процедуры, регистрирующей приложение для быстрого запуска, приведен в листинге 7.18.
Листинг 7.18.
Регистрация приложения для запуска из командной строки
procedure RegisterQuickStart();
var
reg: TRegistry;
begin
reg := TRegistry.Create();
reg.RootKey := HKEY_LOCAL_MACHINE;
//Регистрируем программу для запуска по имени из
//командной строки
if reg.OpenKey(paths + \'\\' + Application.Title + \'.exe\', True)
then
begin
reg.WriteString(\'\', Application.ExeName);
reg.CloseKey();
end;
reg.Free();
end;
Для отмены быстрого запуска приложения из командной строки можно воспользоваться процедурой, приведенной в листинге 7.19.
Листинг 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\, например HKEY_CLASSES_ ROOT\TricksDelphi. DocumentSample. Если в параметр (По умолчанию) этого раздела записать строку, то она будет отображаться в качестве описания типа файла.
3. Если нужно, чтобы для документа использовался определенный значок, необходимо создать раздел HKEY_CLASSES_ROOT\\DefaultIcon, в параметр (По умолчанию) которого записать полный путь ЕХЕ-или DLL-файла, из которого брать значок, и через запятую – номер значка (см. гл. 4).
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-типа
Интервал:
Закладка: