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

Вниз

Доступ к ярлыкам на рабочем столе.   Найти похожие ветки 

 
Linc   (2002-07-04 01:53) [0]

Мне надо получить доступ к рабочему столу винды или к ярлыкам на рабочем столе. Помогите!!!


 
perov   (2002-07-04 10:32) [1]

данная процедура создает ярлык в определенной папке на рабочем столе (информация для ярлыка беертся из VersionInfo), обрати внимание на GetSorcutPathName - возвращает программу, на которую ссылается ярлык и почитай интерфейсы
IShellLink, IPersistFile

procedure CreateShortcut;
procedure CreateDesktopShortcut(FileName, linkname, Directory: string);
var
MyObject: IUnknown;
MySLink: IShellLink;
MyPFile: IPersistFile;
WFileName: WideString;
begin
MyObject := CreateComObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
MyPFile := MyObject as IPersistFile;
with MySLink do
begin
SetPath(PChar(FileName));
SetWorkingDirectory(PChar(ExtractFilePath(FileName)));
end;
WFileName := Directory + linkname + ".lnk";
MyPFile.Save(PWChar(WFileName), False);
end;

function GetShortcutPathName(const LinkFile: WideString): string;
var
MyObject: IUnknown;
MySLink: IShellLink;
MyPFile: IPersistFile;
str: array[0..MAX_PATH] of Char;
FindData: TWin32FindData;
begin
MyObject := CreateComObject(CLSID_ShellLink);
MySLink := MyObject as IShellLink;
MyPFile := MyObject as IPersistFile;
MyPFile.Load(PWideChar(LinkFile), STGM_READ);
with MySLink do begin
Resolve(0, SLR_ANY_MATCH or SLR_NO_UI);
GetPath(str, MAX_PATH, FindData, SLGP_UNCPRIORITY);
Result := str;
end;
end;

var
sr: TSearchRec;
Path: array[0..MAX_PATH] of Char;
Found: Boolean;
OrigFileName, FileDesc, Directory: string;
begin
with TVersionInfo.Create(ParamStr(0)) do begin
OrigFileName := OriginalFileName;
FileDesc := FileDescription;
Free;
end;
SHGetSpecialFolderPath(0, Path, CSIDL_DESKTOP, False);
if not DirectoryExists(AnsiUpperCase(Path + "\Пенсионный фонд")) then CreateDir(Path + "\Пенсионный фонд");
Directory := Path + "\Пенсионный фонд\";
Found := False;
if FindFirst(Directory + "*.lnk", faAnyFile, sr) = 0 then
begin
repeat
if (AnsiCompareText(sr.Name, FileDesc + ".lnk") = 0) and
(AnsiCompareText(GetShortcutPathName(Directory + sr.Name), ParamStr(0)) = 0) then Found := True
else if ((AnsiCompareText(sr.Name, FileDesc + ".lnk") <> 0) and
(AnsiCompareText(GetShortcutPathName(Directory + sr.Name), ParamStr(0)) = 0))
or ((AnsiCompareText(sr.Name, FileDesc + ".lnk") = 0) and
(AnsiCompareText(GetShortcutPathName(Directory + sr.Name), ParamStr(0)) <> 0))
then DeleteFile(Directory + sr.Name);
until FindNext(sr) <> 0;
FindClose(sr);
end;
if not Found then CreateDesktopShortcut(ParamStr(0), FileDesc, Directory);
end;




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

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

Наверх




Память: 0.45 MB
Время: 0.006 c
1-50798
maxim2
2002-09-03 08:14
2002.09.16
Как текст из RichEdit сохранить в файл?


1-50671
a413
2002-09-04 16:22
2002.09.16
Как вызвать функцию в DLL из EXE?


8-50870
alexey_potapov
2002-05-16 15:53
2002.09.16
Как в Win синхронизировать вывод на экран его обновлением


4-51023
SPeller
2002-07-24 19:08
2002.09.16
CreateToolbarEx


14-50959
Driverrr
2002-08-21 21:15
2002.09.16
Где найти?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский