Главная страница
    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.007 c
3-50597
progger
2002-08-23 15:56
2002.09.16
Помогите с SQL


3-50611
_reset
2002-08-26 10:10
2002.09.16
Cвязанные таблицы (не могу разобраться)...


3-50619
Igoryan
2002-08-26 17:40
2002.09.16
Работа С ODBC


8-50873
fore_3
2002-05-16 12:54
2002.09.16
Проблема с перемоткой DVD


3-50642
Kurt
2002-08-26 22:53
2002.09.16
Вопрос о компоненте QRBand! а точнее со свойством ColumnHeader





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