Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 40076.doc
Скачиваний:
5
Добавлен:
30.04.2022
Размер:
392.19 Кб
Скачать

Лабораторная работа № 6. Разработка сервисных программ

Задание 1. Разработать программу создания ярлыка программы на рабочем столе.

Ход выполнения:

              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 лабораторной работы с распечаткой уникальных процедур и экранной формы программы и копии экранов результата работы программы.