![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Shell Link [D6]
Link © (2002-08-08 21:54:00)Мне нужно по иени ярлыка узнать имя файла, на который он ссыляется. Я пишу так:
function GetShellLink(LinkFileName:String):String;
var
ShellLink:IShellLink;
pfd:TWin32FindData;
begin
ShellLink:=CreateComObject(CLSID_ShellLink) as IShellLink;
ShellLink.GetPath(PChar(LinkFileName),200,pfd,0);
Result:=pfd.cFileName;
end;
Но в Result всегда получается "". Где ошибка? (И как её исправить?)
_Александр_ (2002-08-09 05:35:00) [1]Попробуй так:
function GetFullNameFromLink(const LinkFile: WideString): String;
var
SL: IShellLink;
PF: IPersistFile;
FindData: TWin32FindData;
Str: array[0..MAX_PATH] of char;
begin
OleCheck(CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, SL));
PF := SL as IPersistFile;
OleCheck(PF.Load(PWideChar(LinkFile), STGM_READ));
OleCheck(SL.Resolve(0, SLR_ANY_MATCH or SLR_NO_UI));
OleCheck(SL.GetPath(Str, MAX_PATH, FindData, SLGP_SHORTPATH));
Result := Str;
end;
Прим:
Uses
..., ShlObj, ActiveX, ComObj, ...