shell32: Implement ASSOCSTR_SHELLEXTENSION.
This commit is contained in:
parent
6f15ca3e47
commit
661bbbd068
|
@ -429,7 +429,7 @@ static HRESULT WINAPI IQueryAssociations_fnGetString(
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
WCHAR path[MAX_PATH];
|
WCHAR path[MAX_PATH];
|
||||||
|
|
||||||
TRACE("(%p,0x%8x,0x%8x,%s,%p,%p)\n", This, cfFlags, str,
|
TRACE("(%p,0x%08x,%u,%s,%p,%p)\n", This, cfFlags, str,
|
||||||
debugstr_w(pszExtra), pszOut, pcchOut);
|
debugstr_w(pszExtra), pszOut, pcchOut);
|
||||||
|
|
||||||
if (cfFlags & cfUnimplemented)
|
if (cfFlags & cfUnimplemented)
|
||||||
|
@ -616,6 +616,30 @@ get_friendly_name_fail:
|
||||||
HeapFree(GetProcessHeap(), 0, pszFileType);
|
HeapFree(GetProcessHeap(), 0, pszFileType);
|
||||||
return hr;
|
return hr;
|
||||||
}
|
}
|
||||||
|
case ASSOCSTR_SHELLEXTENSION:
|
||||||
|
{
|
||||||
|
static const WCHAR shellexW[] = {'S','h','e','l','l','E','x','\\',0};
|
||||||
|
WCHAR keypath[sizeof(shellexW) / sizeof(shellexW[0]) + 39], guid[39];
|
||||||
|
CLSID clsid;
|
||||||
|
HKEY hkey;
|
||||||
|
DWORD size;
|
||||||
|
LONG ret;
|
||||||
|
|
||||||
|
hr = CLSIDFromString(pszExtra, &clsid);
|
||||||
|
if (FAILED(hr)) return hr;
|
||||||
|
|
||||||
|
strcpyW(keypath, shellexW);
|
||||||
|
strcatW(keypath, pszExtra);
|
||||||
|
ret = RegOpenKeyExW(This->hkeySource, keypath, 0, KEY_READ, &hkey);
|
||||||
|
if (ret) return HRESULT_FROM_WIN32(ret);
|
||||||
|
|
||||||
|
size = sizeof(guid);
|
||||||
|
ret = RegGetValueW(hkey, NULL, NULL, RRF_RT_REG_SZ, NULL, guid, &size);
|
||||||
|
RegCloseKey(hkey);
|
||||||
|
if (ret) return HRESULT_FROM_WIN32(ret);
|
||||||
|
|
||||||
|
return ASSOC_ReturnString(pszOut, pcchOut, guid, size / sizeof(WCHAR));
|
||||||
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
FIXME("assocstr %d unimplemented!\n", str);
|
FIXME("assocstr %d unimplemented!\n", str);
|
||||||
|
|
Loading…
Reference in New Issue