如何打开lnk文件,从中得到文件的真实地址和名字。比如,历史栏里有个lnk文件,怎样编码实现从这个文件里得到实际的文件名称呢。

解决方案 »

  1.   

    bool GetShortCutFile(LPCSTR ShortcutFile, char* buf, int nSize)
    {       
            HRESULT hres;
            IShellLink *psl;
            IPersistFile *ppf;
            WIN32_FIND_DATA fd;        CoInitialize(NULL);
            hres = CoCreateInstance( CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,      IID_IShellLink, (void**)&psl );
            if (!SUCCEEDED(hres)) return false;        hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf );
            if( SUCCEEDED(hres) )
            {
                    //buffer for Unicode string
                    wchar_t wsz[MAX_PATH];                MultiByteToWideChar(CP_ACP, 0, ShortcutFile, -1, wsz, MAX_PATH );
                    hres = ppf->Load(wsz, STGM_READ);
                    if( SUCCEEDED(hres) )
                    hres = psl->GetPath(buf, nSize, &fd, NULL );
                    ppf->Release();
            }
            psl->Release();  return SUCCEEDED(hres);
    }在C++BUILDER6里面通过
      

  2.   

    tccsdn(紫乐) 
    太感谢了,果然好用。拿全分,马上结帖。