diff --git a/dlls/shell32/iconcache.c b/dlls/shell32/iconcache.c
index b923e15..25d503c 100644
--- a/dlls/shell32/iconcache.c
+++ b/dlls/shell32/iconcache.c
@@ -21,6 +21,8 @@
 #include "shellapi.h"
 #include "pidl.h"
 #include "shell32_main.h"
+#include "wine/undocshell.h"
+#include "shlwapi.h"
 
 DEFAULT_DEBUG_CHANNEL(shell)
 
@@ -210,7 +212,7 @@
  * returns
  *  failure:0; success: icon handle or nr of icons (nIconIndex-1)
  */
-HICON WINAPI ICO_ExtractIconEx(LPCSTR lpszExeFileName, HICON * RetPtr, UINT nIconIndex, UINT n, UINT cxDesired, UINT cyDesired )
+HICON WINAPI ICO_ExtractIconEx(LPCSTR lpszExeFileName, HICON * RetPtr, INT nIconIndex, UINT n, UINT cxDesired, UINT cyDesired )
 {	HGLOBAL		hRet = 0;
 	LPBYTE		pData;
 	OFSTRUCT	ofs;
@@ -358,8 +360,34 @@
 	    goto end_3;		/* success */
 	  }
 
+  /* (nIconIndex < 0): extract the icon by resource id */
+	  if( nIconIndex < 0 )
+	  {
+	    int n = 0;
+	    int iId = abs(nIconIndex);
+	    PIMAGE_RESOURCE_DIRECTORY_ENTRY xprdeTmp = (PIMAGE_RESOURCE_DIRECTORY_ENTRY)(icongroupresdir+1);
+
+	    while(n<iconDirCount && xprdeTmp)
+	    {              
+              if(xprdeTmp->u1.Id ==  iId)
+              {
+                  nIconIndex = n;
+                  break;
+              }
+              n++;
+              xprdeTmp++;                  
+	    }
+	    if (nIconIndex < 0)
+	    {
+	      WARN("resource id %d not found\n", iId);
+	      goto end_3;		/* failure */
+	    }
+	  }
+
+  /* check nIconIndex to be in range */
 	  if (nIconIndex >= iconDirCount) 
-	  { WARN("nIconIndex %d is larger than iconDirCount %d\n",nIconIndex,iconDirCount);
+	  {
+	    WARN("nIconIndex %d is larger than iconDirCount %d\n",nIconIndex,iconDirCount);
 	    goto end_3;		/* failure */
 	  }
 
@@ -484,7 +512,7 @@
 
 	lpsice = (LPSIC_ENTRY) SHAlloc (sizeof (SIC_ENTRY));
 
-	lpsice->sSourceFile = HEAP_strdupA (GetProcessHeap(), 0, PathFindFilenameA(sSourceFile));
+	lpsice->sSourceFile = HEAP_strdupA (GetProcessHeap(), 0, PathFindFileNameA(sSourceFile));
 	lpsice->dwSourceIndex = dwSourceIndex;
 	
 	EnterCriticalSection(&SHELL32_SicCS);
@@ -549,7 +577,7 @@
 		
 	TRACE("%s %i\n", sSourceFile, dwSourceIndex);
 
-	sice.sSourceFile = PathFindFilenameA(sSourceFile);
+	sice.sSourceFile = PathFindFileNameA(sSourceFile);
 	sice.dwSourceIndex = dwSourceIndex;
 	
 	EnterCriticalSection(&SHELL32_SicCS);
@@ -741,7 +769,10 @@
  *	pIndex	[OUT][OPTIONAL]	SIC index for big icon
  *
  */
-UINT WINAPI SHMapPIDLToSystemImageListIndex(LPSHELLFOLDER sh, LPITEMIDLIST pidl, UINT * pIndex)
+int WINAPI SHMapPIDLToSystemImageListIndex(
+	LPSHELLFOLDER sh,
+	LPCITEMIDLIST pidl,
+	UINT * pIndex)
 {
 	UINT	Index;
 
