Текущий архив: 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.44 MB
Время: 0.01 c