Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.04.03;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
1-6555
Kaser
2003-03-21 16:41
2003.04.03
Подключение С++ кода в Delphi


7-6813
Dark_Dan
2003-01-31 14:10
2003.04.03
WebCam Volcano DG640


8-6612
demonastarot
2002-12-27 10:11
2003.04.03
MediaPlayer


3-6364
off
2003-03-14 12:27
2003.04.03
Bool поле в IB?


6-6655
VIB
2003-02-10 14:44
2003.04.03
Internet





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский