Здравствуйте, xZero, Вы писали:
Z>Как из этих файлов вытащить название файла, который они запускают?
IShellLink.
Здравствуйте, xZero, Вы писали:
Z>Как из этих файлов вытащить название файла, который они запускают?
Пожалуйста.
HRESULT GetLinkPath(LPCSTR pszShortcutFile, LPSTR pszPath)
{
HRESULT hres;
IShellLink* psl;
WIN32_FIND_DATA wfd;
*pszPath = 0; // assume failure
CoInitialize(NULL);
// Get a pointer to the IShellLink interface.
hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
IID_IShellLink, (void**)&psl);
if (SUCCEEDED(hres))
{
IPersistFile* ppf;
// Get a pointer to the IPersistFile interface.
hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf);
if (SUCCEEDED(hres))
{
WORD wsz[MAX_PATH];
// Ensure string is Unicode.
MultiByteToWideChar(CP_ACP, 0, pszShortcutFile, -1, wsz,
MAX_PATH);
// Load the shell link.
hres = ppf->Load(wsz, STGM_READ);
if (SUCCEEDED(hres))
{
// Get the path to the link target.
hres = psl->GetPath(pszPath, MAX_PATH, (WIN32_FIND_DATA *)&wfd,
SLGP_SHORTPATH );
if (!SUCCEEDED(hres))
MessageBox(NULL, "GetPath failed!", NULL, 0);
}
// Release pointer to IPersistFile interface.
ppf->Release();
}
// Release pointer to IShellLink interface.
psl->Release();
}
CoUninitialize();
return hres;
}
На вход — путь к ярлыку и массив под путь к файлу на MAX_PATH + 1 char'ов.
Пользуйся MSDN, 80% кода оттуда, я лишь кое-что подправил.
... << RSDN@Home 1.0 beta 7a >>
Здравствуйте, xZero, Вы писали:
Z>Как из этих файлов вытащить название файла, который они запускают?
IObject := CreateComObject(CLSID_ShellLink);
SLink := IObject as IShellLink;
SFile := IObject as IPersistFile;
StringToWideChar(strFile,f,MAX_PATH);
SFile.Load(f,STGM_READ);
SLink.Resolve(MainForm.Handle,SLR_ANY_MATCH);
SLink.GetPath(path,MAX_PATH,data,0);
WBR, oles
... << RSDN@Home 1.1 beta 1 >>