Index: dll/win32/shell32/precomp.h =================================================================== --- dll/win32/shell32/precomp.h (revision 58811) +++ dll/win32/shell32/precomp.h (working copy) @@ -24,6 +24,7 @@ #include #include #include +#include #include #include #include Index: dll/win32/shell32/shell32_main.h =================================================================== --- dll/win32/shell32/shell32_main.h (revision 58811) +++ dll/win32/shell32/shell32_main.h (working copy) @@ -204,5 +204,10 @@ EXTERN_C HRESULT WINAPI DoRegisterServer(void); EXTERN_C HRESULT WINAPI DoUnregisterServer(void); +EXTERN_C HRESULT WINAPI SHOpenFolderAndSelectItems(LPITEMIDLIST pidlFolder, + UINT cidl, + PCUITEMID_CHILD_ARRAY apidl, + DWORD dwFlags + ); #endif Index: dll/win32/shell32/shelllink.cpp =================================================================== --- dll/win32/shell32/shelllink.cpp (revision 58811) +++ dll/win32/shell32/shelllink.cpp (working copy) @@ -2023,11 +2023,21 @@ switch(LOWORD(wParam)) { case 14020: - /// - /// FIXME - /// open target directory - /// + { + /* Find Target */ + CoInitializeEx(NULL, COINIT_MULTITHREADED); + ITEMIDLIST *pIDL = ILCreateFromPath(pThis->sPath); + if(NULL != pIDL) + { + HRESULT hRet = SHOpenFolderAndSelectItems(pIDL, 0, NULL, 0); + if (hRet != S_OK) + ERR("SHOpenFolderAndSelectItems FAILED: %lu\n", hRet); + ILFree(pIDL); + } + CoUninitialize(); return TRUE; + } + case 14021: { WCHAR wszPath[MAX_PATH] = L"";