Hans Leidekker : shell32: Implement ASSOCSTR_SHELLEXTENSION.
Alexandre Julliard
julliard at winehq.org
Thu May 9 15:08:29 CDT 2013
Module: wine
Branch: master
Commit: 661bbbd06892dac3991d894ef4ffbbc8aeb3e58c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=661bbbd06892dac3991d894ef4ffbbc8aeb3e58c
Author: Hans Leidekker <hans at codeweavers.com>
Date: Thu May 9 16:42:07 2013 +0200
shell32: Implement ASSOCSTR_SHELLEXTENSION.
---
dlls/shell32/assoc.c | 26 +++++++++++++++++++++++++-
1 files changed, 25 insertions(+), 1 deletions(-)
diff --git a/dlls/shell32/assoc.c b/dlls/shell32/assoc.c
index e565591..6681a63 100644
--- a/dlls/shell32/assoc.c
+++ b/dlls/shell32/assoc.c
@@ -429,7 +429,7 @@ static HRESULT WINAPI IQueryAssociations_fnGetString(
HRESULT hr;
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);
if (cfFlags & cfUnimplemented)
@@ -616,6 +616,30 @@ get_friendly_name_fail:
HeapFree(GetProcessHeap(), 0, pszFileType);
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:
FIXME("assocstr %d unimplemented!\n", str);
More information about the wine-cvs
mailing list