mirror of
https://github.com/reactos/reactos.git
synced 2025-08-07 04:23:02 +00:00
Revert revision 14118 changes
svn path=/trunk/; revision=14134
This commit is contained in:
parent
9189284a9d
commit
534636f9ce
27 changed files with 3202 additions and 4416 deletions
|
@ -37,7 +37,6 @@ C_SRCS = \
|
||||||
shfldr_desktop.c \
|
shfldr_desktop.c \
|
||||||
shfldr_fs.c \
|
shfldr_fs.c \
|
||||||
shfldr_mycomp.c \
|
shfldr_mycomp.c \
|
||||||
shfldr_unixfs.c \
|
|
||||||
shlexec.c \
|
shlexec.c \
|
||||||
shlfileop.c \
|
shlfileop.c \
|
||||||
shlfolder.c \
|
shlfolder.c \
|
||||||
|
@ -78,7 +77,7 @@ version16.res: version16.rc
|
||||||
$(LDPATH) $(RC16) $(RC16FLAGS) -fo$@ $(SRCDIR)/version16.rc
|
$(LDPATH) $(RC16) $(RC16FLAGS) -fo$@ $(SRCDIR)/version16.rc
|
||||||
|
|
||||||
shell.spec.c: shell.spec version16.res
|
shell.spec.c: shell.spec version16.res
|
||||||
$(WINEBUILD) $(DEFS) $(DLLFLAGS) --dll -o $@ --main-module $(MODULE) --res version16.res --export $(SRCDIR)/shell.spec
|
$(WINEBUILD) $(DEFS) $(DLLFLAGS) -o $@ --main-module $(MODULE) --res version16.res --dll $(SRCDIR)/shell.spec
|
||||||
|
|
||||||
authors.c: $(TOPSRCDIR)/AUTHORS
|
authors.c: $(TOPSRCDIR)/AUTHORS
|
||||||
(LC_ALL=C; export LC_ALL; echo 'const char * const SHELL_Authors[] = {' && \
|
(LC_ALL=C; export LC_ALL; echo 'const char * const SHELL_Authors[] = {' && \
|
||||||
|
|
|
@ -55,95 +55,68 @@ static inline DWORD BrowseFlagsToSHCONTF(UINT ulFlags)
|
||||||
return SHCONTF_FOLDERS | (ulFlags & BIF_BROWSEINCLUDEFILES ? SHCONTF_NONFOLDERS : 0);
|
return SHCONTF_FOLDERS | (ulFlags & BIF_BROWSEINCLUDEFILES ? SHCONTF_NONFOLDERS : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* InitializeTreeView [Internal]
|
|
||||||
*
|
|
||||||
* Called from WM_INITDIALOG handler.
|
|
||||||
*
|
|
||||||
* PARAMS
|
|
||||||
* hwndParent [I] The BrowseForFolder dialog
|
|
||||||
* root [I] ITEMIDLIST of the root shell folder
|
|
||||||
*/
|
|
||||||
static void InitializeTreeView(HWND hwndParent, LPCITEMIDLIST root)
|
static void InitializeTreeView(HWND hwndParent, LPCITEMIDLIST root)
|
||||||
{
|
{
|
||||||
LPITEMIDLIST pidlParent, pidlChild;
|
HIMAGELIST hImageList;
|
||||||
HIMAGELIST hImageList;
|
IShellFolder * lpsf;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
IShellFolder *lpsfParent, *lpsfRoot;
|
IEnumIDList * pEnumIL = NULL;
|
||||||
IEnumIDList * pEnumChildren = NULL;
|
LPITEMIDLIST parentofroot;
|
||||||
|
parentofroot = ILClone(root);
|
||||||
|
ILRemoveLastID(parentofroot);
|
||||||
|
|
||||||
TRACE("dlg=%p tree=%p\n", hwndParent, hwndTreeView );
|
hwndTreeView = GetDlgItem (hwndParent, IDD_TREEVIEW);
|
||||||
|
Shell_GetImageList(NULL, &hImageList);
|
||||||
|
|
||||||
hwndTreeView = GetDlgItem (hwndParent, IDD_TREEVIEW);
|
TRACE("dlg=%p tree=%p\n", hwndParent, hwndTreeView );
|
||||||
if (!hwndTreeView) {
|
|
||||||
FIXME("Could not get handle to treeview control! Error: %08lx\n", GetLastError());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
Shell_GetImageList(NULL, &hImageList);
|
|
||||||
|
|
||||||
if (hImageList)
|
if (hImageList && hwndTreeView)
|
||||||
TreeView_SetImageList(hwndTreeView, hImageList, 0);
|
TreeView_SetImageList(hwndTreeView, hImageList, 0);
|
||||||
|
|
||||||
/* We want to call InsertTreeViewItem down the code, in order to insert
|
if (_ILIsDesktop (root)) {
|
||||||
* the root item of the treeview. Due to InsertTreeViewItem's signature,
|
hr = SHGetDesktopFolder(&lpsf);
|
||||||
* we need the following to do this:
|
} else {
|
||||||
*
|
IShellFolder * lpsfdesktop;
|
||||||
* + An ITEMIDLIST corresponding to _the parent_ of root.
|
|
||||||
* + An ITEMIDLIST, which is a relative path from root's parent to root
|
|
||||||
* (containing a single SHITEMID).
|
|
||||||
* + An IShellFolder interface pointer of root's parent folder.
|
|
||||||
*
|
|
||||||
* If root is 'Desktop', then root's parent is also 'Desktop'.
|
|
||||||
*/
|
|
||||||
|
|
||||||
pidlParent = ILClone(root);
|
hr = SHGetDesktopFolder(&lpsfdesktop);
|
||||||
ILRemoveLastID(pidlParent);
|
if (SUCCEEDED(hr)) {
|
||||||
pidlChild = ILClone(ILFindLastID(root));
|
hr = IShellFolder_BindToObject(lpsfdesktop, parentofroot, 0,(REFIID)&IID_IShellFolder,(LPVOID *)&lpsf);
|
||||||
|
IShellFolder_Release(lpsfdesktop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
IShellFolder * pSFRoot;
|
||||||
|
if (_ILIsPidlSimple(root))
|
||||||
|
{
|
||||||
|
pSFRoot = lpsf;
|
||||||
|
IShellFolder_AddRef(pSFRoot);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
hr = IShellFolder_BindToObject(lpsf,ILFindLastID(root),0,&IID_IShellFolder,(LPVOID *)&pSFRoot);
|
||||||
|
if (SUCCEEDED(hr))
|
||||||
|
{
|
||||||
|
hr = IShellFolder_EnumObjects(
|
||||||
|
pSFRoot,
|
||||||
|
hwndParent,
|
||||||
|
BrowseFlagsToSHCONTF(lpBrowseInfo->ulFlags),
|
||||||
|
&pEnumIL);
|
||||||
|
IShellFolder_Release(pSFRoot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (_ILIsDesktop(pidlParent)) {
|
if (SUCCEEDED(hr) && hwndTreeView)
|
||||||
hr = SHGetDesktopFolder(&lpsfParent);
|
{
|
||||||
} else {
|
TreeView_DeleteAllItems(hwndTreeView);
|
||||||
IShellFolder *lpsfDesktop;
|
TreeView_Expand(hwndTreeView,
|
||||||
hr = SHGetDesktopFolder(&lpsfDesktop);
|
InsertTreeViewItem(lpsf, _ILIsPidlSimple(root) ? root : ILFindLastID(root), parentofroot, pEnumIL, TVI_ROOT),
|
||||||
if (!SUCCEEDED(hr)) {
|
TVE_EXPAND);
|
||||||
WARN("SHGetDesktopFolder failed! hr = %08lx\n", hr);
|
}
|
||||||
return;
|
|
||||||
}
|
|
||||||
hr = IShellFolder_BindToObject(lpsfDesktop, pidlParent, 0, &IID_IShellFolder, (LPVOID*)&lpsfParent);
|
|
||||||
IShellFolder_Release(lpsfDesktop);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!SUCCEEDED(hr)) {
|
if (SUCCEEDED(hr))
|
||||||
WARN("Could not bind to parent shell folder! hr = %08lx\n", hr);
|
IShellFolder_Release(lpsf);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (pidlChild && pidlChild->mkid.cb) {
|
TRACE("done\n");
|
||||||
hr = IShellFolder_BindToObject(lpsfParent, pidlChild, 0, &IID_IShellFolder, (LPVOID*)&lpsfRoot);
|
|
||||||
} else {
|
|
||||||
lpsfRoot = lpsfParent;
|
|
||||||
hr = IShellFolder_AddRef(lpsfParent);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!SUCCEEDED(hr)) {
|
|
||||||
WARN("Could not bind to root shell folder! hr = %08lx\n", hr);
|
|
||||||
IShellFolder_Release(lpsfParent);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
hr = IShellFolder_EnumObjects(lpsfRoot, hwndParent, BrowseFlagsToSHCONTF(lpBrowseInfo->ulFlags), &pEnumChildren);
|
|
||||||
if (!SUCCEEDED(hr)) {
|
|
||||||
WARN("Could not get child iterator! hr = %08lx\n", hr);
|
|
||||||
IShellFolder_Release(lpsfParent);
|
|
||||||
IShellFolder_Release(lpsfRoot);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
TreeView_DeleteAllItems(hwndTreeView);
|
|
||||||
TreeView_Expand(hwndTreeView, InsertTreeViewItem(lpsfParent, pidlChild, pidlParent, pEnumChildren, TVI_ROOT), TVE_EXPAND);
|
|
||||||
|
|
||||||
IShellFolder_Release(lpsfRoot);
|
|
||||||
IShellFolder_Release(lpsfParent);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static int GetIcon(LPITEMIDLIST lpi, UINT uFlags)
|
static int GetIcon(LPITEMIDLIST lpi, UINT uFlags)
|
||||||
|
@ -176,27 +149,12 @@ static void GetNormalAndSelectedIcons(LPITEMIDLIST lpifq, LPTVITEMW lpTV_ITEM)
|
||||||
|
|
||||||
typedef struct tagID
|
typedef struct tagID
|
||||||
{
|
{
|
||||||
LPSHELLFOLDER lpsfParent; /* IShellFolder of the parent */
|
LPSHELLFOLDER lpsfParent;
|
||||||
LPITEMIDLIST lpi; /* PIDL relativ to parent */
|
LPITEMIDLIST lpi;
|
||||||
LPITEMIDLIST lpifq; /* Fully qualified PIDL */
|
LPITEMIDLIST lpifq;
|
||||||
IEnumIDList* pEnumIL; /* Children iterator */
|
IEnumIDList* pEnumIL;
|
||||||
} TV_ITEMDATA, *LPTV_ITEMDATA;
|
} TV_ITEMDATA, *LPTV_ITEMDATA;
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* GetName [Internal]
|
|
||||||
*
|
|
||||||
* Query a shell folder for the display name of one of it's children
|
|
||||||
*
|
|
||||||
* PARAMS
|
|
||||||
* lpsf [I] IShellFolder interface of the folder to be queried.
|
|
||||||
* lpi [I] ITEMIDLIST of the child, relative to parent
|
|
||||||
* dwFlags [I] as in IShellFolder::GetDisplayNameOf
|
|
||||||
* lpFriendlyName [O] The desired display name in unicode
|
|
||||||
*
|
|
||||||
* RETURNS
|
|
||||||
* Success: TRUE
|
|
||||||
* Failure: FALSE
|
|
||||||
*/
|
|
||||||
static BOOL GetName(LPSHELLFOLDER lpsf, LPCITEMIDLIST lpi, DWORD dwFlags, LPWSTR lpFriendlyName)
|
static BOOL GetName(LPSHELLFOLDER lpsf, LPCITEMIDLIST lpi, DWORD dwFlags, LPWSTR lpFriendlyName)
|
||||||
{
|
{
|
||||||
BOOL bSuccess=TRUE;
|
BOOL bSuccess=TRUE;
|
||||||
|
@ -217,22 +175,7 @@ static BOOL GetName(LPSHELLFOLDER lpsf, LPCITEMIDLIST lpi, DWORD dwFlags, LPWSTR
|
||||||
return bSuccess;
|
return bSuccess;
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
static HTREEITEM InsertTreeViewItem(IShellFolder * lpsf, LPCITEMIDLIST pidl, LPCITEMIDLIST pidlParent, IEnumIDList* pEnumIL, HTREEITEM hParent)
|
||||||
* InsertTreeViewItem [Internal]
|
|
||||||
*
|
|
||||||
* PARAMS
|
|
||||||
* lpsf [I] IShellFolder interface of the item's parent shell folder
|
|
||||||
* pidl [I] ITEMIDLIST of the child to insert, relativ to parent
|
|
||||||
* pidlParent [I] ITEMIDLIST of the parent shell folder
|
|
||||||
* pEnumIL [I] Iterator for the children of the item to be inserted
|
|
||||||
* hParent [I] The treeview-item that represents the parent shell folder
|
|
||||||
*
|
|
||||||
* RETURNS
|
|
||||||
* Success: Handle to the created and inserted treeview-item
|
|
||||||
* Failure: NULL
|
|
||||||
*/
|
|
||||||
static HTREEITEM InsertTreeViewItem(IShellFolder * lpsf, LPCITEMIDLIST pidl,
|
|
||||||
LPCITEMIDLIST pidlParent, IEnumIDList* pEnumIL, HTREEITEM hParent)
|
|
||||||
{
|
{
|
||||||
TVITEMW tvi;
|
TVITEMW tvi;
|
||||||
TVINSERTSTRUCTW tvins;
|
TVINSERTSTRUCTW tvins;
|
||||||
|
@ -268,18 +211,6 @@ static HTREEITEM InsertTreeViewItem(IShellFolder * lpsf, LPCITEMIDLIST pidl,
|
||||||
return (HTREEITEM)TreeView_InsertItemW(hwndTreeView, &tvins);
|
return (HTREEITEM)TreeView_InsertItemW(hwndTreeView, &tvins);
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************
|
|
||||||
* FillTreeView [Internal]
|
|
||||||
*
|
|
||||||
* For each child (given by lpe) of the parent shell folder, which is given by
|
|
||||||
* lpsf and whose PIDL is pidl, insert a treeview-item right under hParent
|
|
||||||
*
|
|
||||||
* PARAMS
|
|
||||||
* lpsf [I] IShellFolder interface of the parent shell folder
|
|
||||||
* pidl [I] ITEMIDLIST of the parent shell folder
|
|
||||||
* hParent [I] The treeview item that represents the parent shell folder
|
|
||||||
* lpe [I] An iterator for the children of the parent shell folder
|
|
||||||
*/
|
|
||||||
static void FillTreeView(IShellFolder * lpsf, LPITEMIDLIST pidl, HTREEITEM hParent, IEnumIDList* lpe)
|
static void FillTreeView(IShellFolder * lpsf, LPITEMIDLIST pidl, HTREEITEM hParent, IEnumIDList* lpe)
|
||||||
{
|
{
|
||||||
HTREEITEM hPrev = 0;
|
HTREEITEM hPrev = 0;
|
||||||
|
@ -288,11 +219,7 @@ static void FillTreeView(IShellFolder * lpsf, LPITEMIDLIST pidl, HTREEITEM hPar
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
HWND hwnd=GetParent(hwndTreeView);
|
HWND hwnd=GetParent(hwndTreeView);
|
||||||
|
|
||||||
TRACE("%p %p %x %p\n",lpsf, pidl, (INT)hParent, lpe);
|
TRACE("%p %p %x\n",lpsf, pidl, (INT)hParent);
|
||||||
|
|
||||||
/* No IEnumIDList -> No children */
|
|
||||||
if (!lpe) return;
|
|
||||||
|
|
||||||
SetCapture(GetParent(hwndTreeView));
|
SetCapture(GetParent(hwndTreeView));
|
||||||
SetCursor(LoadCursorA(0, (LPSTR)IDC_WAIT));
|
SetCursor(LoadCursorA(0, (LPSTR)IDC_WAIT));
|
||||||
|
|
||||||
|
|
|
@ -116,7 +116,7 @@ BOOL HCR_MapTypeToValueA(LPCSTR szExtension, LPSTR szFileType, DWORD len, BOOL b
|
||||||
|
|
||||||
BOOL HCR_GetExecuteCommandW( HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len )
|
BOOL HCR_GetExecuteCommandW( HKEY hkeyClass, LPCWSTR szClass, LPCWSTR szVerb, LPWSTR szDest, DWORD len )
|
||||||
{
|
{
|
||||||
static const WCHAR swShell[] = {'s','h','e','l','l','\\',0};
|
static const WCHAR swShell[] = {'\\','s','h','e','l','l','\\',0};
|
||||||
static const WCHAR swCommand[] = {'\\','c','o','m','m','a','n','d',0};
|
static const WCHAR swCommand[] = {'\\','c','o','m','m','a','n','d',0};
|
||||||
BOOL ret = FALSE;
|
BOOL ret = FALSE;
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
* - a right mousebutton-copy sets the following formats:
|
* - a right mousebutton-copy sets the following formats:
|
||||||
* classic:
|
* classic:
|
||||||
* Shell IDList Array
|
* Shell IDList Array
|
||||||
* Preferred Drop Effect
|
* Prefered Drop Effect
|
||||||
* Shell Object Offsets
|
* Shell Object Offsets
|
||||||
* HDROP
|
* HDROP
|
||||||
* FileName
|
* FileName
|
||||||
|
|
|
@ -127,9 +127,9 @@ INT_PTR CALLBACK RunDlgProc (HWND hwnd, UINT message, WPARAM wParam, LPARAM lPar
|
||||||
case WM_INITDIALOG :
|
case WM_INITDIALOG :
|
||||||
prfdp = (RUNFILEDLGPARAMS *)lParam ;
|
prfdp = (RUNFILEDLGPARAMS *)lParam ;
|
||||||
SetWindowTextA (hwnd, prfdp->lpstrTitle) ;
|
SetWindowTextA (hwnd, prfdp->lpstrTitle) ;
|
||||||
SetClassLongPtrW (hwnd, GCLP_HICON, (LPARAM)prfdp->hIcon) ;
|
SetClassLongA (hwnd, GCL_HICON, (LPARAM)prfdp->hIcon) ;
|
||||||
SendMessageW (GetDlgItem (hwnd, 12297), STM_SETICON,
|
SendMessageA (GetDlgItem (hwnd, 12297), STM_SETICON,
|
||||||
(WPARAM)LoadIconW (NULL, (LPCWSTR)IDI_WINLOGO), 0);
|
(WPARAM)LoadIconA (NULL, (LPSTR)IDI_WINLOGO), 0);
|
||||||
FillList (GetDlgItem (hwnd, 12298), NULL) ;
|
FillList (GetDlgItem (hwnd, 12298), NULL) ;
|
||||||
SetFocus (GetDlgItem (hwnd, 12298)) ;
|
SetFocus (GetDlgItem (hwnd, 12298)) ;
|
||||||
return TRUE ;
|
return TRUE ;
|
||||||
|
@ -283,7 +283,7 @@ void FillList (HWND hCb, char *pszLatest)
|
||||||
|
|
||||||
if (NULL != pszLatest)
|
if (NULL != pszLatest)
|
||||||
{
|
{
|
||||||
if (!lstrcmpiA(pszCmd, pszLatest))
|
if (!strcasecmp (pszCmd, pszLatest))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
sprintf (szDbgMsg, "Found existing (%d).\n", Nix) ;
|
sprintf (szDbgMsg, "Found existing (%d).\n", Nix) ;
|
||||||
|
|
|
@ -25,7 +25,6 @@
|
||||||
#define COBJMACROS
|
#define COBJMACROS
|
||||||
|
|
||||||
#include "wine/debug.h"
|
#include "wine/debug.h"
|
||||||
#include "wine/unicode.h"
|
|
||||||
#include "windef.h"
|
#include "windef.h"
|
||||||
#include "winbase.h"
|
#include "winbase.h"
|
||||||
#include "winreg.h"
|
#include "winreg.h"
|
||||||
|
@ -104,27 +103,24 @@ BOOL AddToEnumList(
|
||||||
*/
|
*/
|
||||||
BOOL CreateFolderEnumList(
|
BOOL CreateFolderEnumList(
|
||||||
IEnumIDList *list,
|
IEnumIDList *list,
|
||||||
LPCWSTR lpszPath,
|
LPCSTR lpszPath,
|
||||||
DWORD dwFlags)
|
DWORD dwFlags)
|
||||||
{
|
{
|
||||||
LPITEMIDLIST pidl=NULL;
|
LPITEMIDLIST pidl=NULL;
|
||||||
WIN32_FIND_DATAW stffile;
|
WIN32_FIND_DATAA stffile;
|
||||||
HANDLE hFile;
|
HANDLE hFile;
|
||||||
WCHAR szPath[MAX_PATH];
|
CHAR szPath[MAX_PATH];
|
||||||
BOOL succeeded = TRUE;
|
BOOL succeeded = TRUE;
|
||||||
const static WCHAR stars[] = { '*','.','*',0 };
|
|
||||||
const static WCHAR dot[] = { '.',0 };
|
|
||||||
const static WCHAR dotdot[] = { '.','.',0 };
|
|
||||||
|
|
||||||
TRACE("(%p)->(path=%s flags=0x%08lx) \n",list,debugstr_w(lpszPath),dwFlags);
|
TRACE("(%p)->(path=%s flags=0x%08lx) \n",list,debugstr_a(lpszPath),dwFlags);
|
||||||
|
|
||||||
if(!lpszPath || !lpszPath[0]) return FALSE;
|
if(!lpszPath || !lpszPath[0]) return FALSE;
|
||||||
|
|
||||||
strcpyW(szPath, lpszPath);
|
strcpy(szPath, lpszPath);
|
||||||
PathAddBackslashW(szPath);
|
PathAddBackslashA(szPath);
|
||||||
strcatW(szPath,stars);
|
strcat(szPath,"*.*");
|
||||||
|
|
||||||
hFile = FindFirstFileW(szPath,&stffile);
|
hFile = FindFirstFileA(szPath,&stffile);
|
||||||
if ( hFile != INVALID_HANDLE_VALUE )
|
if ( hFile != INVALID_HANDLE_VALUE )
|
||||||
{
|
{
|
||||||
BOOL findFinished = FALSE;
|
BOOL findFinished = FALSE;
|
||||||
|
@ -136,21 +132,21 @@ BOOL CreateFolderEnumList(
|
||||||
{
|
{
|
||||||
if ( (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
|
if ( (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
|
||||||
dwFlags & SHCONTF_FOLDERS &&
|
dwFlags & SHCONTF_FOLDERS &&
|
||||||
strcmpW(stffile.cFileName, dot) && strcmpW(stffile.cFileName, dotdot))
|
strcmp (stffile.cFileName, ".") && strcmp (stffile.cFileName, ".."))
|
||||||
{
|
{
|
||||||
pidl = _ILCreateFromFindDataW(&stffile);
|
pidl = _ILCreateFromFindDataA(&stffile);
|
||||||
succeeded = succeeded && AddToEnumList(list, pidl);
|
succeeded = succeeded && AddToEnumList(list, pidl);
|
||||||
}
|
}
|
||||||
else if (!(stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
else if (!(stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
|
||||||
&& dwFlags & SHCONTF_NONFOLDERS)
|
&& dwFlags & SHCONTF_NONFOLDERS)
|
||||||
{
|
{
|
||||||
pidl = _ILCreateFromFindDataW(&stffile);
|
pidl = _ILCreateFromFindDataA(&stffile);
|
||||||
succeeded = succeeded && AddToEnumList(list, pidl);
|
succeeded = succeeded && AddToEnumList(list, pidl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (succeeded)
|
if (succeeded)
|
||||||
{
|
{
|
||||||
if (!FindNextFileW(hFile, &stffile))
|
if (!FindNextFileA(hFile, &stffile))
|
||||||
{
|
{
|
||||||
if (GetLastError() == ERROR_NO_MORE_FILES)
|
if (GetLastError() == ERROR_NO_MORE_FILES)
|
||||||
findFinished = TRUE;
|
findFinished = TRUE;
|
||||||
|
|
|
@ -25,6 +25,6 @@ BOOL AddToEnumList(IEnumIDList *list, LPITEMIDLIST pidl);
|
||||||
/* Enumerates the folders and/or files (depending on dwFlags) in lpszPath and
|
/* Enumerates the folders and/or files (depending on dwFlags) in lpszPath and
|
||||||
* adds them to the already-created list.
|
* adds them to the already-created list.
|
||||||
*/
|
*/
|
||||||
BOOL CreateFolderEnumList(IEnumIDList *list, LPCWSTR lpszPath, DWORD dwFlags);
|
BOOL CreateFolderEnumList(IEnumIDList *list, LPCSTR lpszPath, DWORD dwFlags);
|
||||||
|
|
||||||
#endif /* ndef __ENUMIDLIST_H__ */
|
#endif /* ndef __ENUMIDLIST_H__ */
|
||||||
|
|
|
@ -328,7 +328,7 @@ static HRESULT WINAPI IExtractIconW_fnGetIconLocation(
|
||||||
|
|
||||||
found = TRUE;
|
found = TRUE;
|
||||||
}
|
}
|
||||||
else if (!lstrcmpiA(sTemp, "lnkfile"))
|
else if (!strcasecmp(sTemp, "lnkfile"))
|
||||||
{
|
{
|
||||||
/* extract icon from shell shortcut */
|
/* extract icon from shell shortcut */
|
||||||
IShellFolder* dsf;
|
IShellFolder* dsf;
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -208,14 +208,11 @@ LPITEMIDLIST _ILCreateGuid(PIDLTYPE type, REFIID guid);
|
||||||
|
|
||||||
/* Like _ILCreateGuid, but using the string szGUID. */
|
/* Like _ILCreateGuid, but using the string szGUID. */
|
||||||
LPITEMIDLIST _ILCreateGuidFromStrA(LPCSTR szGUID);
|
LPITEMIDLIST _ILCreateGuidFromStrA(LPCSTR szGUID);
|
||||||
LPITEMIDLIST _ILCreateGuidFromStrW(LPCWSTR szGUID);
|
|
||||||
|
|
||||||
/* Commonly used PIDLs representing file system objects. */
|
/* Commonly used PIDLs representing file system objects. */
|
||||||
LPITEMIDLIST _ILCreateDesktop (void);
|
LPITEMIDLIST _ILCreateDesktop (void);
|
||||||
LPITEMIDLIST _ILCreateFromFindDataA(WIN32_FIND_DATAA *stffile);
|
LPITEMIDLIST _ILCreateFromFindDataA(WIN32_FIND_DATAA *stffile);
|
||||||
LPITEMIDLIST _ILCreateFromFindDataW(WIN32_FIND_DATAW *stffile);
|
|
||||||
HRESULT _ILCreateFromPathA (LPCSTR szPath, LPITEMIDLIST* ppidl);
|
HRESULT _ILCreateFromPathA (LPCSTR szPath, LPITEMIDLIST* ppidl);
|
||||||
HRESULT _ILCreateFromPathW (LPCWSTR szPath, LPITEMIDLIST* ppidl);
|
|
||||||
|
|
||||||
/* Other helpers */
|
/* Other helpers */
|
||||||
LPITEMIDLIST _ILCreateMyComputer (void);
|
LPITEMIDLIST _ILCreateMyComputer (void);
|
||||||
|
|
|
@ -3,186 +3,193 @@
|
||||||
# win95 and winNT dlls import shell32.dll by ordinal)
|
# win95 and winNT dlls import shell32.dll by ordinal)
|
||||||
# This list was updated to dll version 4.72
|
# This list was updated to dll version 4.72
|
||||||
|
|
||||||
2 stdcall -noname SHChangeNotifyRegister(long long long long long ptr)
|
2 stdcall SHChangeNotifyRegister(long long long long long ptr)
|
||||||
4 stdcall -noname SHChangeNotifyDeregister(long)
|
4 stdcall SHChangeNotifyDeregister (long)
|
||||||
5 stdcall -noname SHChangeNotifyUpdateEntryList(long long long long)
|
5 stdcall SHChangeNotifyUpdateEntryList (long long long long)
|
||||||
9 stub -noname PifMgr_OpenProperties
|
9 stub PifMgr_OpenProperties
|
||||||
10 stub -noname PifMgr_GetProperties
|
10 stub PifMgr_GetProperties
|
||||||
11 stub -noname PifMgr_SetProperties
|
11 stub PifMgr_SetProperties
|
||||||
13 stub -noname PifMgr_CloseProperties
|
13 stub PifMgr_CloseProperties
|
||||||
15 stdcall -noname ILGetDisplayName(ptr ptr)
|
15 stdcall ILGetDisplayName(ptr ptr)
|
||||||
16 stdcall -noname ILFindLastID(ptr)
|
16 stdcall ILFindLastID(ptr)
|
||||||
17 stdcall -noname ILRemoveLastID(ptr)
|
17 stdcall ILRemoveLastID(ptr)
|
||||||
18 stdcall -noname ILClone(ptr)
|
18 stdcall ILClone(ptr)
|
||||||
19 stdcall -noname ILCloneFirst(ptr)
|
19 stdcall ILCloneFirst (ptr)
|
||||||
20 stdcall -noname ILGlobalClone(ptr)
|
20 stdcall ILGlobalClone (ptr)
|
||||||
21 stdcall -noname ILIsEqual(ptr ptr)
|
21 stdcall ILIsEqual (ptr ptr)
|
||||||
23 stdcall -noname ILIsParent(ptr ptr long)
|
23 stdcall ILIsParent (ptr ptr long)
|
||||||
24 stdcall -noname ILFindChild(ptr ptr)
|
24 stdcall ILFindChild (ptr ptr)
|
||||||
25 stdcall -noname ILCombine(ptr ptr)
|
25 stdcall ILCombine(ptr ptr)
|
||||||
26 stdcall -noname ILLoadFromStream(ptr ptr)
|
26 stdcall ILLoadFromStream (ptr ptr)
|
||||||
27 stdcall -noname ILSaveToStream(ptr ptr)
|
27 stdcall ILSaveToStream(ptr ptr)
|
||||||
28 stdcall -noname SHILCreateFromPath(ptr ptr ptr) SHILCreateFromPathAW
|
28 stdcall SHILCreateFromPath(ptr ptr ptr) SHILCreateFromPathAW
|
||||||
29 stdcall -noname PathIsRoot(ptr) PathIsRootAW
|
29 stdcall PathIsRoot(ptr) PathIsRootAW
|
||||||
30 stdcall -noname PathBuildRoot(ptr long) PathBuildRootAW
|
30 stdcall PathBuildRoot(ptr long) PathBuildRootAW
|
||||||
31 stdcall -noname PathFindExtension(ptr) PathFindExtensionAW
|
31 stdcall PathFindExtension(ptr) PathFindExtensionAW
|
||||||
32 stdcall -noname PathAddBackslash(ptr) PathAddBackslashAW
|
32 stdcall PathAddBackslash(ptr) PathAddBackslashAW
|
||||||
33 stdcall -noname PathRemoveBlanks(ptr) PathRemoveBlanksAW
|
33 stdcall PathRemoveBlanks(ptr) PathRemoveBlanksAW
|
||||||
34 stdcall -noname PathFindFileName(ptr) PathFindFileNameAW
|
34 stdcall PathFindFileName(ptr) PathFindFileNameAW
|
||||||
35 stdcall -noname PathRemoveFileSpec(ptr) PathRemoveFileSpecAW
|
35 stdcall PathRemoveFileSpec(ptr) PathRemoveFileSpecAW
|
||||||
36 stdcall -noname PathAppend(ptr ptr) PathAppendAW
|
36 stdcall PathAppend(ptr ptr) PathAppendAW
|
||||||
37 stdcall -noname PathCombine(ptr ptr ptr) PathCombineAW
|
37 stdcall PathCombine(ptr ptr ptr) PathCombineAW
|
||||||
38 stdcall -noname PathStripPath(ptr)PathStripPathAW
|
38 stdcall PathStripPath(ptr)PathStripPathAW
|
||||||
39 stdcall -noname PathIsUNC(ptr) PathIsUNCAW
|
39 stdcall PathIsUNC (ptr) PathIsUNCAW
|
||||||
40 stdcall -noname PathIsRelative(ptr) PathIsRelativeAW
|
40 stdcall PathIsRelative (ptr) PathIsRelativeAW
|
||||||
41 stdcall -noname IsLFNDriveA(str)
|
41 stdcall IsLFNDriveA(str)
|
||||||
42 stdcall -noname IsLFNDriveW(wstr)
|
42 stdcall IsLFNDriveW(wstr)
|
||||||
43 stdcall -noname PathIsExe(ptr) PathIsExeAW
|
43 stdcall PathIsExe (ptr) PathIsExeAW
|
||||||
45 stdcall -noname PathFileExists(ptr) PathFileExistsAW
|
45 stdcall PathFileExists(ptr) PathFileExistsAW
|
||||||
46 stdcall -noname PathMatchSpec(ptr ptr) PathMatchSpecAW
|
46 stdcall PathMatchSpec (ptr ptr) PathMatchSpecAW
|
||||||
47 stdcall -noname PathMakeUniqueName(ptr long ptr ptr ptr)PathMakeUniqueNameAW
|
47 stdcall PathMakeUniqueName (ptr long ptr ptr ptr)PathMakeUniqueNameAW
|
||||||
48 stdcall -noname PathSetDlgItemPath(long long ptr) PathSetDlgItemPathAW
|
48 stdcall PathSetDlgItemPath (long long ptr) PathSetDlgItemPathAW
|
||||||
49 stdcall -noname PathQualify(ptr) PathQualifyAW
|
49 stdcall PathQualify (ptr) PathQualifyAW
|
||||||
50 stdcall -noname PathStripToRoot(ptr) PathStripToRootAW
|
50 stdcall PathStripToRoot (ptr) PathStripToRootAW
|
||||||
51 stdcall -noname PathResolve(str long long) PathResolveAW
|
51 stdcall PathResolve(str long long) PathResolveAW
|
||||||
52 stdcall -noname PathGetArgs(str) PathGetArgsAW
|
52 stdcall PathGetArgs(str) PathGetArgsAW
|
||||||
53 stdcall DoEnvironmentSubst(long long) DoEnvironmentSubstAW
|
53 stdcall DoEnvironmentSubst (long long) DoEnvironmentSubstAW
|
||||||
55 stdcall -noname PathQuoteSpaces(ptr) PathQuoteSpacesAW
|
54 stdcall DragAcceptFiles(long long)
|
||||||
56 stdcall -noname PathUnquoteSpaces(str) PathUnquoteSpacesAW
|
55 stdcall PathQuoteSpaces (ptr) PathQuoteSpacesAW
|
||||||
57 stdcall -noname PathGetDriveNumber(str) PathGetDriveNumberAW
|
56 stdcall PathUnquoteSpaces(str) PathUnquoteSpacesAW
|
||||||
58 stdcall -noname ParseField(str long ptr long) ParseFieldAW
|
57 stdcall PathGetDriveNumber (str) PathGetDriveNumberAW
|
||||||
59 stdcall -noname RestartDialog(long wstr long)
|
58 stdcall ParseField(str long ptr long) ParseFieldAW
|
||||||
60 stdcall -noname ExitWindowsDialog(long)
|
59 stdcall RestartDialog(long wstr long)
|
||||||
61 stdcall -noname RunFileDlg(long long long str str long)
|
60 stdcall ExitWindowsDialog(long)
|
||||||
62 stdcall -noname PickIconDlg(long long long long)
|
61 stdcall RunFileDlg(long long long str str long)
|
||||||
63 stdcall -noname GetFileNameFromBrowse(long long long long str str str)
|
62 stdcall PickIconDlg(long long long long)
|
||||||
64 stdcall -noname DriveType(long)
|
63 stdcall GetFileNameFromBrowse(long long long long str str str)
|
||||||
65 stub -noname InvalidateDriveType
|
64 stdcall DriveType (long)
|
||||||
66 stdcall -noname IsNetDrive(long)
|
65 stub InvalidateDriveType
|
||||||
67 stdcall -noname Shell_MergeMenus(long long long long long long)
|
66 stdcall IsNetDrive(long)
|
||||||
68 stdcall -noname SHGetSetSettings(ptr long long)
|
67 stdcall Shell_MergeMenus (long long long long long long)
|
||||||
69 stub -noname SHGetNetResource
|
68 stdcall SHGetSetSettings(ptr long long)
|
||||||
70 stdcall -noname SHCreateDefClassObject(long long long long long)
|
69 stub SHGetNetResource
|
||||||
71 stdcall -noname Shell_GetImageList(ptr ptr)
|
70 stdcall SHCreateDefClassObject(long long long long long)
|
||||||
72 stdcall -noname Shell_GetCachedImageIndex(ptr ptr long) Shell_GetCachedImageIndexAW
|
71 stdcall Shell_GetImageList(ptr ptr)
|
||||||
73 stdcall -noname SHShellFolderView_Message(long long long)
|
72 stdcall Shell_GetCachedImageIndex(ptr ptr long) Shell_GetCachedImageIndexAW
|
||||||
74 stdcall -noname SHCreateStdEnumFmtEtc(long ptr ptr)
|
73 stdcall SHShellFolderView_Message(long long long)
|
||||||
75 stdcall -noname PathYetAnotherMakeUniqueName(ptr wstr wstr wstr)
|
74 stdcall SHCreateStdEnumFmtEtc(long ptr ptr)
|
||||||
|
75 stdcall PathYetAnotherMakeUniqueName(ptr wstr wstr wstr)
|
||||||
76 stub DragQueryInfo
|
76 stub DragQueryInfo
|
||||||
77 stdcall -noname SHMapPIDLToSystemImageListIndex(ptr ptr ptr)
|
77 stdcall SHMapPIDLToSystemImageListIndex(ptr ptr ptr)
|
||||||
78 stdcall -noname OleStrToStrN(str long wstr long) OleStrToStrNAW
|
78 stdcall OleStrToStrN(str long wstr long) OleStrToStrNAW
|
||||||
79 stdcall -noname StrToOleStrN(wstr long str long) StrToOleStrNAW
|
79 stdcall StrToOleStrN(wstr long str long) StrToOleStrNAW
|
||||||
83 stdcall -noname CIDLData_CreateFromIDArray(ptr long ptr ptr)
|
80 stdcall DragFinish(long)
|
||||||
|
81 stdcall DragQueryFile(long long ptr long) DragQueryFileA
|
||||||
|
82 stdcall DragQueryFileA(long long ptr long)
|
||||||
|
83 stdcall CIDLData_CreateFromIDArray(ptr long ptr ptr)
|
||||||
84 stub SHIsBadInterfacePtr
|
84 stub SHIsBadInterfacePtr
|
||||||
85 stdcall -noname OpenRegStream(long str str long) shlwapi.SHOpenRegStreamA
|
85 stdcall OpenRegStream(long str str long) shlwapi.SHOpenRegStreamA
|
||||||
86 stdcall -noname SHRegisterDragDrop(long ptr)
|
86 stdcall SHRegisterDragDrop(long ptr)
|
||||||
87 stdcall -noname SHRevokeDragDrop(long)
|
87 stdcall SHRevokeDragDrop(long)
|
||||||
88 stdcall -noname SHDoDragDrop(long ptr ptr long ptr)
|
88 stdcall SHDoDragDrop(long ptr ptr long ptr)
|
||||||
89 stdcall -noname SHCloneSpecialIDList(long long long)
|
89 stdcall SHCloneSpecialIDList(long long long)
|
||||||
90 stdcall -noname SHFindFiles(ptr ptr)
|
90 stdcall SHFindFiles(ptr ptr)
|
||||||
91 stub SHFindComputer
|
91 stub SHFindComputer
|
||||||
92 stdcall -noname PathGetShortPath(ptr) PathGetShortPathAW
|
92 stdcall PathGetShortPath (ptr) PathGetShortPathAW
|
||||||
93 stdcall -noname Win32CreateDirectory(wstr ptr) Win32CreateDirectoryAW
|
93 stdcall Win32CreateDirectory(wstr ptr) Win32CreateDirectoryAW
|
||||||
94 stdcall -noname Win32RemoveDirectory(wstr) Win32RemoveDirectoryAW
|
94 stdcall Win32RemoveDirectory(wstr) Win32RemoveDirectoryAW
|
||||||
95 stdcall -noname SHLogILFromFSIL(ptr)
|
95 stdcall SHLogILFromFSIL (ptr)
|
||||||
96 stdcall -noname StrRetToStrN(ptr long ptr ptr) StrRetToStrNAW
|
96 stdcall StrRetToStrN (ptr long ptr ptr) StrRetToStrNAW
|
||||||
97 stdcall -noname SHWaitForFileToOpen (long long long)
|
97 stdcall SHWaitForFileToOpen (long long long)
|
||||||
98 stdcall -noname SHGetRealIDL(ptr ptr ptr)
|
98 stdcall SHGetRealIDL (ptr ptr ptr)
|
||||||
99 stdcall -noname SetAppStartingCursor(long long)
|
99 stdcall SetAppStartingCursor (long long)
|
||||||
100 stdcall -noname SHRestricted(long)
|
100 stdcall SHRestricted(long)
|
||||||
|
|
||||||
102 stdcall -noname SHCoCreateInstance(wstr ptr long ptr ptr)
|
102 stdcall SHCoCreateInstance(wstr ptr long ptr ptr)
|
||||||
103 stdcall -noname SignalFileOpen(long)
|
103 stdcall SignalFileOpen(long)
|
||||||
104 stdcall -noname FileMenu_DeleteAllItems(long)
|
104 stdcall FileMenu_DeleteAllItems(long)
|
||||||
105 stdcall -noname FileMenu_DrawItem(long ptr)
|
105 stdcall FileMenu_DrawItem(long ptr)
|
||||||
106 stdcall -noname FileMenu_FindSubMenuByPidl(long ptr)
|
106 stdcall FileMenu_FindSubMenuByPidl(long ptr)
|
||||||
107 stdcall -noname FileMenu_GetLastSelectedItemPidls(long ptr ptr)
|
107 stdcall FileMenu_GetLastSelectedItemPidls(long ptr ptr)
|
||||||
108 stdcall -noname FileMenu_HandleMenuChar(long long)
|
108 stdcall FileMenu_HandleMenuChar(long long)
|
||||||
109 stdcall -noname FileMenu_InitMenuPopup(long)
|
109 stdcall FileMenu_InitMenuPopup (long)
|
||||||
110 stdcall -noname FileMenu_InsertUsingPidl (long long ptr long long ptr)
|
110 stdcall FileMenu_InsertUsingPidl (long long ptr long long ptr)
|
||||||
111 stdcall -noname FileMenu_Invalidate(long)
|
111 stdcall FileMenu_Invalidate (long)
|
||||||
112 stdcall -noname FileMenu_MeasureItem(long ptr)
|
112 stdcall FileMenu_MeasureItem(long ptr)
|
||||||
113 stdcall -noname FileMenu_ReplaceUsingPidl(long long ptr long ptr)
|
113 stdcall FileMenu_ReplaceUsingPidl (long long ptr long ptr)
|
||||||
114 stdcall -noname FileMenu_Create(long long long long long)
|
114 stdcall FileMenu_Create (long long long long long)
|
||||||
115 stdcall -noname FileMenu_AppendItem(long ptr long long long long) FileMenu_AppendItemAW
|
115 stdcall FileMenu_AppendItem (long ptr long long long long) FileMenu_AppendItemAW
|
||||||
116 stdcall -noname FileMenu_TrackPopupMenuEx(long long long long long long)
|
116 stdcall FileMenu_TrackPopupMenuEx (long long long long long long)
|
||||||
117 stdcall -noname FileMenu_DeleteItemByCmd(long long)
|
117 stdcall FileMenu_DeleteItemByCmd(long long)
|
||||||
118 stdcall -noname FileMenu_Destroy(long)
|
118 stdcall FileMenu_Destroy (long)
|
||||||
119 stdcall -noname IsLFNDrive(ptr) IsLFNDriveAW
|
119 stdcall IsLFNDrive(ptr) IsLFNDriveAW
|
||||||
120 stdcall -noname FileMenu_AbortInitMenu()
|
120 stdcall FileMenu_AbortInitMenu ()
|
||||||
121 stdcall -noname SHFlushClipboard()
|
121 stdcall SHFlushClipboard ()
|
||||||
122 stdcall -noname RunDLL_CallEntry16(long long long str long) #name wrong?
|
122 stdcall -noname RunDLL_CallEntry16(long long long str long) #name wrong?
|
||||||
123 stdcall -noname SHFreeUnusedLibraries()
|
123 stdcall SHFreeUnusedLibraries ()
|
||||||
124 stdcall -noname FileMenu_AppendFilesForPidl(long ptr long)
|
124 stdcall FileMenu_AppendFilesForPidl(long ptr long)
|
||||||
125 stdcall -noname FileMenu_AddFilesForPidl(long long long ptr long long ptr)
|
125 stdcall FileMenu_AddFilesForPidl(long long long ptr long long ptr)
|
||||||
126 stdcall -noname SHOutOfMemoryMessageBox(long long long)
|
126 stdcall SHOutOfMemoryMessageBox (long long long)
|
||||||
127 stdcall -noname SHWinHelp(long long long long)
|
127 stdcall SHWinHelp (long long long long)
|
||||||
129 stdcall -noname DAD_AutoScroll(long ptr ptr)
|
128 stdcall -private DllGetClassObject(long long ptr) SHELL32_DllGetClassObject
|
||||||
130 stdcall -noname DAD_DragEnter(long)
|
129 stdcall DAD_AutoScroll(long ptr ptr)
|
||||||
131 stdcall -noname DAD_DragEnterEx(long long long)
|
130 stdcall DAD_DragEnter(long)
|
||||||
132 stdcall -noname DAD_DragLeave()
|
131 stdcall DAD_DragEnterEx(long long long)
|
||||||
134 stdcall -noname DAD_DragMove(long long)
|
132 stdcall DAD_DragLeave()
|
||||||
136 stdcall -noname DAD_SetDragImage(long long)
|
133 stdcall DragQueryFileW(long long ptr long)
|
||||||
137 stdcall -noname DAD_ShowDragImage(long)
|
134 stdcall DAD_DragMove(long long)
|
||||||
|
135 stdcall DragQueryPoint(long ptr)
|
||||||
|
136 stdcall DAD_SetDragImage(long long)
|
||||||
|
137 stdcall DAD_ShowDragImage (long)
|
||||||
139 stub Desktop_UpdateBriefcaseOnEvent
|
139 stub Desktop_UpdateBriefcaseOnEvent
|
||||||
140 stdcall -noname FileMenu_DeleteItemByIndex(long long)
|
140 stdcall FileMenu_DeleteItemByIndex(long long)
|
||||||
141 stdcall -noname FileMenu_DeleteItemByFirstID(long long)
|
141 stdcall FileMenu_DeleteItemByFirstID(long long)
|
||||||
142 stdcall -noname FileMenu_DeleteSeparator(long)
|
142 stdcall FileMenu_DeleteSeparator(long)
|
||||||
143 stdcall -noname FileMenu_EnableItemByCmd(long long long)
|
143 stdcall FileMenu_EnableItemByCmd(long long long)
|
||||||
144 stdcall -noname FileMenu_GetItemExtent(long long)
|
144 stdcall FileMenu_GetItemExtent (long long)
|
||||||
145 stdcall -noname PathFindOnPath(ptr ptr) PathFindOnPathAW
|
145 stdcall PathFindOnPath (ptr ptr) PathFindOnPathAW
|
||||||
146 stdcall -noname RLBuildListOfPaths()
|
146 stdcall RLBuildListOfPaths()
|
||||||
147 stdcall -noname SHCLSIDFromString(long long) SHCLSIDFromStringAW
|
147 stdcall SHCLSIDFromString(long long) SHCLSIDFromStringAW
|
||||||
149 stdcall -noname SHFind_InitMenuPopup(long long long long)
|
149 stdcall SHFind_InitMenuPopup(long long long long)
|
||||||
|
|
||||||
151 stdcall -noname SHLoadOLE(long)
|
151 stdcall SHLoadOLE (long)
|
||||||
152 stdcall -noname ILGetSize(ptr)
|
152 stdcall ILGetSize(ptr)
|
||||||
153 stdcall -noname ILGetNext(ptr)
|
153 stdcall ILGetNext(ptr)
|
||||||
154 stdcall -noname ILAppend(long long long)
|
154 stdcall ILAppend (long long long)
|
||||||
155 stdcall -noname ILFree(ptr)
|
155 stdcall ILFree (ptr)
|
||||||
156 stdcall -noname ILGlobalFree(ptr)
|
156 stdcall ILGlobalFree (ptr)
|
||||||
157 stdcall -noname ILCreateFromPath(ptr) ILCreateFromPathAW
|
157 stdcall ILCreateFromPath (ptr) ILCreateFromPathAW
|
||||||
158 stdcall -noname PathGetExtension(str long long) PathGetExtensionAW
|
158 stdcall PathGetExtension(str long long) PathGetExtensionAW
|
||||||
159 stdcall -noname PathIsDirectory(ptr) PathIsDirectoryAW
|
159 stdcall PathIsDirectory(ptr)PathIsDirectoryAW
|
||||||
160 stub SHNetConnectionDialog
|
160 stub SHNetConnectionDialog
|
||||||
161 stdcall -noname SHRunControlPanel(long long)
|
161 stdcall SHRunControlPanel (long long)
|
||||||
162 stdcall -noname SHSimpleIDListFromPath(ptr) SHSimpleIDListFromPathAW
|
162 stdcall SHSimpleIDListFromPath (ptr) SHSimpleIDListFromPathAW
|
||||||
163 stdcall -noname StrToOleStr(wstr str) StrToOleStrAW
|
163 stdcall StrToOleStr (wstr str) StrToOleStrAW
|
||||||
164 stdcall -noname Win32DeleteFile(str) Win32DeleteFileAW
|
164 stdcall Win32DeleteFile(str) Win32DeleteFileAW
|
||||||
165 stdcall -noname SHCreateDirectory(long ptr)
|
165 stdcall SHCreateDirectory(long ptr)
|
||||||
166 stdcall -noname CallCPLEntry16(long long long long long long)
|
166 stdcall CallCPLEntry16(long long long long long long)
|
||||||
167 stdcall -noname SHAddFromPropSheetExtArray(long long long)
|
167 stdcall SHAddFromPropSheetExtArray(long long long)
|
||||||
168 stdcall -noname SHCreatePropSheetExtArray(long str long)
|
168 stdcall SHCreatePropSheetExtArray(long str long)
|
||||||
169 stdcall -noname SHDestroyPropSheetExtArray(long)
|
169 stdcall SHDestroyPropSheetExtArray(long)
|
||||||
170 stdcall -noname SHReplaceFromPropSheetExtArray(long long long long)
|
170 stdcall SHReplaceFromPropSheetExtArray(long long long long)
|
||||||
171 stdcall -noname PathCleanupSpec(ptr ptr)
|
171 stdcall PathCleanupSpec(ptr ptr)
|
||||||
172 stdcall -noname SHCreateLinks(long str ptr long ptr)
|
172 stdcall SHCreateLinks(long str ptr long ptr)
|
||||||
173 stdcall -noname SHValidateUNC(long long long)
|
173 stdcall SHValidateUNC(long long long)
|
||||||
174 stdcall -noname SHCreateShellFolderViewEx(ptr ptr)
|
174 stdcall SHCreateShellFolderViewEx (ptr ptr)
|
||||||
175 stdcall -noname SHGetSpecialFolderPath(long long long long) SHGetSpecialFolderPathAW
|
175 stdcall SHGetSpecialFolderPath(long long long long) SHGetSpecialFolderPathAW
|
||||||
176 stdcall -noname SHSetInstanceExplorer(long)
|
176 stdcall SHSetInstanceExplorer (long)
|
||||||
177 stub DAD_SetDragImageFromListView
|
177 stub DAD_SetDragImageFromListView
|
||||||
178 stdcall -noname SHObjectProperties(long long wstr wstr)
|
178 stdcall SHObjectProperties(long long wstr wstr)
|
||||||
179 stdcall -noname SHGetNewLinkInfoA(str str ptr long long)
|
179 stdcall SHGetNewLinkInfoA(str str ptr long long)
|
||||||
180 stdcall -noname SHGetNewLinkInfoW(wstr wstr ptr long long)
|
180 stdcall SHGetNewLinkInfoW(wstr wstr ptr long long)
|
||||||
181 stdcall -noname RegisterShellHook(long long)
|
181 stdcall RegisterShellHook(long long)
|
||||||
182 varargs -noname ShellMessageBoxW(long long long str long)
|
182 varargs ShellMessageBoxW(long long long str long)
|
||||||
183 varargs -noname ShellMessageBoxA(long long long str long)
|
183 varargs ShellMessageBoxA(long long long str long)
|
||||||
184 stdcall -noname ArrangeWindows(long long long long long)
|
184 stdcall ArrangeWindows(long long long long long)
|
||||||
185 stub SHHandleDiskFull
|
185 stub SHHandleDiskFull
|
||||||
186 stdcall -noname ILGetDisplayNameEx(ptr ptr ptr long)
|
186 stdcall ILGetDisplayNameEx(ptr ptr ptr long)
|
||||||
187 stub ILGetPseudoNameW
|
187 stub ILGetPseudoNameW
|
||||||
188 stdcall -noname ShellDDEInit(long)
|
188 stdcall ShellDDEInit(long)
|
||||||
189 stdcall -noname ILCreateFromPathA(str)
|
189 stdcall ILCreateFromPathA(str)
|
||||||
190 stdcall -noname ILCreateFromPathW(wstr)
|
190 stdcall ILCreateFromPathW(wstr)
|
||||||
191 stdcall -noname SHUpdateImageA(str long long long)
|
191 stdcall SHUpdateImageA(str long long long)
|
||||||
192 stdcall -noname SHUpdateImageW(wstr long long long)
|
192 stdcall SHUpdateImageW(wstr long long long)
|
||||||
193 stdcall -noname SHHandleUpdateImage(ptr)
|
193 stdcall SHHandleUpdateImage(ptr)
|
||||||
194 stub SHCreatePropSheetExtArrayEx
|
194 stub SHCreatePropSheetExtArrayEx
|
||||||
195 stdcall -noname SHFree(ptr)
|
195 stdcall SHFree(ptr)
|
||||||
196 stdcall -noname SHAlloc(long)
|
196 stdcall SHAlloc(long)
|
||||||
197 stub SHGlobalDefect
|
197 stub SHGlobalDefect
|
||||||
198 stdcall -noname SHAbortInvokeCommand()
|
198 stdcall SHAbortInvokeCommand ()
|
||||||
199 stub SHGetFileIcon
|
199 stub SHGetFileIcon
|
||||||
200 stub SHLocalAlloc
|
200 stub SHLocalAlloc
|
||||||
201 stub SHLocalFree
|
201 stub SHLocalFree
|
||||||
|
@ -199,15 +206,72 @@
|
||||||
212 stub Printers_AddPrinterPropPages
|
212 stub Printers_AddPrinterPropPages
|
||||||
213 stub Printers_RegisterWindowW
|
213 stub Printers_RegisterWindowW
|
||||||
214 stub Printers_UnregisterWindow
|
214 stub Printers_UnregisterWindow
|
||||||
215 stdcall -noname SHStartNetConnectionDialog(long str long)
|
215 stdcall SHStartNetConnectionDialog(long str long)
|
||||||
243 stdcall @(long long) shell32_243
|
243 stdcall @(long long) shell32_243
|
||||||
244 stdcall -noname SHInitRestricted(ptr ptr)
|
244 stdcall SHInitRestricted(ptr ptr)
|
||||||
249 stdcall -noname PathParseIconLocation(ptr) PathParseIconLocationAW
|
247 stdcall SHGetDataFromIDListA (ptr ptr long ptr long)
|
||||||
250 stdcall -noname PathRemoveExtension(ptr) PathRemoveExtensionAW
|
248 stdcall SHGetDataFromIDListW (ptr ptr long ptr long)
|
||||||
251 stdcall -noname PathRemoveArgs(ptr) PathRemoveArgsAW
|
249 stdcall PathParseIconLocation (ptr) PathParseIconLocationAW
|
||||||
|
250 stdcall PathRemoveExtension (ptr) PathRemoveExtensionAW
|
||||||
|
251 stdcall PathRemoveArgs (ptr) PathRemoveArgsAW
|
||||||
256 stdcall @(ptr ptr) SHELL32_256
|
256 stdcall @(ptr ptr) SHELL32_256
|
||||||
|
271 stub SheChangeDirA
|
||||||
|
272 stub SheChangeDirExA
|
||||||
|
273 stub SheChangeDirExW
|
||||||
|
274 stdcall SheChangeDirW(wstr)
|
||||||
|
275 stub SheConvertPathW
|
||||||
|
276 stub SheFullPathA
|
||||||
|
277 stub SheFullPathW
|
||||||
|
278 stub SheGetCurDrive
|
||||||
|
279 stub SheGetDirA
|
||||||
|
280 stub SheGetDirExW
|
||||||
|
281 stdcall SheGetDirW (long long)
|
||||||
|
282 stub SheGetPathOffsetW
|
||||||
|
283 stub SheRemoveQuotesA
|
||||||
|
284 stub SheRemoveQuotesW
|
||||||
|
285 stub SheSetCurDrive
|
||||||
|
286 stub SheShortenPathA
|
||||||
|
287 stub SheShortenPathW
|
||||||
|
288 stdcall ShellAboutA(long str str long)
|
||||||
|
289 stdcall ShellAboutW(long wstr wstr long)
|
||||||
|
290 stdcall ShellExecuteA(long str str str str long)
|
||||||
|
291 stdcall ShellExecuteEx (long) ShellExecuteExA
|
||||||
|
292 stdcall ShellExecuteExA (long)
|
||||||
|
293 stdcall ShellExecuteExW (long)
|
||||||
|
294 stdcall ShellExecuteW (long wstr wstr wstr wstr long)
|
||||||
|
296 stdcall Shell_NotifyIcon(long ptr) Shell_NotifyIconA
|
||||||
|
297 stdcall Shell_NotifyIconA(long ptr)
|
||||||
|
298 stdcall Shell_NotifyIconW(long ptr)
|
||||||
#299 stub Shl1632_ThunkData32
|
#299 stub Shl1632_ThunkData32
|
||||||
#300 stub Shl3216_ThunkData32
|
#300 stub Shl3216_ThunkData32
|
||||||
|
301 stdcall StrChrA(str long) shlwapi.StrChrA
|
||||||
|
302 stdcall StrChrIA(str long) shlwapi.StrChrIA
|
||||||
|
303 stdcall StrChrIW(wstr long) shlwapi.StrChrIW
|
||||||
|
304 stdcall StrChrW(wstr long) shlwapi.StrChrW
|
||||||
|
305 stdcall StrCmpNA(str str long) shlwapi.StrCmpNA
|
||||||
|
306 stdcall StrCmpNIA(str str long) shlwapi.StrCmpNIA
|
||||||
|
307 stdcall StrCmpNIW(wstr wstr long) shlwapi.StrCmpNIW
|
||||||
|
308 stdcall StrCmpNW(wstr wstr long) shlwapi.StrCmpNW
|
||||||
|
309 stdcall StrCpyNA (ptr str long) lstrcpynA
|
||||||
|
310 stdcall StrCpyNW(wstr wstr long) shlwapi.StrCpyNW
|
||||||
|
311 stdcall StrNCmpA(str str long) shlwapi.StrCmpNA
|
||||||
|
312 stdcall StrNCmpIA(str str long) shlwapi.StrCmpNIA
|
||||||
|
313 stdcall StrNCmpIW(wstr wstr long) shlwapi.StrCmpNIW
|
||||||
|
314 stdcall StrNCmpW(wstr wstr long) shlwapi.StrCmpNW
|
||||||
|
315 stdcall StrNCpyA (ptr str long) lstrcpynA
|
||||||
|
316 stdcall StrNCpyW(wstr wstr long) shlwapi.StrCpyNW
|
||||||
|
317 stdcall StrRChrA(str str long) shlwapi.StrRChrA
|
||||||
|
318 stdcall StrRChrIA(str str long) shlwapi.StrRChrIA
|
||||||
|
319 stdcall StrRChrIW(str str long) shlwapi.StrRChrIW
|
||||||
|
320 stdcall StrRChrW(wstr wstr long) shlwapi.StrRChrW
|
||||||
|
321 stub StrRStrA
|
||||||
|
322 stdcall StrRStrIA(str str str) shlwapi.StrRStrIA
|
||||||
|
323 stdcall StrRStrIW(wstr wstr wstr) shlwapi.StrRStrIW
|
||||||
|
324 stub StrRStrW
|
||||||
|
325 stdcall StrStrA(str str) shlwapi.StrStrA
|
||||||
|
326 stdcall StrStrIA(str str) shlwapi.StrStrIA
|
||||||
|
327 stdcall StrStrIW(wstr wstr) shlwapi.StrStrIW
|
||||||
|
328 stdcall StrStrW(wstr wstr) shlwapi.StrStrW
|
||||||
|
|
||||||
505 stdcall SHRegCloseKey (long)
|
505 stdcall SHRegCloseKey (long)
|
||||||
506 stdcall SHRegOpenKeyA (long str long)
|
506 stdcall SHRegOpenKeyA (long str long)
|
||||||
|
@ -218,38 +282,38 @@
|
||||||
511 stdcall SHRegQueryValueExW (long wstr ptr ptr ptr ptr)
|
511 stdcall SHRegQueryValueExW (long wstr ptr ptr ptr ptr)
|
||||||
512 stdcall SHRegDeleteKeyW (long wstr)
|
512 stdcall SHRegDeleteKeyW (long wstr)
|
||||||
|
|
||||||
520 stdcall -noname SHAllocShared(ptr long long)
|
520 stdcall -noname SHAllocShared (ptr long long)
|
||||||
521 stdcall -noname SHLockShared(long long)
|
521 stdcall -noname SHLockShared (long long)
|
||||||
522 stdcall -noname SHUnlockShared(ptr)
|
522 stdcall -noname SHUnlockShared (ptr)
|
||||||
523 stdcall -noname SHFreeShared(long long)
|
523 stdcall -noname SHFreeShared (long long)
|
||||||
524 stdcall -noname RealDriveType(long long)
|
524 stdcall RealDriveType (long long)
|
||||||
525 stub RealDriveTypeFlags
|
525 stub RealDriveTypeFlags
|
||||||
|
|
||||||
640 stdcall -noname NTSHChangeNotifyRegister(long long long long long long)
|
640 stdcall NTSHChangeNotifyRegister (long long long long long long)
|
||||||
641 stdcall -noname NTSHChangeNotifyDeregister(long)
|
641 stdcall NTSHChangeNotifyDeregister (long)
|
||||||
|
|
||||||
643 stub SHChangeNotifyReceive
|
643 stub SHChangeNotifyReceive
|
||||||
644 stdcall -noname SHChangeNotification_Lock(long long ptr ptr)
|
644 stdcall SHChangeNotification_Lock(long long ptr ptr)
|
||||||
645 stdcall -noname SHChangeNotification_Unlock(long)
|
645 stdcall SHChangeNotification_Unlock(long)
|
||||||
646 stub SHChangeRegistrationReceive
|
646 stub SHChangeRegistrationReceive
|
||||||
647 stub ReceiveAddToRecentDocs
|
647 stub ReceiveAddToRecentDocs
|
||||||
648 stub SHWaitOp_Operate
|
648 stub SHWaitOp_Operate
|
||||||
|
|
||||||
650 stdcall -noname PathIsSameRoot(ptr ptr) PathIsSameRootAW
|
650 stdcall PathIsSameRoot(ptr ptr)PathIsSameRootAW
|
||||||
|
|
||||||
# nt40/win98
|
# nt40/win98
|
||||||
651 stdcall -noname ReadCabinetState(long long) # OldReadCabinetState
|
651 stdcall ReadCabinetState (long long) # OldReadCabinetState
|
||||||
652 stdcall -noname WriteCabinetState(long)
|
652 stdcall WriteCabinetState (long)
|
||||||
653 stdcall -noname PathProcessCommand(long long long long) PathProcessCommandAW
|
653 stdcall PathProcessCommand (long long long long) PathProcessCommandAW
|
||||||
|
|
||||||
# win98
|
# win98
|
||||||
654 stdcall @(long long) shell32_654 # ReadCabinetState@8
|
654 stdcall @(long long)shell32_654 # ReadCabinetState@8
|
||||||
660 stdcall -noname FileIconInit(long)
|
660 stdcall FileIconInit(long)
|
||||||
680 stdcall -noname IsUserAdmin()
|
680 stdcall IsUserAdmin()
|
||||||
|
|
||||||
# >= NT5
|
# >= NT5
|
||||||
714 stdcall @(ptr) SHELL32_714 # PathIsTemporaryW
|
714 stdcall @(ptr)SHELL32_714 # PathIsTemporaryW
|
||||||
730 stdcall -noname RestartDialogEx(long wstr long long)
|
730 stdcall RestartDialogEx(long wstr long long)
|
||||||
|
|
||||||
1217 stub FOOBAR1217 # no joke! This is the real name!!
|
1217 stub FOOBAR1217 # no joke! This is the real name!!
|
||||||
|
|
||||||
|
@ -265,22 +329,14 @@
|
||||||
@ stdcall Control_FillCache_RunDLLW(long long long long)
|
@ stdcall Control_FillCache_RunDLLW(long long long long)
|
||||||
@ stdcall Control_RunDLL(ptr ptr str long) Control_RunDLLA
|
@ stdcall Control_RunDLL(ptr ptr str long) Control_RunDLLA
|
||||||
@ stdcall Control_RunDLLA(ptr ptr str long)
|
@ stdcall Control_RunDLLA(ptr ptr str long)
|
||||||
@ stub Control_RunDLLAsUserW
|
|
||||||
@ stdcall Control_RunDLLW(ptr ptr wstr long)
|
@ stdcall Control_RunDLLW(ptr ptr wstr long)
|
||||||
@ stdcall -private DllCanUnloadNow() SHELL32_DllCanUnloadNow
|
@ stdcall -private DllCanUnloadNow() SHELL32_DllCanUnloadNow
|
||||||
@ stdcall -private DllGetClassObject(long long ptr) SHELL32_DllGetClassObject
|
|
||||||
@ stdcall DllInstall(long wstr)SHELL32_DllInstall
|
@ stdcall DllInstall(long wstr)SHELL32_DllInstall
|
||||||
@ stdcall -private DllRegisterServer() SHELL32_DllRegisterServer
|
@ stdcall -private DllRegisterServer() SHELL32_DllRegisterServer
|
||||||
@ stdcall -private DllUnregisterServer() SHELL32_DllUnregisterServer
|
@ stdcall -private DllUnregisterServer() SHELL32_DllUnregisterServer
|
||||||
@ stdcall DoEnvironmentSubstA(str str)
|
@ stdcall DoEnvironmentSubstA(str str)
|
||||||
@ stdcall DoEnvironmentSubstW(wstr wstr)
|
@ stdcall DoEnvironmentSubstW(wstr wstr)
|
||||||
@ stdcall DragAcceptFiles(long long)
|
|
||||||
@ stdcall DragFinish(long)
|
|
||||||
@ stdcall DragQueryFile(long long ptr long) DragQueryFileA
|
|
||||||
@ stdcall DragQueryFileA(long long ptr long)
|
|
||||||
@ stub DragQueryFileAorW
|
@ stub DragQueryFileAorW
|
||||||
@ stdcall DragQueryFileW(long long ptr long)
|
|
||||||
@ stdcall DragQueryPoint(long ptr)
|
|
||||||
@ stdcall DuplicateIcon(long long)
|
@ stdcall DuplicateIcon(long long)
|
||||||
@ stdcall ExtractAssociatedIconA(long str ptr)
|
@ stdcall ExtractAssociatedIconA(long str ptr)
|
||||||
@ stdcall ExtractAssociatedIconExA(long str long long)
|
@ stdcall ExtractAssociatedIconExA(long str long long)
|
||||||
|
@ -297,11 +353,9 @@
|
||||||
@ stub FindExeDlgProc
|
@ stub FindExeDlgProc
|
||||||
@ stdcall FindExecutableA(ptr ptr ptr)
|
@ stdcall FindExecutableA(ptr ptr ptr)
|
||||||
@ stdcall FindExecutableW(wstr wstr wstr)
|
@ stdcall FindExecutableW(wstr wstr wstr)
|
||||||
@ stub FixupOptionalComponents
|
|
||||||
@ stdcall FreeIconList(long)
|
@ stdcall FreeIconList(long)
|
||||||
@ stub InternalExtractIconListA
|
@ stub InternalExtractIconListA
|
||||||
@ stub InternalExtractIconListW
|
@ stub InternalExtractIconListW
|
||||||
@ stub OCInstall
|
|
||||||
@ stub OpenAs_RunDLL
|
@ stub OpenAs_RunDLL
|
||||||
@ stub OpenAs_RunDLLA
|
@ stub OpenAs_RunDLLA
|
||||||
@ stub OpenAs_RunDLLW
|
@ stub OpenAs_RunDLLW
|
||||||
|
@ -319,48 +373,16 @@
|
||||||
@ stdcall SHBrowseForFolderA(ptr)
|
@ stdcall SHBrowseForFolderA(ptr)
|
||||||
@ stdcall SHBrowseForFolderW(ptr)
|
@ stdcall SHBrowseForFolderW(ptr)
|
||||||
@ stdcall SHChangeNotify (long long ptr ptr)
|
@ stdcall SHChangeNotify (long long ptr ptr)
|
||||||
@ stub SHChangeNotifySuspendResume
|
|
||||||
@ stdcall SHCreateDirectoryExA(long str ptr)
|
@ stdcall SHCreateDirectoryExA(long str ptr)
|
||||||
@ stdcall SHCreateDirectoryExW(long wstr ptr)
|
@ stdcall SHCreateDirectoryExW(long wstr ptr)
|
||||||
@ stub SHCreateProcessAsUserW
|
|
||||||
@ stdcall SheChangeDirA(str)
|
|
||||||
@ stub SheChangeDirExA
|
|
||||||
@ stub SheChangeDirExW
|
|
||||||
@ stdcall SheChangeDirW(wstr)
|
|
||||||
@ stub SheConvertPathW
|
|
||||||
@ stub SheFullPathA
|
|
||||||
@ stub SheFullPathW
|
|
||||||
@ stub SheGetCurDrive
|
|
||||||
@ stdcall SheGetDirA(long long)
|
|
||||||
@ stub SheGetDirExW
|
|
||||||
@ stdcall SheGetDirW (long long)
|
|
||||||
@ stub SheGetPathOffsetW
|
|
||||||
@ stdcall ShellAboutA(long str str long)
|
|
||||||
@ stdcall ShellAboutW(long wstr wstr long)
|
|
||||||
@ stdcall ShellExecuteA(long str str str str long)
|
|
||||||
@ stdcall ShellExecuteEx (long) ShellExecuteExA
|
|
||||||
@ stdcall ShellExecuteExA (long)
|
|
||||||
@ stdcall ShellExecuteExW (long)
|
|
||||||
@ stdcall ShellExecuteW (long wstr wstr wstr wstr long)
|
|
||||||
@ stub ShellHookProc
|
@ stub ShellHookProc
|
||||||
@ stdcall Shell_NotifyIcon(long ptr) Shell_NotifyIconA
|
|
||||||
@ stdcall Shell_NotifyIconA(long ptr)
|
|
||||||
@ stdcall Shell_NotifyIconW(long ptr)
|
|
||||||
@ stdcall SHEmptyRecycleBinA(long str long)
|
@ stdcall SHEmptyRecycleBinA(long str long)
|
||||||
@ stdcall SHEmptyRecycleBinW(long wstr long)
|
@ stdcall SHEmptyRecycleBinW(long wstr long)
|
||||||
@ stub SheRemoveQuotesA
|
|
||||||
@ stub SheRemoveQuotesW
|
|
||||||
@ stub SheSetCurDrive
|
|
||||||
@ stub SheShortenPathA
|
|
||||||
@ stub SheShortenPathW
|
|
||||||
@ stub SHExtractIconsW
|
|
||||||
@ stdcall SHFileOperation(ptr) SHFileOperationA
|
@ stdcall SHFileOperation(ptr) SHFileOperationA
|
||||||
@ stdcall SHFileOperationA(ptr)
|
@ stdcall SHFileOperationA(ptr)
|
||||||
@ stdcall SHFileOperationW(ptr)
|
@ stdcall SHFileOperationW(ptr)
|
||||||
@ stdcall SHFormatDrive(long long long long)
|
@ stdcall SHFormatDrive(long long long long)
|
||||||
@ stdcall SHFreeNameMappings(ptr)
|
@ stdcall SHFreeNameMappings(ptr)
|
||||||
@ stdcall SHGetDataFromIDListA(ptr ptr long ptr long)
|
|
||||||
@ stdcall SHGetDataFromIDListW(ptr ptr long ptr long)
|
|
||||||
@ stdcall SHGetDesktopFolder(ptr)
|
@ stdcall SHGetDesktopFolder(ptr)
|
||||||
@ stdcall SHGetFileInfo(ptr long ptr long long) SHGetFileInfoA
|
@ stdcall SHGetFileInfo(ptr long ptr long long) SHGetFileInfoA
|
||||||
@ stdcall SHGetFileInfoA(ptr long ptr long long)
|
@ stdcall SHGetFileInfoA(ptr long ptr long long)
|
||||||
|
@ -373,47 +395,13 @@
|
||||||
@ stdcall SHGetPathFromIDListW(ptr ptr)
|
@ stdcall SHGetPathFromIDListW(ptr ptr)
|
||||||
@ stdcall SHGetSettings(ptr long)
|
@ stdcall SHGetSettings(ptr long)
|
||||||
@ stdcall SHGetSpecialFolderLocation(long long ptr)
|
@ stdcall SHGetSpecialFolderLocation(long long ptr)
|
||||||
@ stdcall SHHelpShortcuts_RunDLL(long long long long) SHHelpShortcuts_RunDLLA
|
@ stdcall SHHelpShortcuts_RunDLL(long long long long)
|
||||||
@ stdcall SHHelpShortcuts_RunDLLA(long long long long)
|
@ stub SHHelpShortcuts_RunDLLA
|
||||||
@ stdcall SHHelpShortcuts_RunDLLW(long long long long)
|
@ stub SHHelpShortcuts_RunDLLW
|
||||||
@ stub SHInvokePrinterCommandA
|
|
||||||
@ stub SHInvokePrinterCommandW
|
|
||||||
@ stub SHIsFileAvailableOffline
|
|
||||||
@ stdcall SHLoadInProc(long)
|
@ stdcall SHLoadInProc(long)
|
||||||
@ stub SHLoadNonloadedIconOverlayIdentifiers
|
|
||||||
@ stub SHPathPrepareForWriteA
|
|
||||||
@ stub SHPathPrepareForWriteW
|
|
||||||
@ stdcall SHQueryRecycleBinA(str ptr)
|
@ stdcall SHQueryRecycleBinA(str ptr)
|
||||||
@ stdcall SHQueryRecycleBinW(wstr ptr)
|
@ stdcall SHQueryRecycleBinW(wstr ptr)
|
||||||
@ stub SHUpdateRecycleBinIcon
|
@ stub SHUpdateRecycleBinIcon
|
||||||
@ stdcall StrChrA(str long) shlwapi.StrChrA
|
|
||||||
@ stdcall StrChrIA(str long) shlwapi.StrChrIA
|
|
||||||
@ stdcall StrChrIW(wstr long) shlwapi.StrChrIW
|
|
||||||
@ stdcall StrChrW(wstr long) shlwapi.StrChrW
|
|
||||||
@ stdcall StrCmpNA(str str long) shlwapi.StrCmpNA
|
|
||||||
@ stdcall StrCmpNIA(str str long) shlwapi.StrCmpNIA
|
|
||||||
@ stdcall StrCmpNIW(wstr wstr long) shlwapi.StrCmpNIW
|
|
||||||
@ stdcall StrCmpNW(wstr wstr long) shlwapi.StrCmpNW
|
|
||||||
@ stdcall StrCpyNA (ptr str long) kernel32.lstrcpynA
|
|
||||||
@ stdcall StrCpyNW(wstr wstr long) shlwapi.StrCpyNW
|
|
||||||
@ stdcall StrNCmpA(str str long) shlwapi.StrCmpNA
|
|
||||||
@ stdcall StrNCmpIA(str str long) shlwapi.StrCmpNIA
|
|
||||||
@ stdcall StrNCmpIW(wstr wstr long) shlwapi.StrCmpNIW
|
|
||||||
@ stdcall StrNCmpW(wstr wstr long) shlwapi.StrCmpNW
|
|
||||||
@ stdcall StrNCpyA (ptr str long) kernel32.lstrcpynA
|
|
||||||
@ stdcall StrNCpyW(wstr wstr long) shlwapi.StrCpyNW
|
|
||||||
@ stdcall StrRChrA(str str long) shlwapi.StrRChrA
|
|
||||||
@ stdcall StrRChrIA(str str long) shlwapi.StrRChrIA
|
|
||||||
@ stdcall StrRChrIW(str str long) shlwapi.StrRChrIW
|
|
||||||
@ stdcall StrRChrW(wstr wstr long) shlwapi.StrRChrW
|
|
||||||
@ stub StrRStrA
|
|
||||||
@ stdcall StrRStrIA(str str str) shlwapi.StrRStrIA
|
|
||||||
@ stdcall StrRStrIW(wstr wstr wstr) shlwapi.StrRStrIW
|
|
||||||
@ stub StrRStrW
|
|
||||||
@ stdcall StrStrA(str str) shlwapi.StrStrA
|
|
||||||
@ stdcall StrStrIA(str str) shlwapi.StrStrIA
|
|
||||||
@ stdcall StrStrIW(wstr wstr) shlwapi.StrStrIW
|
|
||||||
@ stdcall StrStrW(wstr wstr) shlwapi.StrStrW
|
|
||||||
@ stub WOWShellExecute
|
@ stub WOWShellExecute
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -439,9 +427,6 @@
|
||||||
# version 5.00 (Win2K)
|
# version 5.00 (Win2K)
|
||||||
# _WIN32_IE >= 0x0500
|
# _WIN32_IE >= 0x0500
|
||||||
#
|
#
|
||||||
@ stub ShellExec_RunDLL
|
|
||||||
@ stub ShellExec_RunDLLA
|
|
||||||
@ stub ShellExec_RunDLLW
|
|
||||||
@ stdcall SHBindToParent(ptr ptr ptr ptr)
|
@ stdcall SHBindToParent(ptr ptr ptr ptr)
|
||||||
@ stdcall SHGetDiskFreeSpaceA(str ptr ptr ptr) kernel32.GetDiskFreeSpaceExA
|
@ stdcall SHGetDiskFreeSpaceA(str ptr ptr ptr) kernel32.GetDiskFreeSpaceExA
|
||||||
@ stdcall SHGetDiskFreeSpaceExA(str ptr ptr ptr) kernel32.GetDiskFreeSpaceExA
|
@ stdcall SHGetDiskFreeSpaceExA(str ptr ptr ptr) kernel32.GetDiskFreeSpaceExA
|
||||||
|
@ -449,8 +434,6 @@
|
||||||
@ stdcall SHGetFolderPathA(long long long long ptr)
|
@ stdcall SHGetFolderPathA(long long long long ptr)
|
||||||
@ stdcall SHGetFolderPathW(long long long long ptr)
|
@ stdcall SHGetFolderPathW(long long long long ptr)
|
||||||
@ stdcall SHGetFolderLocation(long long long long ptr)
|
@ stdcall SHGetFolderLocation(long long long long ptr)
|
||||||
@ stub SHGetIconOverlayIndexA
|
|
||||||
@ stub SHGetIconOverlayIndexW
|
|
||||||
|
|
||||||
# version 6.0 (WinXP)
|
# version 6.0 (WinXP)
|
||||||
# _WIN32_IE >= 0x600
|
# _WIN32_IE >= 0x600
|
||||||
|
|
|
@ -17,7 +17,7 @@
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
|
LANGUAGE LANG_SPANISH, SUBLANG_DEFAULT
|
||||||
|
|
||||||
MENU_001 MENU DISCARDABLE
|
MENU_001 MENU DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
|
@ -188,35 +188,3 @@ STRINGTABLE DISCARDABLE
|
||||||
IDS_SHUTDOWN_TITLE "Desligar"
|
IDS_SHUTDOWN_TITLE "Desligar"
|
||||||
IDS_SHUTDOWN_PROMPT "Você quer finalizar a sessão no ReactOS?"
|
IDS_SHUTDOWN_PROMPT "Você quer finalizar a sessão no ReactOS?"
|
||||||
}
|
}
|
||||||
|
|
||||||
/* shell folder path default values - */
|
|
||||||
STRINGTABLE DISCARDABLE
|
|
||||||
{
|
|
||||||
IDS_PROGRAMS "Menu Iniciar\\Programas"
|
|
||||||
IDS_PERSONAL "Meus Documentos"
|
|
||||||
IDS_FAVORITES "Favoritos"
|
|
||||||
IDS_STARTUP "Menu Iniciar\\Programas\\Iniciar"
|
|
||||||
IDS_RECENT "Recent"
|
|
||||||
IDS_SENDTO "SendTo"
|
|
||||||
IDS_STARTMENU "Menu Iniciar"
|
|
||||||
IDS_MYMUSIC "Meus Documentos\\Minhas Músicas"
|
|
||||||
IDS_MYVIDEO "Meus Documentos\\Meus Vídeos"
|
|
||||||
IDS_DESKTOPDIRECTORY "Desktop"
|
|
||||||
IDS_NETHOOD "NetHood"
|
|
||||||
IDS_TEMPLATES "Templates"
|
|
||||||
IDS_APPDATA "Application Data"
|
|
||||||
IDS_PRINTHOOD "PrintHood"
|
|
||||||
IDS_LOCAL_APPDATA "Configurações locais\\Dados de aplicativos"
|
|
||||||
IDS_INTERNET_CACHE "Temporary Internet Files"
|
|
||||||
IDS_COOKIES "Cookies"
|
|
||||||
IDS_HISTORY "Histórico"
|
|
||||||
IDS_PROGRAM_FILES "Arquivos de programas"
|
|
||||||
IDS_MYPICTURES "Meus Documentos\\Minhas Imagens"
|
|
||||||
IDS_PROGRAM_FILES_COMMON "Arquivos de programas\\Arquivos comuns"
|
|
||||||
IDS_COMMON_DOCUMENTS "Documentos"
|
|
||||||
IDS_ADMINTOOLS "Menu Iniciar\\Programas\\Ferramentas Administrativas"
|
|
||||||
IDS_COMMON_MUSIC "Documentos\\Minhas Músicas"
|
|
||||||
IDS_COMMON_PICTURES "Documentos\\Minhas Imagens"
|
|
||||||
IDS_COMMON_VIDEO "Documentos\\Meus Vídeos"
|
|
||||||
IDS_CDBURN_AREA "Configurações locais\\Dados de aplicativos\\Microsoft\\CD Burning"
|
|
||||||
}
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -92,7 +92,6 @@ HRESULT WINAPI ISF_MyComputer_Constructor(IUnknown * pUnkOuter, REFIID riid, LPV
|
||||||
HRESULT WINAPI IDropTargetHelper_Constructor (IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
|
HRESULT WINAPI IDropTargetHelper_Constructor (IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
|
||||||
HRESULT WINAPI IFileSystemBindData_Constructor(const WIN32_FIND_DATAW *pfd, LPBC *ppV);
|
HRESULT WINAPI IFileSystemBindData_Constructor(const WIN32_FIND_DATAW *pfd, LPBC *ppV);
|
||||||
HRESULT WINAPI IControlPanel_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
|
HRESULT WINAPI IControlPanel_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
|
||||||
HRESULT WINAPI UnixFolder_Constructor(IUnknown * pUnkOuter, REFIID riid, LPVOID * ppv);
|
|
||||||
HRESULT WINAPI CPanel_GetIconLocationA(LPITEMIDLIST pidl, LPSTR szIconFile, UINT cchMax, int* piIndex);
|
HRESULT WINAPI CPanel_GetIconLocationA(LPITEMIDLIST pidl, LPSTR szIconFile, UINT cchMax, int* piIndex);
|
||||||
HRESULT WINAPI CPanel_GetIconLocationW(LPITEMIDLIST pidl, LPWSTR szIconFile, UINT cchMax, int* piIndex);
|
HRESULT WINAPI CPanel_GetIconLocationW(LPITEMIDLIST pidl, LPWSTR szIconFile, UINT cchMax, int* piIndex);
|
||||||
HRESULT WINAPI CPanel_ExtractIconA(LPITEMIDLIST pidl, LPCSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize);
|
HRESULT WINAPI CPanel_ExtractIconA(LPITEMIDLIST pidl, LPCSTR pszFile, UINT nIconIndex, HICON *phiconLarge, HICON *phiconSmall, UINT nIconSize);
|
||||||
|
@ -221,8 +220,6 @@ UINT SHELL_FindExecutable(LPCWSTR lpPath, LPCWSTR lpFile, LPCWSTR lpOperation,
|
||||||
|
|
||||||
extern WCHAR swShell32Name[MAX_PATH];
|
extern WCHAR swShell32Name[MAX_PATH];
|
||||||
|
|
||||||
extern const GUID CLSID_UnixFolder;
|
|
||||||
|
|
||||||
/* Default shell folder value registration */
|
/* Default shell folder value registration */
|
||||||
HRESULT SHELL_RegisterShellFolders(void);
|
HRESULT SHELL_RegisterShellFolders(void);
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -365,7 +365,7 @@ static BOOL PathIsExeA (LPCSTR lpszPath)
|
||||||
TRACE("path=%s\n",lpszPath);
|
TRACE("path=%s\n",lpszPath);
|
||||||
|
|
||||||
for(i=0; lpszExtensions[i]; i++)
|
for(i=0; lpszExtensions[i]; i++)
|
||||||
if (!lstrcmpiA(lpszExtension,lpszExtensions[i])) return TRUE;
|
if (!strcasecmp(lpszExtension,lpszExtensions[i])) return TRUE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -1267,7 +1267,7 @@ static HRESULT _SHGetDefaultValue(BYTE folder, LPWSTR pszPath)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FIXME("(%d,%s), LoadString failed, missing translation?\n", folder, debugstr_w(pszPath));
|
FIXME("LoadString failed, missing translation?\n");
|
||||||
hr = E_FAIL;
|
hr = E_FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,6 @@ HRESULT SHELL32_BindToChild (LPCITEMIDLIST pidlRoot,
|
||||||
LPCSTR pathRoot, LPCITEMIDLIST pidlComplete, REFIID riid, LPVOID * ppvOut);
|
LPCSTR pathRoot, LPCITEMIDLIST pidlComplete, REFIID riid, LPVOID * ppvOut);
|
||||||
|
|
||||||
HRESULT SHELL32_CompareIDs (IShellFolder * iface, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2);
|
HRESULT SHELL32_CompareIDs (IShellFolder * iface, LPARAM lParam, LPCITEMIDLIST pidl1, LPCITEMIDLIST pidl2);
|
||||||
LPITEMIDLIST SHELL32_CreatePidlFromBindCtx(IBindCtx *pbc, LPCWSTR path);
|
|
||||||
|
|
||||||
static inline int SHELL32_GUIDToStringA (REFGUID guid, LPSTR str)
|
static inline int SHELL32_GUIDToStringA (REFGUID guid, LPSTR str)
|
||||||
{
|
{
|
||||||
|
@ -56,17 +55,4 @@ static inline int SHELL32_GUIDToStringA (REFGUID guid, LPSTR str)
|
||||||
guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]);
|
guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int SHELL32_GUIDToStringW (REFGUID guid, LPWSTR str)
|
|
||||||
{
|
|
||||||
static const WCHAR fmtW[] =
|
|
||||||
{ '{','%','0','8','l','x','-','%','0','4','x','-','%','0','4','x','-',
|
|
||||||
'%','0','2','x','%','0','2','x','-',
|
|
||||||
'%','0','2','x','%','0','2','x','%','0','2','x','%','0','2','x',
|
|
||||||
'%','0','2','x','%','0','2','x','}',0 };
|
|
||||||
return sprintfW(str, fmtW,
|
|
||||||
guid->Data1, guid->Data2, guid->Data3,
|
|
||||||
guid->Data4[0], guid->Data4[1], guid->Data4[2], guid->Data4[3],
|
|
||||||
guid->Data4[4], guid->Data4[5], guid->Data4[6], guid->Data4[7]);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SHELL_FS_ProcessDisplayFilename(LPSTR szPath, DWORD dwFlags);
|
void SHELL_FS_ProcessDisplayFilename(LPSTR szPath, DWORD dwFlags);
|
||||||
|
|
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,21 +0,0 @@
|
||||||
/*
|
|
||||||
* UNIXFS - Shell namespace extension for the unix filesystem
|
|
||||||
*
|
|
||||||
* Copyright (C) 2005 Michael Jung
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Placeholder in ReactOS, we don't need this */
|
|
|
@ -365,7 +365,7 @@ static UINT SHELL_ExecuteW(const WCHAR *lpCmd, WCHAR *env, BOOL shWait,
|
||||||
}
|
}
|
||||||
else if ((retval = GetLastError()) >= 32)
|
else if ((retval = GetLastError()) >= 32)
|
||||||
{
|
{
|
||||||
TRACE("CreateProcess returned error %d\n", retval);
|
FIXME("Strange error set by CreateProcess: %d\n", retval);
|
||||||
retval = ERROR_BAD_FORMAT;
|
retval = ERROR_BAD_FORMAT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -861,8 +861,7 @@ static const char * debug_shfileops_action( DWORD op )
|
||||||
#define ERROR_SHELL_INTERNAL_FILE_NOT_FOUND 1026
|
#define ERROR_SHELL_INTERNAL_FILE_NOT_FOUND 1026
|
||||||
#define HIGH_ADR (LPWSTR)0xffffffff
|
#define HIGH_ADR (LPWSTR)0xffffffff
|
||||||
|
|
||||||
/* handle the complete deletion of `pTempFrom` */
|
static int file_operation_delete( WIN32_FIND_DATAW *wfd,SHFILEOPSTRUCTW nFileOp, LPWSTR pFromFile,LPWSTR pTempFrom,HANDLE *hFind)
|
||||||
static int shfileops_delete(WIN32_FIND_DATAW *wfd,SHFILEOPSTRUCTW nFileOp, LPWSTR pFromFile,LPWSTR pTempFrom,HANDLE *hFind)
|
|
||||||
|
|
||||||
{
|
{
|
||||||
LPWSTR lpFileName;
|
LPWSTR lpFileName;
|
||||||
|
@ -915,7 +914,7 @@ static int shfileops_delete(WIN32_FIND_DATAW *wfd,SHFILEOPSTRUCTW nFileOp, LPWST
|
||||||
* FOF_ALLOWUNDO, FOF_WANTMAPPINGHANDLE
|
* FOF_ALLOWUNDO, FOF_WANTMAPPINGHANDLE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int shfileops_check_flags(SHFILEOPSTRUCTW nFileOp)
|
static int file_operation_checkFlags(SHFILEOPSTRUCTW nFileOp)
|
||||||
{
|
{
|
||||||
FILEOP_FLAGS OFl = ((FILEOP_FLAGS)nFileOp.fFlags & 0xfff);
|
FILEOP_FLAGS OFl = ((FILEOP_FLAGS)nFileOp.fFlags & 0xfff);
|
||||||
long FuncSwitch = (nFileOp.wFunc & FO_MASK);
|
long FuncSwitch = (nFileOp.wFunc & FO_MASK);
|
||||||
|
@ -946,53 +945,6 @@ static int shfileops_check_flags(SHFILEOPSTRUCTW nFileOp)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int shfileops_do_operation(WIN32_FIND_DATAW wfd,SHFILEOPSTRUCTW *nFileOp, LPWSTR pToFile, LPWSTR pFromFile)
|
|
||||||
{
|
|
||||||
LPWSTR lpFileName = wfd.cAlternateFileName;
|
|
||||||
if (!lpFileName[0])
|
|
||||||
lpFileName = wfd.cFileName;
|
|
||||||
if (IsDotDir(lpFileName) ||
|
|
||||||
(IsAttribDir(wfd.dwFileAttributes) && (nFileOp->fFlags & FOF_FILESONLY)))
|
|
||||||
return 0; /* next name in pTempFrom(dir) */
|
|
||||||
SHFileStrCpyCatW(&pToFile[1], lpFileName, NULL);
|
|
||||||
SHFileStrCpyCatW(&pFromFile[1], lpFileName, NULL);
|
|
||||||
return SHFileOperationW (nFileOp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* get attributes of the parent dir of pTemp and create the directory if it does not exists */
|
|
||||||
static DWORD shfileops_get_parent_attr2(LPWSTR pFile,LPWSTR pTemp,int flag,int *retCode)
|
|
||||||
{
|
|
||||||
DWORD PathAttr;
|
|
||||||
pFile[0] = '\0';
|
|
||||||
PathAttr = GetFileAttributesW(pTemp);
|
|
||||||
if ((PathAttr == INVALID_FILE_ATTRIBUTES) && flag)
|
|
||||||
{
|
|
||||||
/* create dir must be here, sample target D:\y\ *.* create with RC=10003 */
|
|
||||||
if (SHNotifyCreateDirectoryW(pTemp, NULL))
|
|
||||||
{
|
|
||||||
*retCode = 0x73;/* value unknown */
|
|
||||||
/*goto shfileop_end;*/
|
|
||||||
return PathAttr;
|
|
||||||
}
|
|
||||||
PathAttr = GetFileAttributesW(pTemp);
|
|
||||||
}
|
|
||||||
pFile[0] = '\\';
|
|
||||||
return PathAttr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* get attributes of the parent dir of pTemp without creating the directory if it does not exists */
|
|
||||||
static DWORD shfileops_get_parent_attr(LPWSTR pFile,LPWSTR pTemp)
|
|
||||||
{
|
|
||||||
/* less efficient:
|
|
||||||
return shfileops_get_parent_attr2(pFile,pTemp,0,NULL);
|
|
||||||
*/
|
|
||||||
DWORD PathAttr;
|
|
||||||
pFile[0] = '\0';
|
|
||||||
PathAttr = GetFileAttributesW(pTemp);
|
|
||||||
pFile[0] = '\\';
|
|
||||||
return PathAttr;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SHFileOperationW [SHELL32.@]
|
* SHFileOperationW [SHELL32.@]
|
||||||
*
|
*
|
||||||
|
@ -1012,6 +964,7 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
||||||
LPWSTR pTempTo = NULL;
|
LPWSTR pTempTo = NULL;
|
||||||
LPWSTR pFromFile;
|
LPWSTR pFromFile;
|
||||||
LPWSTR pToFile = NULL;
|
LPWSTR pToFile = NULL;
|
||||||
|
LPWSTR lpFileName;
|
||||||
int retCode = 0;
|
int retCode = 0;
|
||||||
DWORD ToAttr;
|
DWORD ToAttr;
|
||||||
DWORD ToPathAttr;
|
DWORD ToPathAttr;
|
||||||
|
@ -1033,6 +986,8 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
||||||
long FuncSwitch = (nFileOp.wFunc & FO_MASK);
|
long FuncSwitch = (nFileOp.wFunc & FO_MASK);
|
||||||
long level= nFileOp.wFunc>>4;
|
long level= nFileOp.wFunc>>4;
|
||||||
|
|
||||||
|
int ret;
|
||||||
|
|
||||||
/* default no error */
|
/* default no error */
|
||||||
nFileOp.fAnyOperationsAborted = FALSE;
|
nFileOp.fAnyOperationsAborted = FALSE;
|
||||||
|
|
||||||
|
@ -1061,9 +1016,12 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
||||||
* create dir 0 0 0 0 0 0 1 0
|
* create dir 0 0 0 0 0 0 1 0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
retCode = shfileops_check_flags(nFileOp);
|
ret = file_operation_checkFlags(nFileOp);
|
||||||
if (retCode)
|
if (ret != 0)
|
||||||
|
{
|
||||||
|
retCode = ret;
|
||||||
goto shfileop_end;
|
goto shfileop_end;
|
||||||
|
}
|
||||||
|
|
||||||
if ((pNextFrom) && (!(b_MultiTo) || (pNextTo)))
|
if ((pNextFrom) && (!(b_MultiTo) || (pNextTo)))
|
||||||
{
|
{
|
||||||
|
@ -1150,10 +1108,17 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
||||||
hFind = FindFirstFileW(pFrom, &wfd);
|
hFind = FindFirstFileW(pFrom, &wfd);
|
||||||
if (INVALID_HANDLE_VALUE == hFind)
|
if (INVALID_HANDLE_VALUE == hFind)
|
||||||
{
|
{
|
||||||
if ((FO_DELETE == FuncSwitch) && (b_Mask) && IsAttribDir(shfileops_get_parent_attr(pFromFile,pTempFrom)))
|
if ((FO_DELETE == FuncSwitch) && (b_Mask))
|
||||||
{
|
{
|
||||||
/* FO_DELETE with mask and without found is valid */
|
DWORD FromPathAttr;
|
||||||
goto shfileop_end;
|
pFromFile[0] = '\0';
|
||||||
|
FromPathAttr = GetFileAttributesW(pTempFrom);
|
||||||
|
pFromFile[0] = '\\';
|
||||||
|
if (IsAttribDir(FromPathAttr))
|
||||||
|
{
|
||||||
|
/* FO_DELETE with mask and without found is valid */
|
||||||
|
goto shfileop_end;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* root (without mask) is also not allowed as source, tested in W98 */
|
/* root (without mask) is also not allowed as source, tested in W98 */
|
||||||
retCode = ERROR_SHELL_INTERNAL_FILE_NOT_FOUND;
|
retCode = ERROR_SHELL_INTERNAL_FILE_NOT_FOUND;
|
||||||
|
@ -1165,8 +1130,13 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
||||||
/* ??? b_Mask = (!SHFileStrICmpA(&pFromFile[1], &wfd.cFileName[0], HIGH_ADR, HIGH_ADR)); */
|
/* ??? b_Mask = (!SHFileStrICmpA(&pFromFile[1], &wfd.cFileName[0], HIGH_ADR, HIGH_ADR)); */
|
||||||
if (!pTo) /* FO_DELETE */
|
if (!pTo) /* FO_DELETE */
|
||||||
{
|
{
|
||||||
retCode = shfileops_delete(&wfd,nFileOp,pFromFile,pTempFrom,&hFind);
|
ret = file_operation_delete(&wfd,nFileOp,pFromFile,pTempFrom,&hFind);
|
||||||
/* if ret is not 0, nFileOp.fAnyOperationsAborted is TRUE and the loop will end */
|
/* if ret is not 0, nFileOp.fAnyOperationsAborted is TRUE */
|
||||||
|
if (ret != 0)
|
||||||
|
{
|
||||||
|
retCode = ret;
|
||||||
|
goto shfileop_end;
|
||||||
|
}
|
||||||
continue;
|
continue;
|
||||||
} /* FO_DELETE ends, pTo must be always valid from here */
|
} /* FO_DELETE ends, pTo must be always valid from here */
|
||||||
|
|
||||||
|
@ -1176,7 +1146,9 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
||||||
ToPathAttr = ToAttr = GetFileAttributesW(pTempTo);
|
ToPathAttr = ToAttr = GetFileAttributesW(pTempTo);
|
||||||
if (!b_Mask && (ToAttr == INVALID_FILE_ATTRIBUTES) && (pToFile))
|
if (!b_Mask && (ToAttr == INVALID_FILE_ATTRIBUTES) && (pToFile))
|
||||||
{
|
{
|
||||||
ToPathAttr = shfileops_get_parent_attr(pToFile,pTempTo);
|
pToFile[0] = '\0';
|
||||||
|
ToPathAttr = GetFileAttributesW(pTempTo);
|
||||||
|
pToFile[0] = '\\';
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FO_RENAME == FuncSwitch)
|
if (FO_RENAME == FuncSwitch)
|
||||||
|
@ -1230,7 +1202,15 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
||||||
nFileOp.fFlags = (nFileOp.fFlags | FOF_MULTIDESTFILES);
|
nFileOp.fFlags = (nFileOp.fFlags | FOF_MULTIDESTFILES);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
retCode = shfileops_do_operation(wfd,&nFileOp,pToFile,pFromFile);
|
lpFileName = wfd.cAlternateFileName;
|
||||||
|
if (!lpFileName[0])
|
||||||
|
lpFileName = wfd.cFileName;
|
||||||
|
if (IsDotDir(lpFileName) ||
|
||||||
|
(IsAttribDir(wfd.dwFileAttributes) && (nFileOp.fFlags & FOF_FILESONLY)))
|
||||||
|
continue; /* next name in pTempFrom(dir) */
|
||||||
|
SHFileStrCpyCatW(&pToFile[1], lpFileName, NULL);
|
||||||
|
SHFileStrCpyCatW(&pFromFile[1], lpFileName, NULL);
|
||||||
|
retCode = SHFileOperationW (&nFileOp);
|
||||||
} while(!nFileOp.fAnyOperationsAborted && FindNextFileW(hFind, &wfd));
|
} while(!nFileOp.fAnyOperationsAborted && FindNextFileW(hFind, &wfd));
|
||||||
}
|
}
|
||||||
FindClose(hFind);
|
FindClose(hFind);
|
||||||
|
@ -1244,9 +1224,19 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
||||||
{
|
{
|
||||||
if (pToFile)
|
if (pToFile)
|
||||||
{
|
{
|
||||||
ToPathAttr = shfileops_get_parent_attr2(pToFile,pTempTo,b_ToValid,&retCode);
|
pToFile[0] = '\0';
|
||||||
if (retCode)
|
ToPathAttr = GetFileAttributesW(pTempTo);
|
||||||
goto shfileop_end;
|
if ((ToPathAttr == INVALID_FILE_ATTRIBUTES) && b_ToValid)
|
||||||
|
{
|
||||||
|
/* create dir must be here, sample target D:\y\ *.* create with RC=10003 */
|
||||||
|
if (SHNotifyCreateDirectoryW(pTempTo, NULL))
|
||||||
|
{
|
||||||
|
retCode = 0x73;/* value unknown */
|
||||||
|
goto shfileop_end;
|
||||||
|
}
|
||||||
|
ToPathAttr = GetFileAttributesW(pTempTo);
|
||||||
|
}
|
||||||
|
pToFile[0] = '\\';
|
||||||
if (b_ToInvalidTail)
|
if (b_ToInvalidTail)
|
||||||
{
|
{
|
||||||
retCode = 0x10003;
|
retCode = 0x10003;
|
||||||
|
@ -1280,7 +1270,9 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ToPathAttr = shfileops_get_parent_attr(pToFile,pTempTo);
|
pToFile[0] = '\0';
|
||||||
|
ToPathAttr = GetFileAttributesW(pTempTo);
|
||||||
|
pToFile[0] = '\\';
|
||||||
if (IsAttribFile(ToPathAttr))
|
if (IsAttribFile(ToPathAttr))
|
||||||
{
|
{
|
||||||
/* error, is this tested ? */
|
/* error, is this tested ? */
|
||||||
|
@ -1411,16 +1403,7 @@ void WINAPI SHFreeNameMappings(HANDLE hNameMapping)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SheGetDirA [SHELL32.@]
|
* SheGetDirW [SHELL32.281]
|
||||||
*
|
|
||||||
*/
|
|
||||||
HRESULT WINAPI SheGetDirA(LPSTR u, LPSTR v)
|
|
||||||
{ FIXME("%p %p stub\n",u,v);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* SheGetDirW [SHELL32.@]
|
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI SheGetDirW(LPWSTR u, LPWSTR v)
|
HRESULT WINAPI SheGetDirW(LPWSTR u, LPWSTR v)
|
||||||
|
@ -1429,16 +1412,7 @@ HRESULT WINAPI SheGetDirW(LPWSTR u, LPWSTR v)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SheChangeDirA [SHELL32.@]
|
* SheChangeDirW [SHELL32.274]
|
||||||
*
|
|
||||||
*/
|
|
||||||
HRESULT WINAPI SheChangeDirA(LPSTR u)
|
|
||||||
{ FIXME("(%s),stub\n",debugstr_a(u));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*************************************************************************
|
|
||||||
* SheChangeDirW [SHELL32.@]
|
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
HRESULT WINAPI SheChangeDirW(LPWSTR u)
|
HRESULT WINAPI SheChangeDirW(LPWSTR u)
|
||||||
|
|
|
@ -422,7 +422,7 @@ HRESULT SHELL32_GetItemAttributes (IShellFolder * psf, LPCITEMIDLIST pidl, LPDWO
|
||||||
if (SFGAO_LINK & *pdwAttributes) {
|
if (SFGAO_LINK & *pdwAttributes) {
|
||||||
char ext[MAX_PATH];
|
char ext[MAX_PATH];
|
||||||
|
|
||||||
if (!_ILGetExtension(pidl, ext, MAX_PATH) || lstrcmpiA(ext, "lnk"))
|
if (!_ILGetExtension(pidl, ext, MAX_PATH) || strcasecmp(ext, "lnk"))
|
||||||
*pdwAttributes &= ~SFGAO_LINK;
|
*pdwAttributes &= ~SFGAO_LINK;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -469,7 +469,7 @@ HRESULT SHELL32_CompareIDs (IShellFolder * iface, LPARAM lParam, LPCITEMIDLIST p
|
||||||
/* test for name of pidl */
|
/* test for name of pidl */
|
||||||
_ILSimpleGetText (pidl1, szTemp1, MAX_PATH);
|
_ILSimpleGetText (pidl1, szTemp1, MAX_PATH);
|
||||||
_ILSimpleGetText (pidl2, szTemp2, MAX_PATH);
|
_ILSimpleGetText (pidl2, szTemp2, MAX_PATH);
|
||||||
nReturn = lstrcmpiA (szTemp1, szTemp2);
|
nReturn = strcasecmp (szTemp1, szTemp2);
|
||||||
if (nReturn < 0)
|
if (nReturn < 0)
|
||||||
return MAKE_HRESULT( SEVERITY_SUCCESS, 0, (WORD)-1 );
|
return MAKE_HRESULT( SEVERITY_SUCCESS, 0, (WORD)-1 );
|
||||||
else if (nReturn > 0)
|
else if (nReturn > 0)
|
||||||
|
|
|
@ -42,16 +42,16 @@ WINE_DEFAULT_DEBUG_CHANNEL(pidl);
|
||||||
*/
|
*/
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
IFileSystemBindDataVtbl *lpVtbl;
|
IFileSystemBindDataVtbl *lpVtbl;
|
||||||
DWORD ref;
|
DWORD ref;
|
||||||
WIN32_FIND_DATAW findFile;
|
WIN32_FIND_DATAW findFile;
|
||||||
} IFileSystemBindDataImpl;
|
} IFileSystemBindDataImpl;
|
||||||
|
|
||||||
static HRESULT WINAPI IFileSystemBindData_fnQueryInterface(IFileSystemBindData *, REFIID, LPVOID*);
|
static HRESULT WINAPI IFileSystemBindData_fnQueryInterface(IFileSystemBindData *iface, REFIID riid, LPVOID* ppvObj);
|
||||||
static ULONG WINAPI IFileSystemBindData_fnAddRef(IFileSystemBindData *);
|
static ULONG WINAPI IFileSystemBindData_fnAddRef(IFileSystemBindData *iface);
|
||||||
static ULONG WINAPI IFileSystemBindData_fnRelease(IFileSystemBindData *);
|
static ULONG WINAPI IFileSystemBindData_fnRelease(IFileSystemBindData *iface);
|
||||||
static HRESULT WINAPI IFileSystemBindData_fnGetFindData(IFileSystemBindData *, WIN32_FIND_DATAW *);
|
static HRESULT WINAPI IFileSystemBindData_fnGetFindData(IFileSystemBindData *iface, WIN32_FIND_DATAW *pfd);
|
||||||
static HRESULT WINAPI IFileSystemBindData_fnSetFindData(IFileSystemBindData *, const WIN32_FIND_DATAW *);
|
static HRESULT WINAPI IFileSystemBindData_fnSetFindData(IFileSystemBindData *iface, const WIN32_FIND_DATAW *pfd);
|
||||||
|
|
||||||
static struct IFileSystemBindDataVtbl sbvt =
|
static struct IFileSystemBindDataVtbl sbvt =
|
||||||
{
|
{
|
||||||
|
@ -62,165 +62,165 @@ static struct IFileSystemBindDataVtbl sbvt =
|
||||||
IFileSystemBindData_fnGetFindData,
|
IFileSystemBindData_fnGetFindData,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const WCHAR wFileSystemBindData[] = {
|
static const WCHAR wFileSystemBindData[] = {'F','i','l','e',' ','S','y','s','t','e','m',' ','B','i','n','d','D','a','t','a',0};
|
||||||
'F','i','l','e',' ','S','y','s','t','e','m',' ','B','i','n','d','D','a','t','a',0};
|
|
||||||
|
|
||||||
HRESULT WINAPI IFileSystemBindData_Constructor(const WIN32_FIND_DATAW *pfd, LPBC *ppV)
|
HRESULT WINAPI IFileSystemBindData_Constructor(const WIN32_FIND_DATAW *pfd, LPBC *ppV)
|
||||||
{
|
{
|
||||||
IFileSystemBindDataImpl *sb;
|
IFileSystemBindDataImpl *sb;
|
||||||
HRESULT ret = E_OUTOFMEMORY;
|
HRESULT ret = E_OUTOFMEMORY;
|
||||||
|
|
||||||
TRACE("%p, %p\n", pfd, ppV);
|
TRACE("%p, %p\n", pfd, ppV);
|
||||||
|
|
||||||
if (!ppV)
|
if (!ppV)
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
*ppV = NULL;
|
*ppV = NULL;
|
||||||
|
|
||||||
sb = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IFileSystemBindDataImpl));
|
sb = (IFileSystemBindDataImpl*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IFileSystemBindDataImpl));
|
||||||
if (!sb)
|
if (!sb)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
sb->lpVtbl = &sbvt;
|
sb->lpVtbl = &sbvt;
|
||||||
sb->ref = 1;
|
sb->ref = 1;
|
||||||
IFileSystemBindData_fnSetFindData((IFileSystemBindData*)sb, pfd);
|
IFileSystemBindData_fnSetFindData((IFileSystemBindData*)sb, pfd);
|
||||||
|
|
||||||
ret = CreateBindCtx(0, ppV);
|
ret = CreateBindCtx(0, ppV);
|
||||||
if (SUCCEEDED(ret))
|
if (SUCCEEDED(ret))
|
||||||
{
|
{
|
||||||
BIND_OPTS bindOpts;
|
BIND_OPTS bindOpts;
|
||||||
|
bindOpts.cbStruct = sizeof(BIND_OPTS);
|
||||||
|
bindOpts.grfFlags = 0;
|
||||||
|
bindOpts.grfMode = STGM_CREATE;
|
||||||
|
bindOpts.dwTickCountDeadline = 0;
|
||||||
|
IBindCtx_SetBindOptions(*ppV, &bindOpts);
|
||||||
|
IBindCtx_RegisterObjectParam(*ppV, (LPOLESTR)wFileSystemBindData, (LPUNKNOWN)sb);
|
||||||
|
|
||||||
bindOpts.cbStruct = sizeof(BIND_OPTS);
|
IFileSystemBindData_Release((IFileSystemBindData*)sb);
|
||||||
bindOpts.grfFlags = 0;
|
}
|
||||||
bindOpts.grfMode = STGM_CREATE;
|
else
|
||||||
bindOpts.dwTickCountDeadline = 0;
|
HeapFree(GetProcessHeap(), 0, sb);
|
||||||
IBindCtx_SetBindOptions(*ppV, &bindOpts);
|
return ret;
|
||||||
IBindCtx_RegisterObjectParam(*ppV, (LPOLESTR)wFileSystemBindData, (LPUNKNOWN)sb);
|
|
||||||
|
|
||||||
IFileSystemBindData_Release((IFileSystemBindData*)sb);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
HeapFree(GetProcessHeap(), 0, sb);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT WINAPI FileSystemBindData_GetFindData(LPBC pbc, WIN32_FIND_DATAW *pfd)
|
HRESULT WINAPI FileSystemBindData_GetFindData(LPBC pbc, WIN32_FIND_DATAW *pfd)
|
||||||
{
|
{
|
||||||
LPUNKNOWN pUnk;
|
LPUNKNOWN pUnk;
|
||||||
IFileSystemBindData *pfsbd = NULL;
|
IFileSystemBindData *pfsbd = NULL;
|
||||||
HRESULT ret;
|
HRESULT ret;
|
||||||
|
|
||||||
TRACE("%p, %p\n", pbc, pfd);
|
TRACE("%p, %p\n", pbc, pfd);
|
||||||
|
|
||||||
if (!pfd)
|
if (!pfd)
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
ret = IBindCtx_GetObjectParam(pbc, (LPOLESTR)wFileSystemBindData, &pUnk);
|
ret = IBindCtx_GetObjectParam(pbc, (LPOLESTR)wFileSystemBindData, &pUnk);
|
||||||
if (SUCCEEDED(ret))
|
if (SUCCEEDED(ret))
|
||||||
{
|
{
|
||||||
ret = IUnknown_QueryInterface(pUnk, &IID_IFileSystemBindData, (LPVOID *)&pfsbd);
|
ret = IUnknown_QueryInterface(pUnk, &IID_IFileSystemBindData, (LPVOID *)&pfsbd);
|
||||||
if (SUCCEEDED(ret))
|
if (SUCCEEDED(ret))
|
||||||
{
|
{
|
||||||
ret = IFileSystemBindData_GetFindData(pfsbd, pfd);
|
ret = IFileSystemBindData_GetFindData(pfsbd, pfd);
|
||||||
IFileSystemBindData_Release(pfsbd);
|
IFileSystemBindData_Release(pfsbd);
|
||||||
}
|
}
|
||||||
IUnknown_Release(pUnk);
|
IUnknown_Release(pUnk);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
HRESULT WINAPI FileSystemBindData_SetFindData(LPBC pbc, const WIN32_FIND_DATAW *pfd)
|
HRESULT WINAPI FileSystemBindData_SetFindData(LPBC pbc, const WIN32_FIND_DATAW *pfd)
|
||||||
{
|
{
|
||||||
LPUNKNOWN pUnk;
|
LPUNKNOWN pUnk;
|
||||||
IFileSystemBindData *pfsbd = NULL;
|
IFileSystemBindData *pfsbd = NULL;
|
||||||
HRESULT ret;
|
HRESULT ret;
|
||||||
|
|
||||||
TRACE("%p, %p\n", pbc, pfd);
|
TRACE("%p, %p\n", pbc, pfd);
|
||||||
|
|
||||||
ret = IBindCtx_GetObjectParam(pbc, (LPOLESTR)wFileSystemBindData, &pUnk);
|
ret = IBindCtx_GetObjectParam(pbc, (LPOLESTR)wFileSystemBindData, &pUnk);
|
||||||
if (SUCCEEDED(ret))
|
if (SUCCEEDED(ret))
|
||||||
{
|
{
|
||||||
ret = IUnknown_QueryInterface(pUnk, &IID_IFileSystemBindData, (LPVOID *)&pfsbd);
|
ret = IUnknown_QueryInterface(pUnk, &IID_IFileSystemBindData, (LPVOID *)&pfsbd);
|
||||||
if (SUCCEEDED(ret))
|
if (SUCCEEDED(ret))
|
||||||
{
|
{
|
||||||
ret = IFileSystemBindData_SetFindData(pfsbd, pfd);
|
ret = IFileSystemBindData_SetFindData(pfsbd, pfd);
|
||||||
IFileSystemBindData_Release(pfsbd);
|
IFileSystemBindData_Release(pfsbd);
|
||||||
}
|
}
|
||||||
IUnknown_Release(pUnk);
|
IUnknown_Release(pUnk);
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;}
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI IFileSystemBindData_fnQueryInterface(
|
|
||||||
IFileSystemBindData *iface, REFIID riid, LPVOID *ppV)
|
|
||||||
|
static HRESULT WINAPI IFileSystemBindData_fnQueryInterface(IFileSystemBindData *iface, REFIID riid, LPVOID *ppV)
|
||||||
{
|
{
|
||||||
IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface;
|
IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface;
|
||||||
TRACE("(%p)->(\n\tIID:\t%s, %p)\n", This, debugstr_guid(riid), ppV);
|
TRACE("(%p)->(\n\tIID:\t%s, %p)\n", This, debugstr_guid(riid), ppV);
|
||||||
|
|
||||||
*ppV = NULL;
|
*ppV = NULL;
|
||||||
|
|
||||||
if (IsEqualIID(riid, &IID_IUnknown))
|
if (IsEqualIID(riid, &IID_IUnknown))
|
||||||
*ppV = This;
|
{
|
||||||
else if (IsEqualIID(riid, &IID_IFileSystemBindData))
|
*ppV = This;
|
||||||
*ppV = (IFileSystemBindData*)This;
|
}
|
||||||
|
else if (IsEqualIID(riid, &IID_IFileSystemBindData))
|
||||||
|
{
|
||||||
|
*ppV = (IFileSystemBindData*)This;
|
||||||
|
}
|
||||||
|
|
||||||
if (*ppV)
|
if (*ppV)
|
||||||
{
|
{
|
||||||
IUnknown_AddRef((IUnknown*)(*ppV));
|
IUnknown_AddRef((IUnknown*)(*ppV));
|
||||||
TRACE("-- Interface: (%p)->(%p)\n", ppV, *ppV);
|
TRACE("-- Interface: (%p)->(%p)\n", ppV, *ppV);
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
TRACE("-- Interface: E_NOINTERFACE\n");
|
TRACE("-- Interface: E_NOINTERFACE\n");
|
||||||
return E_NOINTERFACE;
|
return E_NOINTERFACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI IFileSystemBindData_fnAddRef(IFileSystemBindData *iface)
|
static ULONG WINAPI IFileSystemBindData_fnAddRef(IFileSystemBindData *iface)
|
||||||
{
|
{
|
||||||
IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface;
|
IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface;
|
||||||
ULONG refCount = InterlockedIncrement(&This->ref);
|
ULONG refCount = InterlockedIncrement(&This->ref);
|
||||||
|
|
||||||
TRACE("(%p)->(count=%li)\n", This, refCount - 1);
|
TRACE("(%p)->(count=%li)\n", This, refCount - 1);
|
||||||
|
|
||||||
return refCount;
|
return refCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
static ULONG WINAPI IFileSystemBindData_fnRelease(IFileSystemBindData *iface)
|
static ULONG WINAPI IFileSystemBindData_fnRelease(IFileSystemBindData *iface)
|
||||||
{
|
{
|
||||||
IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface;
|
IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface;
|
||||||
ULONG refCount = InterlockedDecrement(&This->ref);
|
ULONG refCount = InterlockedDecrement(&This->ref);
|
||||||
|
|
||||||
TRACE("(%p)->(count=%li)\n", This, refCount + 1);
|
TRACE("(%p)->(count=%li)\n", This, refCount + 1);
|
||||||
|
|
||||||
if (!refCount)
|
if (!refCount)
|
||||||
{
|
{
|
||||||
TRACE(" destroying ISFBindPidl(%p)\n",This);
|
TRACE(" destroying ISFBindPidl(%p)\n",This);
|
||||||
HeapFree(GetProcessHeap(), 0, This);
|
HeapFree(GetProcessHeap(), 0, This);
|
||||||
}
|
}
|
||||||
return refCount;
|
return refCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI IFileSystemBindData_fnGetFindData(
|
static HRESULT WINAPI IFileSystemBindData_fnGetFindData(IFileSystemBindData *iface, WIN32_FIND_DATAW *pfd)
|
||||||
IFileSystemBindData *iface, WIN32_FIND_DATAW *pfd)
|
|
||||||
{
|
{
|
||||||
IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface;
|
IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface;
|
||||||
TRACE("(%p), %p\n", This, pfd);
|
TRACE("(%p), %p\n", This, pfd);
|
||||||
|
|
||||||
if (!pfd)
|
if (!pfd)
|
||||||
return E_INVALIDARG;
|
return E_INVALIDARG;
|
||||||
|
|
||||||
memcpy(pfd, &This->findFile, sizeof(WIN32_FIND_DATAW));
|
memcpy(pfd, &This->findFile, sizeof(WIN32_FIND_DATAW));
|
||||||
return NOERROR;
|
return NOERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI IFileSystemBindData_fnSetFindData(
|
static HRESULT WINAPI IFileSystemBindData_fnSetFindData(IFileSystemBindData *iface, const WIN32_FIND_DATAW *pfd)
|
||||||
IFileSystemBindData *iface, const WIN32_FIND_DATAW *pfd)
|
|
||||||
{
|
{
|
||||||
IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface;
|
IFileSystemBindDataImpl *This = (IFileSystemBindDataImpl *)iface;
|
||||||
TRACE("(%p), %p\n", This, pfd);
|
TRACE("(%p), %p\n", This, pfd);
|
||||||
|
|
||||||
if (pfd)
|
if (pfd)
|
||||||
memcpy(&This->findFile, pfd, sizeof(WIN32_FIND_DATAW));
|
memcpy(&This->findFile, pfd, sizeof(WIN32_FIND_DATAW));
|
||||||
else
|
else
|
||||||
memset(&This->findFile, 0, sizeof(WIN32_FIND_DATAW));
|
memset(&This->findFile, 0, sizeof(WIN32_FIND_DATAW));
|
||||||
return NOERROR;
|
return NOERROR;
|
||||||
}
|
}
|
||||||
|
|
|
@ -454,7 +454,7 @@ static INT CALLBACK ShellView_ListViewCompareItems(LPVOID lParam1, LPVOID lParam
|
||||||
{
|
{
|
||||||
_ILGetFileAttributes(pItemIdList1, strName1, MAX_PATH);
|
_ILGetFileAttributes(pItemIdList1, strName1, MAX_PATH);
|
||||||
_ILGetFileAttributes(pItemIdList2, strName2, MAX_PATH);
|
_ILGetFileAttributes(pItemIdList2, strName2, MAX_PATH);
|
||||||
nDiff = lstrcmpiA(strName1, strName2);
|
nDiff = strcasecmp(strName1, strName2);
|
||||||
}
|
}
|
||||||
/* Sort by FileName: Folder or Files can be sorted */
|
/* Sort by FileName: Folder or Files can be sorted */
|
||||||
else if(pSortInfo->nHeaderID == LISTVIEW_COLUMN_NAME || bIsBothFolder)
|
else if(pSortInfo->nHeaderID == LISTVIEW_COLUMN_NAME || bIsBothFolder)
|
||||||
|
@ -462,7 +462,7 @@ static INT CALLBACK ShellView_ListViewCompareItems(LPVOID lParam1, LPVOID lParam
|
||||||
/* Sort by Text */
|
/* Sort by Text */
|
||||||
_ILSimpleGetText(pItemIdList1, strName1, MAX_PATH);
|
_ILSimpleGetText(pItemIdList1, strName1, MAX_PATH);
|
||||||
_ILSimpleGetText(pItemIdList2, strName2, MAX_PATH);
|
_ILSimpleGetText(pItemIdList2, strName2, MAX_PATH);
|
||||||
nDiff = lstrcmpiA(strName1, strName2);
|
nDiff = strcasecmp(strName1, strName2);
|
||||||
}
|
}
|
||||||
/* Sort by File Size, Only valid for Files */
|
/* Sort by File Size, Only valid for Files */
|
||||||
else if(pSortInfo->nHeaderID == LISTVIEW_COLUMN_SIZE)
|
else if(pSortInfo->nHeaderID == LISTVIEW_COLUMN_SIZE)
|
||||||
|
@ -475,7 +475,7 @@ static INT CALLBACK ShellView_ListViewCompareItems(LPVOID lParam1, LPVOID lParam
|
||||||
/* Sort by Type */
|
/* Sort by Type */
|
||||||
_ILGetFileType(pItemIdList1, strName1, MAX_PATH);
|
_ILGetFileType(pItemIdList1, strName1, MAX_PATH);
|
||||||
_ILGetFileType(pItemIdList2, strName2, MAX_PATH);
|
_ILGetFileType(pItemIdList2, strName2, MAX_PATH);
|
||||||
nDiff = lstrcmpiA(strName1, strName2);
|
nDiff = strcasecmp(strName1, strName2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* If the Date, FileSize, FileType, Attrib was the same, sort by FileName */
|
/* If the Date, FileSize, FileType, Attrib was the same, sort by FileName */
|
||||||
|
@ -484,7 +484,7 @@ static INT CALLBACK ShellView_ListViewCompareItems(LPVOID lParam1, LPVOID lParam
|
||||||
{
|
{
|
||||||
_ILSimpleGetText(pItemIdList1, strName1, MAX_PATH);
|
_ILSimpleGetText(pItemIdList1, strName1, MAX_PATH);
|
||||||
_ILSimpleGetText(pItemIdList2, strName2, MAX_PATH);
|
_ILSimpleGetText(pItemIdList2, strName2, MAX_PATH);
|
||||||
nDiff = lstrcmpiA(strName1, strName2);
|
nDiff = strcasecmp(strName1, strName2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!pSortInfo->bIsAscending)
|
if(!pSortInfo->bIsAscending)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue