< prev index next >

src/java.desktop/windows/native/libawt/windows/ShellFolder2.cpp

Print this page




 728         wstr = olePath;
 729         break;
 730 
 731       case STRRET_WSTR :
 732         wstr = strret.pOleStr;
 733         break;
 734 
 735       default:
 736         return NULL;
 737     }
 738 
 739     IShellLinkW* psl;
 740     hres = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkW, (LPVOID *)&psl);
 741     if (SUCCEEDED(hres)) {
 742         IPersistFile* ppf;
 743         hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf);
 744         if (SUCCEEDED(hres)) {
 745             hres = ppf->Load(wstr, STGM_READ);
 746             if (SUCCEEDED(hres)) {
 747                 if (resolve) {
 748                     hres = psl->Resolve(NULL, 0);
 749                     // Ignore failure
 750                 }
 751                 pidl = (LPITEMIDLIST)NULL;
 752                 hres = psl->GetIDList(&pidl);
 753             }
 754             ppf->Release();
 755         }
 756         psl->Release();
 757     }
 758 
 759     if (strret.uType == STRRET_WSTR) {
 760         CoTaskMemFree(strret.pOleStr);
 761     }
 762     if (SUCCEEDED(hres)) {
 763         return (jlong)pidl;
 764     } else {
 765         return 0;
 766     }
 767 }
 768 




 728         wstr = olePath;
 729         break;
 730 
 731       case STRRET_WSTR :
 732         wstr = strret.pOleStr;
 733         break;
 734 
 735       default:
 736         return NULL;
 737     }
 738 
 739     IShellLinkW* psl;
 740     hres = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLinkW, (LPVOID *)&psl);
 741     if (SUCCEEDED(hres)) {
 742         IPersistFile* ppf;
 743         hres = psl->QueryInterface(IID_IPersistFile, (void**)&ppf);
 744         if (SUCCEEDED(hres)) {
 745             hres = ppf->Load(wstr, STGM_READ);
 746             if (SUCCEEDED(hres)) {
 747                 if (resolve) {
 748                     hres = psl->Resolve(NULL, SLR_NO_UI);
 749                     // Ignore failure
 750                 }
 751                 pidl = (LPITEMIDLIST)NULL;
 752                 hres = psl->GetIDList(&pidl);
 753             }
 754             ppf->Release();
 755         }
 756         psl->Release();
 757     }
 758 
 759     if (strret.uType == STRRET_WSTR) {
 760         CoTaskMemFree(strret.pOleStr);
 761     }
 762     if (SUCCEEDED(hres)) {
 763         return (jlong)pidl;
 764     } else {
 765         return 0;
 766     }
 767 }
 768 


< prev index next >