Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как создать ярлык на рабочем столе файл .lnk / 5 сообщений из 5, страница 1 из 1
10.12.2003, 15:15
    #32349381
ENN
ENN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать ярлык на рабочем столе файл .lnk
Как создать ярлык на рабочем столе файл .lnk

Куда записать понятно в Windows а как создать файл lnk
...
Рейтинг: 0 / 0
10.12.2003, 15:36
    #32349421
Rostyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать ярлык на рабочем столе файл .lnk
Простите, код не проверял. Взял тут

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
Как програмно создать ярлык?
Группа ссылок: Диски, Папки и Файлы

Функция CreateShortcut создает ярлык в указанном месте.

Параметры
  ShortcutDir - Каталог в котором надо создавать ярлык.Можно передавать непосредственно путь каталога или одну из следующих констант:
     Desktop - Рабочий стол
     Favorites - Избранное
     Programs - Пуск\Программы
     SendTo - Отправить 
     Start Menu - Главное меню
     Startup - Автозагрузка
  CmdLine - Путь к обьекту открытия(файл или папка)

  Param - Параметры
  WorkDir - Рабочий каталог
  DirName - Имя подпапки. Оно необходимо в том случае если вы создаете ярлыки например в  "Пуск\Программы"  и вам необходимо чтобы ярлыки были в подпапке.
  LinkFile - Имя файла ярлыка. 

uses
  ...Registry, ShlObj, ActiveX, ComObj, FileUtil;

......

function CreateShortcut(const ShortcutDir, CmdLine, Param, WorkDir,DirName: string;
   LinkFile:String): Boolean;
var
  MyObject  : IUnknown;

  MySLink   : IShellLink;
  MyPFile   : IPersistFile;
  WideFile  : WideString;
  Directory, TempStr: String;
  Reg:TRegistry;
begin
  Result:=False;Directory:='';
  If (ShortcutDir='Desktop') or (ShortcutDir='Favorites') or
     (ShortcutDir='Programs') or (ShortcutDir='SendTo') or
     (ShortcutDir='Start Menu') or (ShortcutDir='Startup') then
    begin
      Reg:=TRegistry.Create;
      Reg.OpenKey('Software\MicroSoft\Windows\CurrentVersion\Explorer\Shell Folders',False);

      Directory := Reg.ReadString(ShortcutDir);
      Reg.Free;
      If not(DirName='') then
        Directory:=Directory+'\'+DirName;
    end;
  If DirExists(ShortcutDir)  then
    Directory:=ShortcutDir
  else
    If Directory='' then  Exit;
  If not(FileExists(CmdLine)) and not(DirExists(CmdLine)) then Exit;
  If linkFile='' then Exit;
  TempStr:=linkFile;

  If Length(linkFile)> 4  then
    Delete(TempStr, 1 ,Length(TempStr)- 3 );
  If not(AnsiUpperCase(TempStr)='LNK') then
    linkFile:=linkFile+'.lnk';
  MyObject := CreateComObject(CLSID_ShellLink);
  MySLink := MyObject as IShellLink;
  MyPFile := MyObject as IPersistFile;
  with MySLink do
    begin
      SetPath(PChar(CmdLine));
      SetArguments(PChar(Param));
      SetWorkingDirectory(PChar(WorkDir));
    end;

  if Directory[Length(Directory)]='\' then
    WideFile := Directory+LinkFile
  else
    WideFile := Directory+'\'+LinkFile;
  if MyPFile.Save(PWChar(WideFile), False)= S_OK then
    Result:=True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  s:=ExtractFilePath(Edit1.Text);
  Delete(s,Length(s), 1 );
  CreateShortcut( 'Programs', 'C:\my.txt', '', 'C:\', '', 'my');
end;
...
Рейтинг: 0 / 0
11.12.2003, 06:52
    #32349993
ENN
ENN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать ярлык на рабочем столе файл .lnk
То что надо ......

If DirExists(ShortcutDir) then

if MyPFile.Save(PWChar(WideFile), False)= S_OK then

Но не нашел прототип DirExists и PWChar
...
Рейтинг: 0 / 0
15.12.2003, 12:34
    #32352539
ENN
ENN
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать ярлык на рабочем столе файл .lnk
Вопрос а как теперь удалить ярлык
...
Рейтинг: 0 / 0
15.12.2003, 13:07
    #32352591
Rostyk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как создать ярлык на рабочем столе файл .lnk
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как создать ярлык на рабочем столе файл .lnk / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]