Many bugfixes, new stubs SHGetRealIDL, SHRegQueryValue32W,
SHRegQueryValueEx32W, StrRetToStrN, StrChrW, SHAllocShared, SHLockShared, SHUnlockShared, SHFreeShared, SetAppStartingCursor32, SHLoadOLE32, Shell_MergeMenus32, PathGetDriveNumber32, DriveType32, SHAbortInvokeCommand, SHOutOfMemoryMessageBox, SHFlushClipboard.
This commit is contained in:
parent
828537111a
commit
6101324f3b
|
@ -119,6 +119,9 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
|
|||
{ DWORD len;
|
||||
LPITEMIDLIST newpidl=NULL;
|
||||
|
||||
TRACE(pidl,"pidl=%p \n",pidl);
|
||||
pdump(pidl);
|
||||
|
||||
if (pidl)
|
||||
{ len = pidl->mkid.cb;
|
||||
newpidl = (LPITEMIDLIST) SHAlloc (len+2);
|
||||
|
@ -126,8 +129,8 @@ LPITEMIDLIST WINAPI ILCloneFirst(LPCITEMIDLIST pidl)
|
|||
{ memcpy(newpidl,pidl,len);
|
||||
ILGetNext(newpidl)->mkid.cb = 0x00;
|
||||
}
|
||||
}
|
||||
TRACE(pidl,"pidl=%p newpidl=%p\n",pidl, newpidl);
|
||||
}
|
||||
TRACE(pidl,"-- newpidl=%p\n",newpidl);
|
||||
|
||||
return newpidl;
|
||||
}
|
||||
|
@ -195,6 +198,16 @@ LPITEMIDLIST WINAPI ILCombine(LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2)
|
|||
/* TRACE(pidl,"--new pidl=%p\n",pidlNew);*/
|
||||
return pidlNew;
|
||||
}
|
||||
/*************************************************************************
|
||||
* SHGetRealIDL [SHELL32.98]
|
||||
*
|
||||
* NOTES
|
||||
*/
|
||||
LPITEMIDLIST WINAPI SHGetRealIDL(DWORD x, DWORD y, DWORD z)
|
||||
{ FIXME(pidl,"0x%04lx 0x%04lx 0x%04lx\n",x,y,z);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHLogILFromFSIL [SHELL32.95]
|
||||
*
|
||||
|
@ -263,12 +276,24 @@ LPITEMIDLIST WINAPI ILGetNext(LPITEMIDLIST pidl)
|
|||
* NOTES
|
||||
* Adds the single item to the idlist indicated by pidl.
|
||||
* if bEnd is 0, adds the item to the front of the list,
|
||||
* otherwise adds the item to the end.
|
||||
* Destroys the passed in idlist!
|
||||
* otherwise adds the item to the end. (???)
|
||||
* Destroys the passed in idlist! (???)
|
||||
*/
|
||||
LPITEMIDLIST WINAPI ILAppend(LPITEMIDLIST pidl,LPCITEMIDLIST item,BOOL32 bEnd)
|
||||
{ FIXME(pidl,"(pidl=%p,pidl=%p,%08u)stub\n",pidl,item,bEnd);
|
||||
return NULL;
|
||||
{ LPITEMIDLIST idlRet;
|
||||
WARN(pidl,"(pidl=%p,pidl=%p,%08u)semi-stub\n",pidl,item,bEnd);
|
||||
pdump (pidl);
|
||||
pdump (item);
|
||||
|
||||
if (_ILIsDesktop(pidl))
|
||||
{ idlRet = ILClone(item);
|
||||
if (pidl)
|
||||
SHFree (pidl);
|
||||
return idlRet;
|
||||
}
|
||||
idlRet=ILCombine(pidl,item);
|
||||
SHFree(pidl);
|
||||
return idlRet;
|
||||
}
|
||||
/*************************************************************************
|
||||
* ILFree [SHELL32.155]
|
||||
|
|
|
@ -451,10 +451,11 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
|
|||
enum
|
||||
{ FT_UNKNOWN= 0x00000000,
|
||||
FT_DIR= 0x00000001,
|
||||
FT_DESKTOP= 0x00000002
|
||||
FT_DESKTOP= 0x00000002,
|
||||
FT_SPECIAL= 0x00000003
|
||||
} tFolder;
|
||||
|
||||
TRACE(shell,"(%04x,%d,%p)\n", hwndOwner,nFolder,ppidl);
|
||||
TRACE(shell,"(%04x,0x%x,%p)\n", hwndOwner,nFolder,ppidl);
|
||||
|
||||
strcpy(buffer,"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders\\");
|
||||
|
||||
|
@ -467,15 +468,15 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
|
|||
tFolder=FT_DIR;
|
||||
switch (nFolder)
|
||||
{ case CSIDL_BITBUCKET:
|
||||
strcpy (buffer,"xxx"); /*not in the registry*/
|
||||
TRACE (shell,"looking for Recycler\n");
|
||||
tFolder=FT_UNKNOWN;
|
||||
break;
|
||||
case CSIDL_CONTROLS:
|
||||
strcpy (buffer,"xxx"); /*virtual folder*/
|
||||
TRACE (shell,"looking for Control\n");
|
||||
strcpy (buffer,"xxx"); /*not in the registry*/
|
||||
TRACE (shell,"looking for Recycler\n");
|
||||
tFolder=FT_UNKNOWN;
|
||||
break;
|
||||
break;
|
||||
case CSIDL_CONTROLS:
|
||||
strcpy (buffer,"xxx"); /*virtual folder*/
|
||||
TRACE (shell,"looking for Control\n");
|
||||
tFolder=FT_UNKNOWN;
|
||||
break;
|
||||
case CSIDL_DESKTOP:
|
||||
strcpy (buffer,"xxx"); /*virtual folder*/
|
||||
TRACE (shell,"looking for Desktop\n");
|
||||
|
@ -487,7 +488,7 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
|
|||
case CSIDL_DRIVES:
|
||||
strcpy (buffer,"xxx"); /*virtual folder*/
|
||||
TRACE (shell,"looking for Drives\n");
|
||||
tFolder=FT_UNKNOWN;
|
||||
tFolder=FT_SPECIAL;
|
||||
break;
|
||||
case CSIDL_FONTS:
|
||||
strcpy (buffer,"Fonts");
|
||||
|
@ -545,7 +546,7 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
|
|||
{ GetWindowsDirectory32A(npath,MAX_PATH);
|
||||
PathAddBackslash(npath);
|
||||
switch (nFolder)
|
||||
{ case CSIDL_DESKTOPDIRECTORY:
|
||||
{ case CSIDL_DESKTOPDIRECTORY:
|
||||
strcat (npath,"Desktop");
|
||||
break;
|
||||
case CSIDL_FONTS:
|
||||
|
@ -554,13 +555,13 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
|
|||
case CSIDL_NETHOOD:
|
||||
strcat (npath,"NetHood");
|
||||
break;
|
||||
case CSIDL_PERSONAL:
|
||||
case CSIDL_PERSONAL:
|
||||
strcpy (npath,"C:\\Personal");
|
||||
break;
|
||||
case CSIDL_FAVORITES:
|
||||
strcat (npath,"Favorites");
|
||||
break;
|
||||
case CSIDL_PRINTERS:
|
||||
case CSIDL_PRINTERS:
|
||||
strcat (npath,"PrintHood");
|
||||
break;
|
||||
case CSIDL_PROGRAMS:
|
||||
|
@ -596,16 +597,19 @@ HRESULT WINAPI SHGetSpecialFolderLocation(HWND32 hwndOwner, INT32 nFolder, LPITE
|
|||
}
|
||||
TRACE(shell,"value %s=%s created\n",buffer,npath);
|
||||
CreateDirectory32A(npath,NULL);
|
||||
strcpy(tpath,npath);
|
||||
strcpy(tpath,npath);
|
||||
}
|
||||
break;
|
||||
case FT_DESKTOP:
|
||||
strcpy (tpath,"Desktop");
|
||||
break;
|
||||
default:
|
||||
RegCloseKey(key);
|
||||
return E_OUTOFMEMORY;
|
||||
strcpy (tpath,"Desktop");
|
||||
break;
|
||||
case FT_SPECIAL:
|
||||
if (nFolder==CSIDL_DRIVES)
|
||||
strcpy (tpath,"My Computer");
|
||||
break;
|
||||
default:
|
||||
RegCloseKey(key);
|
||||
return E_OUTOFMEMORY;
|
||||
}
|
||||
|
||||
RegCloseKey(key);
|
||||
|
|
|
@ -990,54 +990,66 @@ HRESULT WINAPI SHGetDataFromIDListA(DWORD u, DWORD v, DWORD w, DWORD x, DWORD y)
|
|||
return 0;
|
||||
}
|
||||
/*************************************************************************
|
||||
* SHRegCloseKey [SHELL32.505]
|
||||
* SHRegCloseKey32 [NT4.0:SHELL32.505]
|
||||
*
|
||||
* XXX I am not sure if the given param is correct. :-)
|
||||
*/
|
||||
HRESULT WINAPI SHRegCloseKey(HKEY key)
|
||||
{ FIXME(shell,"(0x%08lx)\n", key);
|
||||
/* XXX Is this correct? */
|
||||
return RegCloseKey(key);
|
||||
HRESULT WINAPI SHRegCloseKey32 (HKEY hkey)
|
||||
{ TRACE(shell,"0x%04x\n",hkey);
|
||||
return RegCloseKey( hkey );
|
||||
}
|
||||
/*************************************************************************
|
||||
* SHRegOpenKey32A [SHELL32.506]
|
||||
*
|
||||
* XXX I am not sure if the given param is correct. :-)
|
||||
*/
|
||||
HRESULT WINAPI SHRegOpenKey32A(HKEY hKey, LPSTR lpSubKey, LPHKEY phkResult)
|
||||
{ FIXME(shell,"(0x%08lx, %s, 0x%08lx)\n", hKey, debugstr_a(lpSubKey),
|
||||
{ FIXME(shell,"(0x%08x, %s, %p)\n", hKey, debugstr_a(lpSubKey),
|
||||
phkResult);
|
||||
/* XXX Is this correct? */
|
||||
return RegOpenKey32A(hKey, lpSubKey, phkResult);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHRegOpenKey32W [SHELL32.507]
|
||||
* SHRegOpenKey32W [NT4.0:SHELL32.507]
|
||||
*
|
||||
* XXX I am not sure if the given param is correct. :-)
|
||||
*/
|
||||
HRESULT WINAPI SHRegOpenKey32W(HKEY hKey, LPWSTR lpSubKey, LPHKEY phkResult)
|
||||
{ FIXME(shell,"(0x%08lx, %s, 0x%08lx)\n", hKey, debugstr_w(lpSubKey),
|
||||
phkResult);
|
||||
/* XXX Is this correct? */
|
||||
return RegOpenKey32W(hKey, lpSubKey, phkResult);
|
||||
HRESULT WINAPI SHRegOpenKey32W (HKEY hkey, LPCWSTR lpszSubKey, LPHKEY retkey)
|
||||
{ WARN(shell,"0x%04x %s %p\n",hkey,debugstr_w(lpszSubKey),retkey);
|
||||
return RegOpenKey32W( hkey, lpszSubKey, retkey );
|
||||
}
|
||||
/*************************************************************************
|
||||
* SHRegQueryValueExA [SHELL32.509]
|
||||
*
|
||||
* XXX I know this is not the correct parameter. Check with documentation.
|
||||
*/
|
||||
HRESULT WINAPI SHRegQueryValueEx32A(DWORD u, LPSTR v, DWORD w, DWORD x,
|
||||
DWORD y, DWORD z)
|
||||
{ FIXME(shell,"0x%04lx %s 0x%04lx 0x%04lx 0x%04lx 0x%04lx stub\n",u,debugstr_a(v),w,x,y,z);
|
||||
{ FIXME(shell,"0x%04lx %s 0x%04lx 0x%04lx 0x%04lx 0x%04lx stub\n",
|
||||
u,debugstr_a(v),w,x,y,z);
|
||||
return 0;
|
||||
}
|
||||
/*************************************************************************
|
||||
* SHRegQueryValueEx32W [NT4.0:SHELL32.511]
|
||||
* SHRegQueryValue32W [NT4.0:SHELL32.510]
|
||||
*
|
||||
*/
|
||||
HRESULT WINAPI SHRegQueryValueEx32W (DWORD u, LPWSTR v, DWORD w, DWORD x, DWORD y, DWORD z)
|
||||
{ FIXME(shell,"0x%04lx %s 0x%04lx 0x%04lx 0x%04lx 0x%04lx stub\n",u,debugstr_w(v),w,x,y,z);
|
||||
return 0;
|
||||
HRESULT WINAPI SHRegQueryValue32W (HKEY hkey, LPWSTR lpszSubKey,
|
||||
LPWSTR lpszData, LPDWORD lpcbData )
|
||||
{ WARN(shell,"0x%04x %s %p %p semi-stub\n",
|
||||
hkey, debugstr_w(lpszSubKey), lpszData, lpcbData);
|
||||
return RegQueryValue32W( hkey, lpszSubKey, lpszData, lpcbData );
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SHRegQueryValueEx32W [NT4.0:SHELL32.511]
|
||||
*
|
||||
* FIXME
|
||||
* if the datatype REG_EXPAND_SZ then expand the string and change
|
||||
* *pdwType to REG_SZ.
|
||||
*/
|
||||
HRESULT WINAPI SHRegQueryValueEx32W (HKEY hkey, LPWSTR pszValue, LPDWORD pdwReserved,
|
||||
LPDWORD pdwType, LPVOID pvData, LPDWORD pcbData)
|
||||
{ DWORD ret;
|
||||
WARN(shell,"0x%04x %s %p %p %p %p semi-stub\n",
|
||||
hkey, debugstr_w(pszValue), pdwReserved, pdwType, pvData, pcbData);
|
||||
ret = RegQueryValueEx32W ( hkey, pszValue, pdwReserved, pdwType, pvData, pcbData);
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
|
@ -1072,11 +1084,287 @@ HRESULT WINAPI IsUserAdmin()
|
|||
{ FIXME(shell,"stub\n");
|
||||
return TRUE;
|
||||
}
|
||||
/*************************************************************************
|
||||
* StrRetToStrN [SHELL32.96]
|
||||
*
|
||||
* converts a STRRET to a normal string
|
||||
*
|
||||
* NOTES
|
||||
* FIXME the string handling is to simple (different STRRET choices)
|
||||
* at the moment only CSTR
|
||||
* the pidl is for STRRET OFFSET
|
||||
*/
|
||||
HRESULT WINAPI StrRetToStrN (LPSTR dest, DWORD len, LPSTRRET src, LPITEMIDLIST x)
|
||||
{ FIXME(shell,"dest=0x%p len=0x%lx strret=0x%p pidl=%p stub\n",dest,len,src,x);
|
||||
strncpy(dest,src->u.cStr,len);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* StrChrW [NT 4.0:SHELL32.651]
|
||||
*
|
||||
*/
|
||||
HRESULT WINAPI StrChrW (LPWSTR u, DWORD v)
|
||||
{ FIXME(shell,"%s 0x%lx stub\n",debugstr_w(u),v);
|
||||
return 0;
|
||||
}
|
||||
/*************************************************************************
|
||||
* SHAllocShared [SHELL32.520]
|
||||
*
|
||||
* NOTES
|
||||
* parameter1 is return value from HeapAlloc
|
||||
* parameter2 is equal to the size allocated with HeapAlloc
|
||||
* parameter3 is return value from GetCurrentProcessId
|
||||
*
|
||||
* the return value is posted as lParam with 0x402 (WM_USER+2) to somewhere
|
||||
* WM_USER+2 could be the undocumented CWM_SETPATH
|
||||
* the allocated memory contains a pidl
|
||||
*/
|
||||
HGLOBAL32 WINAPI SHAllocShared(LPVOID psrc, DWORD size, DWORD procID)
|
||||
{ HGLOBAL32 hmem;
|
||||
LPVOID pmem;
|
||||
|
||||
TRACE(shell,"ptr=%p size=0x%04lx procID=0x%04lx\n",psrc,size,procID);
|
||||
hmem = GlobalAlloc32(GMEM_FIXED, size);
|
||||
if (!hmem)
|
||||
return 0;
|
||||
|
||||
pmem = GlobalLock32 (hmem);
|
||||
|
||||
if (! pmem)
|
||||
return 0;
|
||||
|
||||
memcpy (pmem, psrc, size);
|
||||
GlobalUnlock32(hmem);
|
||||
return hmem;
|
||||
}
|
||||
/*************************************************************************
|
||||
* SHLockShared [SHELL32.521]
|
||||
*
|
||||
* NOTES
|
||||
* parameter1 is return value from SHAllocShared
|
||||
* parameter2 is return value from GetCurrentProcessId
|
||||
* the receiver of (WM_USER+2) trys to lock the HANDLE (?)
|
||||
* the returnvalue seems to be a memoryadress
|
||||
*/
|
||||
void * WINAPI SHLockShared(HANDLE32 hmem, DWORD procID)
|
||||
{ TRACE(shell,"handle=0x%04x procID=0x%04lx\n",hmem,procID);
|
||||
return GlobalLock32(hmem);
|
||||
}
|
||||
/*************************************************************************
|
||||
* SHUnlockShared [SHELL32.522]
|
||||
*
|
||||
* NOTES
|
||||
* parameter1 is return value from SHLockShared
|
||||
*/
|
||||
BOOL32 WINAPI SHUnlockShared(HANDLE32 pmem)
|
||||
{ TRACE(shell,"handle=0x%04x\n",pmem);
|
||||
return GlobalUnlock32(pmem);
|
||||
}
|
||||
/*************************************************************************
|
||||
* SHFreeShared [SHELL32.523]
|
||||
*
|
||||
* NOTES
|
||||
* parameter1 is return value from SHAllocShared
|
||||
* parameter2 is return value from GetCurrentProcessId
|
||||
*/
|
||||
HANDLE32 WINAPI SHFreeShared(HANDLE32 hmem, DWORD procID)
|
||||
{ TRACE(shell,"handle=0x%04x 0x%04lx\n",hmem,procID);
|
||||
return GlobalFree32(hmem);
|
||||
}
|
||||
|
||||
/*************************************************************************
|
||||
* SetAppStartingCursor32 [SHELL32.99]
|
||||
*
|
||||
*/
|
||||
HRESULT WINAPI SetAppStartingCursor32(DWORD u, DWORD v)
|
||||
{ FIXME(shell,"0x%04lx 0x%04lx stub\n",u,v );
|
||||
return 0;
|
||||
}
|
||||
/*************************************************************************
|
||||
* SHLoadOLE32 [SHELL32.151]
|
||||
*
|
||||
*/
|
||||
HRESULT WINAPI SHLoadOLE32(DWORD u)
|
||||
{ FIXME(shell,"0x%04lx stub\n",u);
|
||||
return S_OK;
|
||||
}
|
||||
/*************************************************************************
|
||||
* Shell_MergeMenus32 [SHELL32.67]
|
||||
*
|
||||
*/
|
||||
BOOL32 _SHIsMenuSeparator(HMENU32 hm, int i)
|
||||
{
|
||||
MENUITEMINFO32A mii;
|
||||
|
||||
mii.cbSize = sizeof(MENUITEMINFO32A);
|
||||
mii.fMask = MIIM_TYPE;
|
||||
mii.cch = 0; /* WARNING: We MUST initialize it to 0*/
|
||||
if (!GetMenuItemInfo32A(hm, i, TRUE, &mii))
|
||||
{ return(FALSE);
|
||||
}
|
||||
|
||||
if (mii.fType & MFT_SEPARATOR)
|
||||
{ return(TRUE);
|
||||
}
|
||||
|
||||
return(FALSE);
|
||||
}
|
||||
#define MM_ADDSEPARATOR 0x00000001L
|
||||
#define MM_SUBMENUSHAVEIDS 0x00000002L
|
||||
HRESULT WINAPI Shell_MergeMenus32 (HMENU32 hmDst, HMENU32 hmSrc, UINT32 uInsert, UINT32 uIDAdjust, UINT32 uIDAdjustMax, ULONG uFlags)
|
||||
{ int nItem;
|
||||
HMENU32 hmSubMenu;
|
||||
BOOL32 bAlreadySeparated;
|
||||
MENUITEMINFO32A miiSrc;
|
||||
char szName[256];
|
||||
UINT32 uTemp, uIDMax = uIDAdjust;
|
||||
|
||||
FIXME(shell,"hmenu1=0x%04x hmenu2=0x%04x 0x%04x 0x%04x 0x%04x 0x%04lx stub\n",
|
||||
hmDst, hmSrc, uInsert, uIDAdjust, uIDAdjustMax, uFlags);
|
||||
|
||||
if (!hmDst || !hmSrc)
|
||||
{ return uIDMax;
|
||||
}
|
||||
|
||||
nItem = GetMenuItemCount32(hmDst);
|
||||
if (uInsert >= (UINT32)nItem)
|
||||
{ uInsert = (UINT32)nItem;
|
||||
bAlreadySeparated = TRUE;
|
||||
}
|
||||
else
|
||||
{ bAlreadySeparated = _SHIsMenuSeparator(hmDst, uInsert);;
|
||||
}
|
||||
if ((uFlags & MM_ADDSEPARATOR) && !bAlreadySeparated)
|
||||
{ /* Add a separator between the menus */
|
||||
InsertMenu32A(hmDst, uInsert, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
|
||||
bAlreadySeparated = TRUE;
|
||||
}
|
||||
|
||||
|
||||
/* Go through the menu items and clone them*/
|
||||
for (nItem = GetMenuItemCount32(hmSrc) - 1; nItem >= 0; nItem--)
|
||||
{ miiSrc.cbSize = sizeof(MENUITEMINFO32A);
|
||||
miiSrc.fMask = MIIM_STATE | MIIM_ID | MIIM_SUBMENU | MIIM_CHECKMARKS | MIIM_TYPE | MIIM_DATA;
|
||||
/* We need to reset this every time through the loop in case
|
||||
menus DON'T have IDs*/
|
||||
miiSrc.fType = MFT_STRING;
|
||||
miiSrc.dwTypeData = szName;
|
||||
miiSrc.dwItemData = 0;
|
||||
miiSrc.cch = sizeof(szName);
|
||||
|
||||
if (!GetMenuItemInfo32A(hmSrc, nItem, TRUE, &miiSrc))
|
||||
{ continue;
|
||||
}
|
||||
if (miiSrc.fType & MFT_SEPARATOR)
|
||||
{ /* This is a separator; don't put two of them in a row*/
|
||||
if (bAlreadySeparated)
|
||||
{ continue;
|
||||
}
|
||||
bAlreadySeparated = TRUE;
|
||||
}
|
||||
else if (miiSrc.hSubMenu)
|
||||
{ if (uFlags & MM_SUBMENUSHAVEIDS)
|
||||
{ /* Adjust the ID and check it*/
|
||||
miiSrc.wID += uIDAdjust;
|
||||
if (miiSrc.wID > uIDAdjustMax)
|
||||
{ continue;
|
||||
}
|
||||
if (uIDMax <= miiSrc.wID)
|
||||
{ uIDMax = miiSrc.wID + 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{ /* Don't set IDs for submenus that didn't have them already */
|
||||
miiSrc.fMask &= ~MIIM_ID;
|
||||
}
|
||||
hmSubMenu = miiSrc.hSubMenu;
|
||||
miiSrc.hSubMenu = CreatePopupMenu32();
|
||||
if (!miiSrc.hSubMenu)
|
||||
{ return(uIDMax);
|
||||
}
|
||||
uTemp = Shell_MergeMenus32(miiSrc.hSubMenu, hmSubMenu, 0, uIDAdjust, uIDAdjustMax, uFlags&MM_SUBMENUSHAVEIDS);
|
||||
if (uIDMax <= uTemp)
|
||||
{ uIDMax = uTemp;
|
||||
}
|
||||
bAlreadySeparated = FALSE;
|
||||
}
|
||||
else
|
||||
{ /* Adjust the ID and check it*/
|
||||
miiSrc.wID += uIDAdjust;
|
||||
if (miiSrc.wID > uIDAdjustMax)
|
||||
{ continue;
|
||||
}
|
||||
if (uIDMax <= miiSrc.wID)
|
||||
{ uIDMax = miiSrc.wID + 1;
|
||||
}
|
||||
bAlreadySeparated = FALSE;
|
||||
}
|
||||
if (!InsertMenuItem32A(hmDst, uInsert, TRUE, &miiSrc))
|
||||
{ return(uIDMax);
|
||||
}
|
||||
}
|
||||
|
||||
/* Ensure the correct number of separators at the beginning of the
|
||||
inserted menu items*/
|
||||
if (uInsert == 0)
|
||||
{ if (bAlreadySeparated)
|
||||
{ DeleteMenu32(hmDst, uInsert, MF_BYPOSITION);
|
||||
}
|
||||
}
|
||||
else
|
||||
{ if (_SHIsMenuSeparator(hmDst, uInsert-1))
|
||||
{ if (bAlreadySeparated)
|
||||
{ DeleteMenu32(hmDst, uInsert, MF_BYPOSITION);
|
||||
}
|
||||
}
|
||||
else
|
||||
{ if ((uFlags & MM_ADDSEPARATOR) && !bAlreadySeparated)
|
||||
{ /* Add a separator between the menus*/
|
||||
InsertMenu32A(hmDst, uInsert, MF_BYPOSITION | MF_SEPARATOR, 0, NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
return(uIDMax);
|
||||
|
||||
}
|
||||
/*************************************************************************
|
||||
* PathGetDriveNumber32 [SHELL32.57]
|
||||
*
|
||||
*/
|
||||
HRESULT WINAPI PathGetDriveNumber32(LPSTR u)
|
||||
{ FIXME(shell,"%s stub\n",debugstr_a(u));
|
||||
return 0;
|
||||
}
|
||||
/*************************************************************************
|
||||
* DriveType32 [SHELL32.64]
|
||||
*
|
||||
*/
|
||||
HRESULT WINAPI DriveType32(DWORD u)
|
||||
{ FIXME(shell,"0x%04lx stub\n",u);
|
||||
return 0;
|
||||
}
|
||||
/*************************************************************************
|
||||
* SHAbortInvokeCommand [SHELL32.198]
|
||||
*
|
||||
*/
|
||||
HRESULT WINAPI SHAbortInvokeCommand()
|
||||
{ FIXME(shell,"stub\n");
|
||||
return 1;
|
||||
}
|
||||
/*************************************************************************
|
||||
* SHOutOfMemoryMessageBox [SHELL32.126]
|
||||
*
|
||||
*/
|
||||
HRESULT WINAPI SHOutOfMemoryMessageBox(DWORD u, DWORD v, DWORD w)
|
||||
{ FIXME(shell,"0x%04lx 0x%04lx 0x%04lx stub\n",u,v,w);
|
||||
return 0;
|
||||
}
|
||||
/*************************************************************************
|
||||
* SHFlushClipboard [SHELL32.121]
|
||||
*
|
||||
*/
|
||||
HRESULT WINAPI SHFlushClipboard(VOID)
|
||||
HRESULT WINAPI SHFlushClipboard()
|
||||
{ FIXME(shell,"stub\n");
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
|
|
|
@ -242,6 +242,9 @@ static HRESULT WINAPI IShellFolder_ParseDisplayName(
|
|||
{ pidlFull = (LPITEMIDLIST)HeapAlloc(GetProcessHeap(),0,2);
|
||||
pidlFull->mkid.cb = 0;
|
||||
}
|
||||
else if (strcmp(pszTemp,"My Computer")==0)
|
||||
{ pidlFull = _ILCreateMyComputer();
|
||||
}
|
||||
else
|
||||
{ pidlFull = _ILCreateMyComputer();
|
||||
|
||||
|
@ -394,6 +397,8 @@ static HRESULT WINAPI IShellFolder_CompareIDs(LPSHELLFOLDER this,
|
|||
LPCITEMIDLIST pidlTemp1 = pidl1, pidlTemp2 = pidl2;
|
||||
|
||||
TRACE(shell,"(%p)->(0x%08lx,pidl1=%p,pidl2=%p)\n",this,lParam,pidl1,pidl2);
|
||||
pdump (pidl1);
|
||||
pdump (pidl2);
|
||||
|
||||
if (!pidl1 && !pidl2)
|
||||
return 0;
|
||||
|
@ -601,13 +606,13 @@ static HRESULT WINAPI IShellFolder_GetUIObjectOf( LPSHELLFOLDER this,HWND32 hwnd
|
|||
#define GET_SHGDN_RELATION(dwFlags) ((DWORD)dwFlags & (DWORD)0x000000FF)
|
||||
|
||||
static HRESULT WINAPI IShellFolder_GetDisplayNameOf( LPSHELLFOLDER this, LPCITEMIDLIST pidl, DWORD dwFlags, LPSTRRET lpName)
|
||||
{ CHAR szText[MAX_PATH];
|
||||
CHAR szTemp[MAX_PATH];
|
||||
CHAR szSpecial[MAX_PATH];
|
||||
CHAR szDrive[MAX_PATH];
|
||||
DWORD dwVolumeSerialNumber,dwMaximumComponetLength,dwFileSystemFlags;
|
||||
LPITEMIDLIST pidlTemp=NULL;
|
||||
BOOL32 bSimplePidl=FALSE;
|
||||
{ CHAR szText[MAX_PATH];
|
||||
CHAR szTemp[MAX_PATH];
|
||||
CHAR szSpecial[MAX_PATH];
|
||||
CHAR szDrive[MAX_PATH];
|
||||
DWORD dwVolumeSerialNumber,dwMaximumComponetLength,dwFileSystemFlags;
|
||||
LPITEMIDLIST pidlTemp=NULL;
|
||||
BOOL32 bSimplePidl=FALSE;
|
||||
|
||||
TRACE(shell,"(%p)->(pidl=%p,0x%08lx,%p)\n",this,pidl,dwFlags,lpName);
|
||||
|
||||
|
@ -740,7 +745,10 @@ static BOOL32 WINAPI IShellFolder_GetFolderPath(LPSHELLFOLDER this, LPSTR lpszOu
|
|||
}
|
||||
|
||||
*lpszOut=0;
|
||||
|
||||
|
||||
if (! this->mlpszFolder)
|
||||
return FALSE;
|
||||
|
||||
dwSize = strlen (this->mlpszFolder) +1;
|
||||
if ( dwSize > dwOutSize)
|
||||
return FALSE;
|
||||
|
|
|
@ -361,10 +361,10 @@ LRESULT ShellView_OnSize(LPSHELLVIEW this, WORD wWidth, WORD wHeight)
|
|||
* ShellView_BuildFileMenu()
|
||||
*/
|
||||
HMENU32 ShellView_BuildFileMenu(LPSHELLVIEW this)
|
||||
{ CHAR szText[MAX_PATH];
|
||||
{ CHAR szText[MAX_PATH];
|
||||
MENUITEMINFO32A mii;
|
||||
int nTools,i;
|
||||
HMENU32 hSubMenu;
|
||||
int nTools,i;
|
||||
HMENU32 hSubMenu;
|
||||
|
||||
TRACE(shell,"(%p) semi-stub\n",this);
|
||||
|
||||
|
@ -381,7 +381,7 @@ HMENU32 ShellView_BuildFileMenu(LPSHELLVIEW this)
|
|||
mii.cbSize = sizeof(mii);
|
||||
mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
|
||||
|
||||
if(TBSTYLE_SEP != g_Tools[i].bStyle)
|
||||
if(TBSTYLE_SEP != g_Tools[i].bStyle) /* no seperator*/
|
||||
{ mii.fType = MFT_STRING;
|
||||
mii.fState = MFS_ENABLED;
|
||||
mii.dwTypeData = szText;
|
||||
|
@ -394,13 +394,14 @@ HMENU32 ShellView_BuildFileMenu(LPSHELLVIEW this)
|
|||
InsertMenuItem32A(hSubMenu, (UINT32)-1, TRUE, &mii);
|
||||
}
|
||||
}
|
||||
TRACE(shell,"-- return (menu=0x%x)\n",hSubMenu);
|
||||
return hSubMenu;
|
||||
}
|
||||
/**************************************************************************
|
||||
* ShellView_MergeFileMenu()
|
||||
*/
|
||||
void ShellView_MergeFileMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
|
||||
{ MENUITEMINFO32A mii;
|
||||
{ MENUITEMINFO32A mii;
|
||||
CHAR szText[MAX_PATH];
|
||||
|
||||
TRACE(shell,"(%p)->(submenu=0x%08x) stub\n",this,hSubMenu);
|
||||
|
@ -416,7 +417,7 @@ void ShellView_MergeFileMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
|
|||
InsertMenuItem32A(hSubMenu, 0, TRUE, &mii);
|
||||
|
||||
/*add the file menu items */
|
||||
strcpy(szText,"dummy 45");
|
||||
strcpy(szText,"dummy 45");
|
||||
|
||||
mii.cbSize = sizeof(mii);
|
||||
mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
|
||||
|
@ -428,14 +429,15 @@ void ShellView_MergeFileMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
|
|||
/*insert this item at the beginning of the menu */
|
||||
InsertMenuItem32A(hSubMenu, 0, TRUE, &mii);
|
||||
}
|
||||
TRACE(shell,"--\n");
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
* ShellView_MergeViewMenu()
|
||||
*/
|
||||
void ShellView_MergeViewMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
|
||||
{ MENUITEMINFO32A mii;
|
||||
CHAR szText[MAX_PATH];
|
||||
{ MENUITEMINFO32A mii;
|
||||
CHAR szText[MAX_PATH];
|
||||
|
||||
TRACE(shell,"(%p)->(submenu=0x%08x) stub\n",this,hSubMenu);
|
||||
if(hSubMenu)
|
||||
|
@ -448,7 +450,7 @@ void ShellView_MergeViewMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
|
|||
InsertMenuItem32A(hSubMenu, FCIDM_MENU_VIEW_SEP_OPTIONS, FALSE, &mii);
|
||||
|
||||
/*add the view menu items at the correct position in the menu*/
|
||||
strcpy(szText,"Dummy 46");
|
||||
strcpy(szText,"Dummy 46");
|
||||
|
||||
mii.cbSize = sizeof(mii);
|
||||
mii.fMask = MIIM_TYPE | MIIM_ID | MIIM_STATE;
|
||||
|
@ -463,7 +465,7 @@ void ShellView_MergeViewMenu(LPSHELLVIEW this, HMENU32 hSubMenu)
|
|||
* ShellView_UpdateMenu()
|
||||
*/
|
||||
LRESULT ShellView_UpdateMenu(LPSHELLVIEW this, HMENU32 hMenu)
|
||||
{ TRACE(shell,"(%p)->(menu=0x%08x\n",this,hMenu);
|
||||
{ TRACE(shell,"(%p)->(menu=0x%08x)\n",this,hMenu);
|
||||
CheckMenuItem32(hMenu, IDM_VIEW_FILES, MF_BYCOMMAND | (g_bViewKeys ? MF_CHECKED: MF_UNCHECKED));
|
||||
|
||||
if(ShellView_CanDoIDockingWindow(this))
|
||||
|
@ -474,7 +476,7 @@ LRESULT ShellView_UpdateMenu(LPSHELLVIEW this, HMENU32 hMenu)
|
|||
{ EnableMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_DISABLED | MF_GRAYED);
|
||||
CheckMenuItem32(hMenu, IDM_VIEW_IDW, MF_BYCOMMAND | MF_UNCHECKED);
|
||||
}
|
||||
return 0;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -498,7 +500,7 @@ void ShellView_OnDeactivate(LPSHELLVIEW this)
|
|||
}
|
||||
|
||||
/**************************************************************************
|
||||
* CShellView_OnActivate()
|
||||
* ShellView_OnActivate()
|
||||
*/
|
||||
LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState)
|
||||
{ OLEMENUGROUPWIDTHS32 omw = { {0, 0, 0, 0, 0, 0} };
|
||||
|
@ -521,7 +523,7 @@ LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState)
|
|||
|
||||
if(this->hMenu)
|
||||
{ this->pShellBrowser->lpvtbl->fnInsertMenusSB(this->pShellBrowser, this->hMenu, &omw);
|
||||
|
||||
TRACE(shell,"-- after fnInsertMenusSB\n");
|
||||
/*build the top level menu get the menu item's text*/
|
||||
strcpy(szText,"dummy 31");
|
||||
|
||||
|
@ -558,11 +560,13 @@ LRESULT ShellView_OnActivate(LPSHELLVIEW this, UINT32 uState)
|
|||
{ ShellView_MergeFileMenu(this, mii.hSubMenu);
|
||||
}
|
||||
}
|
||||
TRACE(shell,"-- before fnSetMenuSB\n");
|
||||
this->pShellBrowser->lpvtbl->fnSetMenuSB(this->pShellBrowser, this->hMenu, 0, this->hWnd);
|
||||
}
|
||||
}
|
||||
this->uState = uState;
|
||||
return 0;
|
||||
TRACE(shell,"--\n");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
/**************************************************************************
|
||||
|
@ -600,7 +604,7 @@ BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd)
|
|||
LPSERVICEPROVIDER pSP;
|
||||
LPDOCKINGWINDOWFRAME pFrame;
|
||||
|
||||
FIXME(shell,"(%p)->(badd=0x%08x) stub\n",this,bAdd);
|
||||
WARN(shell,"(%p)->(badd=0x%08x) semi-stub\n",this,bAdd);
|
||||
|
||||
/* get the browser's IServiceProvider */
|
||||
hr = this->pShellBrowser->lpvtbl->fnQueryInterface(this->pShellBrowser, (REFIID)&IID_IServiceProvider, (LPVOID*)&pSP);
|
||||
|
@ -610,6 +614,7 @@ BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd)
|
|||
if(SUCCEEDED(hr))
|
||||
{ if(bAdd)
|
||||
{ hr = S_OK;
|
||||
FIXME(shell,"no docking implemented\n");
|
||||
/*if(!this->pDockingWindow)
|
||||
{ //create the toolbar object
|
||||
this->pDockingWindow = DockingWindow_Constructor(this, this->hWnd);
|
||||
|
@ -625,8 +630,9 @@ BOOL32 ShellView_AddRemoveDockingWindow(LPSHELLVIEW this, BOOL32 bAdd)
|
|||
}*/
|
||||
}
|
||||
else
|
||||
{ /*if(this->pDockingWindow)
|
||||
{ hr = pFrame->->lpvtbl->fnRemoveToolbar(pFrame, (IDockingWindow*)this->pDockingWindow, DWFRF_NORMAL);
|
||||
{ FIXME(shell,"no docking implemented\n");
|
||||
/* if(this->pDockingWindow)
|
||||
{ hr = pFrame->lpvtbl->fnRemoveToolbar(pFrame, (IDockingWindow*)this->pDockingWindow, DWFRF_NORMAL);
|
||||
|
||||
if(SUCCEEDED(hr))
|
||||
{ // RemoveToolbar should release the toolbar object which will cause
|
||||
|
@ -820,7 +826,7 @@ void ShellView_DoContextMenu(LPSHELLVIEW this, WORD x, WORD y, BOOL32 fDefault)
|
|||
}
|
||||
else /* we are acting with a full featured IShellBrowser */
|
||||
{ TRACE(shell,"-- fnBrowseObject pidl =%p\n", this->aSelectedItems[0]);
|
||||
wFlags = SBSP_DEFBROWSER | SBSP_DEFMODE | SBSP_RELATIVE;
|
||||
wFlags = SBSP_SAMEBROWSER | SBSP_DEFMODE | SBSP_RELATIVE;
|
||||
this->pShellBrowser->lpvtbl->fnBrowseObject(this->pShellBrowser,
|
||||
this->aSelectedItems[0],
|
||||
wFlags);
|
||||
|
|
|
@ -61,6 +61,9 @@ DEFINE_SHLGUID(IID_IPersist, 0x0000010CL, 0, 0);
|
|||
DEFINE_SHLGUID(IID_IViewObject, 0x0000010DL, 0, 0);
|
||||
DEFINE_SHLGUID(IID_IDataObject, 0x0000010EL, 0, 0);
|
||||
|
||||
DEFINE_SHLGUID(IID_IDropSource, 0x00000121L, 0, 0);
|
||||
DEFINE_SHLGUID(IID_IDropTarget, 0x00000122L, 0, 0);
|
||||
|
||||
DEFINE_GUID (IID_IServiceProvider, 0x6D5140C1L, 0x7436, 0x11CE, 0x80, 0x34, 0x00, 0xAA, 0x00, 0x60, 0x09, 0xFA);
|
||||
DEFINE_GUID (IID_IDockingWindow, 0x012dd920L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
|
||||
DEFINE_GUID (IID_IDockingWindowSite, 0x2A342FC2L, 0x7B26, 0x11D0, 0x8C, 0xA9, 0x00, 0xA0, 0xC9, 0x2D, 0xBF, 0xE8);
|
||||
|
|
|
@ -52,27 +52,27 @@ init Shell32LibMain
|
|||
44 stub DoEnvironmentSubstA # exported by name
|
||||
45 stdcall PathFileExists(str) PathFileExists
|
||||
46 stdcall PathMatchSpec (str str) PathMatchSpec
|
||||
47 stub PathMakeUniqueName
|
||||
48 stub PathSetDlgItemPath
|
||||
49 stub PathQualify
|
||||
47 stub PathMakeUniqueName@20
|
||||
48 stub PathSetDlgItemPath@12
|
||||
49 stub PathQualify@4
|
||||
50 stub PathStripToRoot
|
||||
51 stdcall PathResolve(str long long) PathResolve
|
||||
52 stdcall PathGetArgs(str) PathGetArgs
|
||||
53 stub DoEnvironmentSubstW # exported by name
|
||||
53 stub DoEnvironmentSubstW@8 # exported by name
|
||||
54 stdcall DragAcceptFiles(long long) DragAcceptFiles # exported by name
|
||||
55 stub PathQuoteSpaces
|
||||
56 stdcall PathUnquoteSpaces(str) PathUnquoteSpaces
|
||||
57 stub PathGetDriveNumber
|
||||
57 stdcall PathGetDriveNumber (str) PathGetDriveNumber32
|
||||
58 stdcall ParseField(str long str long) ParseField
|
||||
59 stub RestartDialog
|
||||
60 stdcall ExitWindowsDialog(long) ExitWindowsDialog
|
||||
61 stdcall RunFileDlg(long long long str str long) RunFileDlg
|
||||
62 stdcall PickIconDlg(long long long long) PickIconDlg
|
||||
63 stdcall GetFileNameFromBrowse(long long long long str str str) GetFileNameFromBrowse
|
||||
64 stub DriveType
|
||||
64 stdcall DriveType (long) DriveType32
|
||||
65 stub InvalidateDriveType
|
||||
66 stub IsNetDrive
|
||||
67 stub Shell_MergeMenus
|
||||
67 stdcall Shell_MergeMenus (long long long long long long) Shell_MergeMenus32
|
||||
68 stdcall SHGetSettings(long long long) SHGetSettings
|
||||
69 stub SHGetNetResource
|
||||
70 stub SHCreateDefClassObject
|
||||
|
@ -101,10 +101,10 @@ init Shell32LibMain
|
|||
93 stub Win32CreateDirectory
|
||||
94 stub Win32RemoveDirectory
|
||||
95 stdcall SHLogILFromFSIL (ptr) SHLogILFromFSIL
|
||||
96 stub StrRetToStrN
|
||||
96 stdcall StrRetToStrN (long long long long) StrRetToStrN
|
||||
97 stub SHWaitForFileToOpen
|
||||
98 stub SHGetRealIDL
|
||||
99 stub SetAppStartingCursor
|
||||
98 stdcall SHGetRealIDL (long long long) SHGetRealIDL
|
||||
99 stdcall SetAppStartingCursor (long long) SetAppStartingCursor32
|
||||
100 stdcall SHRestricted(long) SHRestricted
|
||||
101 stub DragQueryFileAorW # exported by name
|
||||
102 stdcall SHCoCreateInstance(ptr ptr long ptr ptr) SHCoCreateInstance
|
||||
|
@ -126,12 +126,12 @@ init Shell32LibMain
|
|||
118 stdcall FileMenu_Destroy (long) FileMenu_Destroy
|
||||
119 stdcall IsLFNDrive(str) IsLFNDrive
|
||||
120 stub FileMenu_AbortInitMenu
|
||||
121 stdcall SHFlushClipboard() SHFlushClipboard
|
||||
121 stdcall SHFlushClipboard () SHFlushClipboard
|
||||
122 stub RunDLL_CallEntry16
|
||||
123 stdcall SHFreeUnusedLibraries (long) SHFreeUnusedLibraries
|
||||
124 stub FileMenu_AppendFilesForPidl
|
||||
125 stub FileMenu_AddFilesForPidl
|
||||
126 stub SHOutOfMemoryMessageBox
|
||||
126 stdcall SHOutOfMemoryMessageBox (long long long) SHOutOfMemoryMessageBox
|
||||
127 stdcall SHWinHelp (long long long long) SHWinHelp
|
||||
128 stdcall DllGetClassObject(long long ptr) SHELL32_DllGetClassObject
|
||||
129 stub DAD_AutoScroll
|
||||
|
@ -156,17 +156,17 @@ init Shell32LibMain
|
|||
148 stdcall ExtractAssociatedIconA(long ptr long) ExtractAssociatedIcon32A # exported by name
|
||||
149 stdcall SHFind_InitMenuPopup(long long long long) SHFind_InitMenuPopup
|
||||
150 stub ExtractAssociatedIconExA # exported by name
|
||||
151 stub SHLoadOLE
|
||||
151 stdcall SHLoadOLE (long) SHLoadOLE32
|
||||
152 stdcall ILGetSize(ptr) ILGetSize
|
||||
153 stdcall ILGetNext(ptr) ILGetNext
|
||||
154 stub ILAppend
|
||||
154 stdcall ILAppend (long long long) ILAppend
|
||||
155 stdcall ILFree(ptr) ILFree
|
||||
156 stub ILGlobalFree
|
||||
157 stdcall ILCreateFromPath (ptr) ILCreateFromPath
|
||||
158 stdcall PathGetExtension(str long long) PathGetExtension
|
||||
159 stub PathIsDirectory
|
||||
160 stub SHNetConnectionDialog
|
||||
161 stdcall SHRunControlPanel (long long)SHRunControlPanel
|
||||
161 stdcall SHRunControlPanel (long long) SHRunControlPanel
|
||||
162 stub SHSimpleIDListFromPath
|
||||
163 stub StrToOleStr
|
||||
164 stub Win32DeleteFile
|
||||
|
@ -203,7 +203,7 @@ init Shell32LibMain
|
|||
195 stdcall SHFree(ptr) SHFree
|
||||
196 stdcall SHAlloc(long) SHAlloc
|
||||
197 stub SHGlobalDefect
|
||||
198 stub SHAbortInvokeCommand
|
||||
198 stdcall SHAbortInvokeCommand () SHAbortInvokeCommand
|
||||
199 stub SHGetFileIcon
|
||||
200 stub SHLocalAlloc
|
||||
201 stub SHLocalFree
|
||||
|
@ -310,7 +310,7 @@ init Shell32LibMain
|
|||
301 stub StrChrA # proper ordinal unknown
|
||||
302 stub StrChrIA # proper ordinal unknown
|
||||
303 stub StrChrIW # proper ordinal unknown
|
||||
304 stub StrChrW # proper ordinal unknown
|
||||
304 stdcall StrChrW (ptr ptr) StrChrW # proper ordinal unknown
|
||||
305 stub StrCmpNA # proper ordinal unknown
|
||||
306 stub StrCmpNIA # proper ordinal unknown
|
||||
307 stub StrCmpNIW # proper ordinal unknown
|
||||
|
@ -337,19 +337,19 @@ init Shell32LibMain
|
|||
328 stub StrStrW # proper ordinal unknown
|
||||
329 stub WOWShellExecute # proper ordinal unknown
|
||||
|
||||
505 stdcall SHRegCloseKey (long) SHRegCloseKey
|
||||
505 stdcall SHRegCloseKey (long) SHRegCloseKey32
|
||||
506 stdcall SHRegOpenKeyA (long str long) SHRegOpenKey32A
|
||||
507 stdcall SHRegOpenKeyW (long wstr long) SHRegOpenKey32W
|
||||
507 stdcall SHRegOpenKeyW (long wstr long long) SHRegOpenKey32W
|
||||
508 stub SHRegQueryValueA@16
|
||||
509 stdcall SHRegQueryValueExA(long str ptr ptr ptr ptr) SHRegQueryValueEx32A
|
||||
510 stub SHRegQueryValueW@16
|
||||
510 stdcall SHRegQueryValueW (long long long long) SHRegQueryValue32W
|
||||
511 stdcall SHRegQueryValueExW (long wstr ptr ptr ptr ptr) SHRegQueryValueEx32W
|
||||
512 stub SHRegDeleteKeyW@8
|
||||
|
||||
520 stub SHAllocShared@12
|
||||
521 stub SHLockShared@8
|
||||
522 stub SHUnlockShared@4
|
||||
523 stub SHFreeShared@8
|
||||
520 stdcall SHAllocShared (long long long) SHAllocShared
|
||||
521 stdcall SHLockShared (long long) SHLockShared
|
||||
522 stdcall SHUnlockShared (long) SHUnlockShared
|
||||
523 stdcall SHFreeShared (long long) SHFreeShared
|
||||
524 stub RealDriveType@8
|
||||
525 stub RealDriveTypeFlags@8
|
||||
|
||||
|
@ -360,13 +360,13 @@ init Shell32LibMain
|
|||
644 stub SHChangeNotification_Lock@16
|
||||
645 stub SHChangeNotification_Unlock@4
|
||||
646 stub SHChangeRegistrationReceive@8
|
||||
647 stub ReceiveAddToRecentDocs
|
||||
647 stub ReceiveAddToRecentDocs@8
|
||||
648 stub SHWaitOp_Operate@8
|
||||
|
||||
650 stub PathIsSameRoot
|
||||
650 stub PathIsSameRoot@8
|
||||
651 stdcall ReadCabinetState (long long) ReadCabinetState
|
||||
652 stdcall WriteCabinetState (long) WriteCabinetState
|
||||
653 stub PathProcessCommand
|
||||
653 stub PathProcessCommand@16
|
||||
|
||||
660 stdcall FileIconInit (long) FileIconInit
|
||||
|
||||
|
|
Loading…
Reference in New Issue