![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
как можно получить информацию о выполняемом файле по LNK/PIF?
grumbler © (2004-07-19 19:52:00)Столкнулся с проблемой - надо каким-то макаром узнать реальное имя исполняемого файла, если есть только его линк. Никто с таким не сталкивался? может ртфм куда-нить отправите...
Ajax (2004-07-19 23:12:00) [1]Вот, не помню где взял.
function GetInformationFromLink(LinkFileName:String;
var Path, WorkingDirectory, Arguments:string;
var HotKey: word; var ShowCMD: integer):boolean;
var
MyObject: IUnknown;
MySLink: IShellLink;
MyPFile: IPersistFile;
FileInfo: TWin32FINDDATA;
WidePath: array [0..MAX_PATH] of WideChar;
Buff: array [0..MAX_PATH] of Char;
begin
Result := false;
if not fileexists(Linkfilename) then exit;
CoInitialize(nil);
CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER or CLSCTX_LOCAL_SERVER, IUnknown, MyObject);
MyPFile := MyObject as IPersistFile;
MySLink := MyObject as IShellLink;
StringToWideChar(LinkFileName, WidePath, SizeOf(WidePath));
MyPFile.Load(WidePath, STGM_READ);
MySLink.GetPath(Buff, Max_PATH, FileInfo, SLGP_UNCPRIORITY);
Path:=Buff;
MySLink.GetWorkingDirectory(Buff, Max_PATH);
WorkingDirectory:=Buff;
MySLink.GetArguments(Buff, Max_PATH);
Arguments:=Buff;
MySLink.GetHotkey(HotKey);
MySLink.GetShowCmd(ShowCMD);
Result:=true;
CoUninitialize;
end;
Зависимости вроде shlobj и activex.
Vladimir Kladov (2004-07-19 21:27:00) [2]Lnk.pas