Windows 2000に SHCreateItemFromParsingName もどきを実装してみた
Windows 2000のSHELL32に IShellItem限定で 一応ちゃんと動く SHCreateItemFromParsingName を実装してみました
テストコード
int _tmain(int argc, _TCHAR* argv[]) { IShellItem *psi; //wchar_t dir[]=L"c:\\boot.ini"; wchar_t dir[]=L"c:\\windows\\system32"; int hres = CoInitialize(NULL); SHCreateItemFromParsingName(dir, NULL,/*CLSCTX_ALL*/ IID_IShellItem, (LPVOID *)&psi); if (psi != NULL){ wchar_t *pth; psi->GetDisplayName(SIGDN_FILESYSPATH,&pth); MessageBoxW(0,pth,L"",0); } return 0; } |
実装コード
_declspec(dllexport) HRESULT WINAPI SHCreateItemFromParsingName(PCWSTR pszPath, IBindCtx *pbc, REFIID riid, void **ppv) { LPITEMIDLIST pidl; HRESULT result; *ppv = NULL; result = SHParseDisplayName(pszPath, pbc, &pidl, 0, NULL); if(SUCCEEDED(result)) { result = SHCreateItem(NULL, NULL, pidl, (IShellItem **) ppv); if(!SUCCEEDED(result)) { ILFree(pidl); } } return result; } |
テスト用に v2.4d3 というバージョンで公開しています。
Comments