- •Гоувпо «Воронежский государственный технический университет»
- •Методические указания
- •Требования к выполнению и оформлению лабораторных работ
- •Теоретический материал
- •Лабораторная работа № 2 системное по для управления файлами и каталогами в программах пользователя Функции и состав ос
- •Работа с файлами и каталогами в среде Delphi
- •Средства системных модулей
- •Лабораторная работа № 3 управление памятью. Регистровая память
- •Лабораторная работа № 5. Разработка учебных программ и утилит
- •Лабораторная работа № 6. Разработка сервисных программ
- •Библиографический список
- •Содержание
- •394026 Воронеж, Московский просп., 14
Лабораторная работа № 6. Разработка сервисных программ
Задание 1. Разработать программу создания ярлыка программы на рабочем столе.
Ход выполнения:
В Delphi создать форму, содержащую две кнопки (см. рисунок). Сохранить проект на диске с уникальным именем.
Рис. 7. Экранная форма программы
2. Модуль должен содержать следующие библиотеки:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ShlObj, ActiveX, ComObj, Buttons;
3. Листинг процедуры размещения ярлыка программы на рабочем столе имеет следующий вид:
procedure TFormIarlik.ButtonWorkTableClick(Sender: TObject);
var
WorkTable: String;
P: PItemIDList;
C: array [0..1000] of char;
Begin
{С помощью функции SHGetSpecialFolderLocation узнаем расположение папки для ярлыков и программ рабочего стола (второй параметр равен csidl_desktop)}
if SHGetSpecialFolderLocation(Handle,CSIDL_DESKTOP ,p) =NOERROR then
begin
SHGetPathFromIDList (P,C);
WorkTable := StrPas (C);
end;
{Проверяем, существует ли ярлык для программы. Если да, то удаляем файл ярлыка, потому что в нем могут находиться устаревшие данные}
if FileExists(WorkTable+'\'+ExtractFileName
(Application.ExeName)) then
DeleteFile(WorkTable+'\'+ExtractFileName
(Application.ExeName));
{Создание ярлыка происходит с помощью вызова процедуры CreateShotCut}
CreateShotCut(Application.ExeName, WorkTable+
'\'+ExtractFileName(Application.ExeName), '');
end;
4. В разделе private надо описать процедуру для создания ярлыков CreateShotCut. Процедура имеет три параметра:
файл, запускаемый ярлыком;
имя, которое будет отображаться на ярлыке;
параметры, которые должны быть переданы программе при запуске.
private
{ Private declarations }
procedure CreateShotCut(SourceFile, ShortCutName, SourceParams: String);
5. Листинг процедуры создания ярлыка CreateShotCut имеет следующий вид:
procedure TFormIarlik.CreateShotCut(SourceFile, ShortCutName,
SourceParams: String);
var
IUnk: IUnknown;
ShellLink: IShellLink;
ShellFile: IPersistFile;
tmpShortCutName: String;
WideStr: WideString;
i: Integer;
begin
IUnk := CreateComObject (CLSID_ShellLink);
ShellLink := IUnk as IShellLink;
ShellFile := IUnk as IPersistFile;
ShellLink.SetPath (PChar(SourceFile));
ShellLink.SetArguments (PChar(SourceParams));
ShellLink.SetWorkingDirectory (PChar(ExtractFilePath(SourceFile)));
ShortCutName := ChangeFileExt (ShortCutName,'.lnk');
if FileExists (ShortCutName) then
begin
ShortCutName := Copy (ShortCutName,1, Length(ShortCutName)-4);
i := 1;
repeat
tmpShortCutName := ShortCutName +'(' + IntToStr( i )+ ').lnk';
inc(i);
until not FileExists (tmpShortCutName);
WideStr := tmpShortCutName;
end
else
WideStr := ShortCutName;
ShellFile.Save (PWChar(WideStr),False);
end;
Пояснение к листингу процедуры:
В самом начале инициализируем переменную IUnk как СОМ-объект c помощью API-функции CreateComObject.
Затем инициализируются переменные ShellLink (ссылка) и ShellFile (файл).
После этого вызываются следующие методы объекта ссылки ShellLink:
SetPath — устанавливает полный путь к программе;
SetArguments — устанавливает параметры, которые надо передать программе;
SetWorkingDirectory — здесь указывается рабочая директория.
Помимо этого у объекта-ссылки есть еще методы:
GetDescription — указывает в ярлыке описание для программы;
SetShowCmd — указывает режим отображения окна. Здесь можно использовать режимы, которые есть в API-функции ShowWindow, например sw_hide (запускать невидимо), sw_maximize (запускать с окном развернутым на весь экран), sw_minimize (минимизировать окно после старта) и так далее.
После указания необходимых параметров в переменной ShortCutName сохраняется имя ярлыка плюс расширение lnk. Это имя будет использоваться при создании самого файла ссылки.
Далее проверяется, если такой ярлык уже существует, то запускается цикл, в котором к имени ссылки добавляется цифра. Таким образом находится новое имя ярлыка с цифрой, которого еще не существует в указанном месте.
В самой последней строке созданная ссылка сохраняется в файле ярлыка.
Задание 2. Доработать программу задания 1, добавив на экранной форме следующие режим работы:
создать на рабочем столе свою папку, а в ней создавать ярлыки программы;
уничтожить свою рабочую папку.
Для выполнения задания можно использовать такие стандартные функции Delphi, как DirectoryExists, MkDir, FileExists, DeleteFile и др.
Синтаксис и параметры найти в помощи Delphi.
В листинге программы оформить пояснения.
Оформить отчет по заданию 2 лабораторной работы с распечаткой уникальных процедур и экранной формы программы и копии экранов результата работы программы.