Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.03;
Скачать: CL | DM;

Вниз

Создание иконки   Найти похожие ветки 

 
ak75 ©   (2003-01-31 19:16) [0]

Ребята помогите понять, с какими значениями парметров нужно вызвать следующую процедуру:

procedure TForm1.Button1Click(Sender: TObject);
begin
CreateLink(PathObj, PathSpec(), Desc, Param);
end;

function TForm1.PathSpec(): String;
var
FolderPath :string;
Registry: TRegistry;
begin
Registry := TRegistry.Create;
try
Registry.RootKey := HKey_Current_User;
Registry.OpenKey("Software\Microsoft\Windows\"+
"CurrentVersion\Explorer\Shell Folders", False);
Result := Registry.ReadString("Desktop");
{Cache, Cookies, Desktop, Favorites,
Fonts, Personal, Programs, SendTo, Start Menu, StartUp}
finally
Registry.Free;
end;
end;

procedure TForm1.CreateLink(const PathObj, PathLink, Desc, Param: string);
var
IObject: IUnknown;
SLink: IShellLink;
PFile: IPersistFile;
begin
IObject := CreateComObject(CLSID_ShellLink);
SLink := IObject as IShellLink;
PFile := IObject as IPersistFile;
with SLink do begin
SetArguments(PChar(Param));
SetDescription(PChar(Desc));
SetPath(PChar(PathObj));
end;
PFile.Save(PWChar(WideString(PathLink)), FALSE);
end;


Например надо создать иконку на десктопе файла c:\1.txt
PathObj - ? (не знаю)
PathSpec() - знаю, понятно
Desc - ? (не знаю)
Param - ? (не знаю)
Помогите, что такое PathObj, Desc, Param ?


 
Набережных С.   (2003-01-31 23:33) [1]


{
CSIDLTarget - константы CSIDL_DESKTOP и т.п., определены в модуле ShlObj
PathObj - путь и имя объекта
Params - параметры, передаваемые при открытии
WorkDir - рабочая директория
IconSource - путь и имя файла с иконкой
}
procedure CreateShellLink(WndOwn: HWND; CSIDLTarget: DWORD;
const PathObj, Params, WorkDir, IconSource: String;
IconIndex: integer);

var
LinkPath: WideString;
Link: IShellLink;
Stg: IPersistFile;
begin
SetLength(LinkPath,MAX_PATH);
if not SHGetSpecialFolderPathW(WndOwn, @LinkPath[1], CSIDLTarget, false) then
raise EInvalidArgument.Create("Invalid CSIDLTarget argument.");
Link:=CreateComObject(CLSID_ShellLink) as IShellLink;
try
with Link do
begin
OleCheck(SetPath(PChar(PathObj)));
OleCheck(SetArguments(PChar(Params)));
OleCheck(SetIconLocation(PChar(IconSource),IconIndex));
OleCheck(SetWorkingDirectory(PChar(WorkDir)));
end;
Stg:=Link as IPersistFile;
try
SetLength(LinkPath, Length(PWideChar(LinkPath)));
LinkPath:=LinkPath+"\"+ChangeFileExt(ExtractFileName(PathObj),".lnk");
OleCheck(Stg.Save(PWideChar(LinkPath),false));
finally
Stg:=nil;
end;
finally
Link:=nil;
end;
end;

CreateShellLink(0,CSIDL_DESKTOP,"C:\1.txt","","","",0);


 
ak75 ©   (2003-02-03 16:08) [2]

> Набережных С.
Спасибо, а теперь как программно удалить этот ярлык, если название изменили.



Страницы: 1 вся ветка

Текущий архив: 2003.04.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
14-6747
Лохматый
2003-03-17 09:29
2003.04.03
Черный оппонент


1-6486
Dr.L.
2003-03-24 14:55
2003.04.03
Форматирование текста в Excel из Delphi ???


1-6572
cLe0
2003-03-20 11:52
2003.04.03
ValueListEditor -


3-6355
herosofnn
2003-03-13 10:23
2003.04.03
Номер записи


3-6325
PrettyFly
2003-03-17 14:59
2003.04.03
Отфильтрованный базар...