/************************************************************************* * ExtractIconExW [SHELL32.@] * RETURNS * 0 no icon found * -1 file is not valid * or number of icons extracted */ UINT WINAPI ExtractIconExW(LPCWSTR lpszFile, INT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIcons) { /* get entry point of undocumented function PrivateExtractIconExW() in user32 */ #if defined(__CYGWIN__) || defined (__MINGW32__) || defined(_MSC_VER) static UINT (WINAPI*PrivateExtractIconExW)(LPCWSTR,int,HICON*,HICON*,UINT) = NULL; if (!PrivateExtractIconExW) { HMODULE hUser32 = GetModuleHandleA("user32"); PrivateExtractIconExW = (UINT(WINAPI*)(LPCWSTR,int,HICON*,HICON*,UINT)) GetProcAddress(hUser32, "PrivateExtractIconExW"); if (!PrivateExtractIconExW) return 0; } #endif TRACE("%s %i %p %p %i\n", debugstr_w(lpszFile), nIconIndex, phiconLarge, phiconSmall, nIcons); return PrivateExtractIconExW(lpszFile, nIconIndex, phiconLarge, phiconSmall, nIcons); }
/*********************************************************************** * PrivateExtractIconExA [USER32.@] */ UINT WINAPI PrivateExtractIconExA ( LPCSTR lpstrFile, int nIndex, HICON * phIconLarge, HICON * phIconSmall, UINT nIcons ) { UINT ret; INT len = MultiByteToWideChar(CP_ACP, 0, lpstrFile, -1, NULL, 0); LPWSTR lpwstrFile = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); if (lpwstrFile == NULL) return 0; TRACE("%s %d %p %p %d\n", lpstrFile, nIndex, phIconLarge, phIconSmall, nIcons); MultiByteToWideChar(CP_ACP, 0, lpstrFile, -1, lpwstrFile, len); ret = PrivateExtractIconExW(lpwstrFile, nIndex, phIconLarge, phIconSmall, nIcons); HeapFree(GetProcessHeap(), 0, lpwstrFile); return ret; }
/************************************************************************* * ExtractIconExW [SHELL32.@] * RETURNS * 0 no icon found * -1 file is not valid * or number of icons extracted */ UINT WINAPI ExtractIconExW(LPCWSTR lpszFile, INT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIcons) { TRACE("%s %i %p %p %i\n", debugstr_w(lpszFile), nIconIndex, phiconLarge, phiconSmall, nIcons); return PrivateExtractIconExW(lpszFile, nIconIndex, phiconLarge, phiconSmall, nIcons); }