Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.05.23;
Скачать: CL | DM;

Вниз

Как узнать информацию о ярлыке по пути его нахождения ?   Найти похожие ветки 

 
Midaw ©   (2004-04-01 14:29) [0]

Как узнать информацию о ярлыке по пути его нахождения, т.е. создать IShellLink с информацией о существующем ярлыке ?


 
VMcL ©   (2004-04-01 18:55) [1]


type
 TLinkInfo = packed record
   Path: String;
   Args: String;
   WorkDir: String;
   ShowCmd: TWindowState;
   Descr: String;
   IconPath: String;
   IconIdx: Integer;
   Hotkey: Word;
 end;

function ReadLink(var ALink: TLinkInfo; const AFileName: String): Boolean;
var
 Obj: IUnknown;
 Lnk: IShellLink;
 pFile: IPersistFile;
 Cmd: Integer;
 WFileName: WideString;
 pc: TPathBuf;
 FD: TWin32FindData;
const
 Mx = SizeOf(pc) - 1;
begin
 Result := False;

 Obj := CreateComObject(CLSID_ShellLink);
 if Obj = nil then
   raise Exception.Create(
     "ReadLink: cannot create IShellLink interface object.");

 Lnk := Obj as IShellLink;
 pFile := Obj as IPersistFile;

 WFileName := WideString(AFileName);
 if pFile.Load(PWideChar(WFileName),
   stgm_Read or stgm_Share_Deny_Write) <> S_OK then Exit;

 if Lnk.GetDescription(pc, Mx) <> S_OK then Exit;
 ALink.Descr := StrPas(pc);

 if Lnk.GetPath(pc, Mx, FD, 0) <> S_OK then Exit;
 ALink.Path := pc;

 if Lnk.GetArguments(pc, Mx) <> S_OK then Exit;
 ALink.Args := pc;

 if Lnk.GetWorkingDirectory(pc, Mx) <> S_OK then Exit;
 ALink.WorkDir := pc;

 if Lnk.GetShowCmd(Cmd) <> S_OK then Exit;
 case Cmd of
   sw_ShowNormal:       ALink.ShowCmd := wsNormal;
   sw_ShowMinNoActive:  ALink.ShowCmd := wsMinimized;
   sw_ShowMaximized:    ALink.ShowCmd := wsMaximized;
 else
   raise ERangeError.CreateFmt(
     "ReadLink: unexpected value of "show command" (%d).", [Cmd]);
 end;

 if Lnk.GetIconLocation(pc, Mx, ALink.IconIdx) <> S_OK then Exit;
 ALink.IconPath := CopyStr(pc);

 if Lnk.GetHotkey(ALink.Hotkey) <> S_OK then Exit;

 Result := True;
end;


 
VMcL ©   (2004-04-01 18:57) [2]

Забыл:
TPathBuf = packed array [0 .. MAX_PATH] of Char;



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

Текущий архив: 2004.05.23;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.037 c
7-1080805581
Sergey N
2004-04-01 11:46
2004.05.23
Как сделать Hook на выключение компьютера


1-1084115984
KLAUS
2004-05-09 19:19
2004.05.23
НУжно просто навсего удалить файл


1-1083908296
Sla
2004-05-07 09:38
2004.05.23
Режим доступа к ТЕКСТОВОМУ файлу


1-1084273112
Aleksandr
2004-05-11 14:58
2004.05.23
Как организовать зеркальную замену битов в байте?


11-1071311892
blanco
2003-12-13 13:38
2004.05.23
Позднее связывание