mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 21:56:06 +00:00
Reapply Wine-20050310 changes, this time with the changes
to the include files. Where's CIS when you need it :P svn path=/trunk/; revision=14138
This commit is contained in:
parent
9577665661
commit
ba0f1263e4
29 changed files with 4433 additions and 3208 deletions
|
@ -37,6 +37,7 @@ 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 \
|
||||||
|
@ -77,7 +78,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) -o $@ --main-module $(MODULE) --res version16.res --dll $(SRCDIR)/shell.spec
|
$(WINEBUILD) $(DEFS) $(DLLFLAGS) --dll -o $@ --main-module $(MODULE) --res version16.res --export $(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,68 +55,95 @@ 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)
|
||||||
{
|
{
|
||||||
HIMAGELIST hImageList;
|
LPITEMIDLIST pidlParent, pidlChild;
|
||||||
IShellFolder * lpsf;
|
HIMAGELIST hImageList;
|
||||||
HRESULT hr;
|
HRESULT hr;
|
||||||
IEnumIDList * pEnumIL = NULL;
|
IShellFolder *lpsfParent, *lpsfRoot;
|
||||||
LPITEMIDLIST parentofroot;
|
IEnumIDList * pEnumChildren = NULL;
|
||||||
parentofroot = ILClone(root);
|
|
||||||
ILRemoveLastID(parentofroot);
|
|
||||||
|
|
||||||
hwndTreeView = GetDlgItem (hwndParent, IDD_TREEVIEW);
|
TRACE("dlg=%p tree=%p\n", hwndParent, hwndTreeView );
|
||||||
Shell_GetImageList(NULL, &hImageList);
|
|
||||||
|
hwndTreeView = GetDlgItem (hwndParent, IDD_TREEVIEW);
|
||||||
|
if (!hwndTreeView) {
|
||||||
|
FIXME("Could not get handle to treeview control! Error: %08lx\n", GetLastError());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Shell_GetImageList(NULL, &hImageList);
|
||||||
|
|
||||||
TRACE("dlg=%p tree=%p\n", hwndParent, hwndTreeView );
|
if (hImageList)
|
||||||
|
TreeView_SetImageList(hwndTreeView, hImageList, 0);
|
||||||
|
|
||||||
if (hImageList && hwndTreeView)
|
/* We want to call InsertTreeViewItem down the code, in order to insert
|
||||||
TreeView_SetImageList(hwndTreeView, hImageList, 0);
|
* the root item of the treeview. Due to InsertTreeViewItem's signature,
|
||||||
|
* we need the following to do this:
|
||||||
|
*
|
||||||
|
* + 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'.
|
||||||
|
*/
|
||||||
|
|
||||||
if (_ILIsDesktop (root)) {
|
pidlParent = ILClone(root);
|
||||||
hr = SHGetDesktopFolder(&lpsf);
|
ILRemoveLastID(pidlParent);
|
||||||
} else {
|
pidlChild = ILClone(ILFindLastID(root));
|
||||||
IShellFolder * lpsfdesktop;
|
|
||||||
|
if (_ILIsDesktop(pidlParent)) {
|
||||||
|
hr = SHGetDesktopFolder(&lpsfParent);
|
||||||
|
} else {
|
||||||
|
IShellFolder *lpsfDesktop;
|
||||||
|
hr = SHGetDesktopFolder(&lpsfDesktop);
|
||||||
|
if (!SUCCEEDED(hr)) {
|
||||||
|
WARN("SHGetDesktopFolder failed! hr = %08lx\n", hr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
hr = IShellFolder_BindToObject(lpsfDesktop, pidlParent, 0, &IID_IShellFolder, (LPVOID*)&lpsfParent);
|
||||||
|
IShellFolder_Release(lpsfDesktop);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!SUCCEEDED(hr)) {
|
||||||
|
WARN("Could not bind to parent shell folder! hr = %08lx\n", hr);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
hr = SHGetDesktopFolder(&lpsfdesktop);
|
if (pidlChild && pidlChild->mkid.cb) {
|
||||||
if (SUCCEEDED(hr)) {
|
hr = IShellFolder_BindToObject(lpsfParent, pidlChild, 0, &IID_IShellFolder, (LPVOID*)&lpsfRoot);
|
||||||
hr = IShellFolder_BindToObject(lpsfdesktop, parentofroot, 0,(REFIID)&IID_IShellFolder,(LPVOID *)&lpsf);
|
} else {
|
||||||
IShellFolder_Release(lpsfdesktop);
|
lpsfRoot = lpsfParent;
|
||||||
}
|
hr = IShellFolder_AddRef(lpsfParent);
|
||||||
}
|
}
|
||||||
if (SUCCEEDED(hr))
|
|
||||||
{
|
if (!SUCCEEDED(hr)) {
|
||||||
IShellFolder * pSFRoot;
|
WARN("Could not bind to root shell folder! hr = %08lx\n", hr);
|
||||||
if (_ILIsPidlSimple(root))
|
IShellFolder_Release(lpsfParent);
|
||||||
{
|
return;
|
||||||
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 (SUCCEEDED(hr) && hwndTreeView)
|
hr = IShellFolder_EnumObjects(lpsfRoot, hwndParent, BrowseFlagsToSHCONTF(lpBrowseInfo->ulFlags), &pEnumChildren);
|
||||||
{
|
if (!SUCCEEDED(hr)) {
|
||||||
TreeView_DeleteAllItems(hwndTreeView);
|
WARN("Could not get child iterator! hr = %08lx\n", hr);
|
||||||
TreeView_Expand(hwndTreeView,
|
IShellFolder_Release(lpsfParent);
|
||||||
InsertTreeViewItem(lpsf, _ILIsPidlSimple(root) ? root : ILFindLastID(root), parentofroot, pEnumIL, TVI_ROOT),
|
IShellFolder_Release(lpsfRoot);
|
||||||
TVE_EXPAND);
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (SUCCEEDED(hr))
|
TreeView_DeleteAllItems(hwndTreeView);
|
||||||
IShellFolder_Release(lpsf);
|
TreeView_Expand(hwndTreeView, InsertTreeViewItem(lpsfParent, pidlChild, pidlParent, pEnumChildren, TVI_ROOT), TVE_EXPAND);
|
||||||
|
|
||||||
TRACE("done\n");
|
IShellFolder_Release(lpsfRoot);
|
||||||
|
IShellFolder_Release(lpsfParent);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int GetIcon(LPITEMIDLIST lpi, UINT uFlags)
|
static int GetIcon(LPITEMIDLIST lpi, UINT uFlags)
|
||||||
|
@ -149,12 +176,27 @@ static void GetNormalAndSelectedIcons(LPITEMIDLIST lpifq, LPTVITEMW lpTV_ITEM)
|
||||||
|
|
||||||
typedef struct tagID
|
typedef struct tagID
|
||||||
{
|
{
|
||||||
LPSHELLFOLDER lpsfParent;
|
LPSHELLFOLDER lpsfParent; /* IShellFolder of the parent */
|
||||||
LPITEMIDLIST lpi;
|
LPITEMIDLIST lpi; /* PIDL relativ to parent */
|
||||||
LPITEMIDLIST lpifq;
|
LPITEMIDLIST lpifq; /* Fully qualified PIDL */
|
||||||
IEnumIDList* pEnumIL;
|
IEnumIDList* pEnumIL; /* Children iterator */
|
||||||
} 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;
|
||||||
|
@ -175,7 +217,22 @@ 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;
|
||||||
|
@ -211,6 +268,18 @@ static HTREEITEM InsertTreeViewItem(IShellFolder * lpsf, LPCITEMIDLIST pidl, LPC
|
||||||
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;
|
||||||
|
@ -219,7 +288,11 @@ 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\n",lpsf, pidl, (INT)hParent);
|
TRACE("%p %p %x %p\n",lpsf, pidl, (INT)hParent, lpe);
|
||||||
|
|
||||||
|
/* 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
|
||||||
* Prefered Drop Effect
|
* Preferred 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) ;
|
||||||
SetClassLongA (hwnd, GCL_HICON, (LPARAM)prfdp->hIcon) ;
|
SetClassLongPtrW (hwnd, GCLP_HICON, (LPARAM)prfdp->hIcon) ;
|
||||||
SendMessageA (GetDlgItem (hwnd, 12297), STM_SETICON,
|
SendMessageW (GetDlgItem (hwnd, 12297), STM_SETICON,
|
||||||
(WPARAM)LoadIconA (NULL, (LPSTR)IDI_WINLOGO), 0);
|
(WPARAM)LoadIconW (NULL, (LPCWSTR)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 (!strcasecmp (pszCmd, pszLatest))
|
if (!lstrcmpiA(pszCmd, pszLatest))
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
sprintf (szDbgMsg, "Found existing (%d).\n", Nix) ;
|
sprintf (szDbgMsg, "Found existing (%d).\n", Nix) ;
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
#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"
|
||||||
|
@ -103,24 +104,27 @@ BOOL AddToEnumList(
|
||||||
*/
|
*/
|
||||||
BOOL CreateFolderEnumList(
|
BOOL CreateFolderEnumList(
|
||||||
IEnumIDList *list,
|
IEnumIDList *list,
|
||||||
LPCSTR lpszPath,
|
LPCWSTR lpszPath,
|
||||||
DWORD dwFlags)
|
DWORD dwFlags)
|
||||||
{
|
{
|
||||||
LPITEMIDLIST pidl=NULL;
|
LPITEMIDLIST pidl=NULL;
|
||||||
WIN32_FIND_DATAA stffile;
|
WIN32_FIND_DATAW stffile;
|
||||||
HANDLE hFile;
|
HANDLE hFile;
|
||||||
CHAR szPath[MAX_PATH];
|
WCHAR 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_a(lpszPath),dwFlags);
|
TRACE("(%p)->(path=%s flags=0x%08lx) \n",list,debugstr_w(lpszPath),dwFlags);
|
||||||
|
|
||||||
if(!lpszPath || !lpszPath[0]) return FALSE;
|
if(!lpszPath || !lpszPath[0]) return FALSE;
|
||||||
|
|
||||||
strcpy(szPath, lpszPath);
|
strcpyW(szPath, lpszPath);
|
||||||
PathAddBackslashA(szPath);
|
PathAddBackslashW(szPath);
|
||||||
strcat(szPath,"*.*");
|
strcatW(szPath,stars);
|
||||||
|
|
||||||
hFile = FindFirstFileA(szPath,&stffile);
|
hFile = FindFirstFileW(szPath,&stffile);
|
||||||
if ( hFile != INVALID_HANDLE_VALUE )
|
if ( hFile != INVALID_HANDLE_VALUE )
|
||||||
{
|
{
|
||||||
BOOL findFinished = FALSE;
|
BOOL findFinished = FALSE;
|
||||||
|
@ -132,21 +136,21 @@ BOOL CreateFolderEnumList(
|
||||||
{
|
{
|
||||||
if ( (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
|
if ( (stffile.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) &&
|
||||||
dwFlags & SHCONTF_FOLDERS &&
|
dwFlags & SHCONTF_FOLDERS &&
|
||||||
strcmp (stffile.cFileName, ".") && strcmp (stffile.cFileName, ".."))
|
strcmpW(stffile.cFileName, dot) && strcmpW(stffile.cFileName, dotdot))
|
||||||
{
|
{
|
||||||
pidl = _ILCreateFromFindDataA(&stffile);
|
pidl = _ILCreateFromFindDataW(&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 = _ILCreateFromFindDataA(&stffile);
|
pidl = _ILCreateFromFindDataW(&stffile);
|
||||||
succeeded = succeeded && AddToEnumList(list, pidl);
|
succeeded = succeeded && AddToEnumList(list, pidl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (succeeded)
|
if (succeeded)
|
||||||
{
|
{
|
||||||
if (!FindNextFileA(hFile, &stffile))
|
if (!FindNextFileW(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, LPCSTR lpszPath, DWORD dwFlags);
|
BOOL CreateFolderEnumList(IEnumIDList *list, LPCWSTR 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 (!strcasecmp(sTemp, "lnkfile"))
|
else if (!lstrcmpiA(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,11 +208,14 @@ 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,193 +3,186 @@
|
||||||
# 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 SHChangeNotifyRegister(long long long long long ptr)
|
2 stdcall -noname SHChangeNotifyRegister(long long long long long ptr)
|
||||||
4 stdcall SHChangeNotifyDeregister (long)
|
4 stdcall -noname SHChangeNotifyDeregister(long)
|
||||||
5 stdcall SHChangeNotifyUpdateEntryList (long long long long)
|
5 stdcall -noname SHChangeNotifyUpdateEntryList(long long long long)
|
||||||
9 stub PifMgr_OpenProperties
|
9 stub -noname PifMgr_OpenProperties
|
||||||
10 stub PifMgr_GetProperties
|
10 stub -noname PifMgr_GetProperties
|
||||||
11 stub PifMgr_SetProperties
|
11 stub -noname PifMgr_SetProperties
|
||||||
13 stub PifMgr_CloseProperties
|
13 stub -noname PifMgr_CloseProperties
|
||||||
15 stdcall ILGetDisplayName(ptr ptr)
|
15 stdcall -noname ILGetDisplayName(ptr ptr)
|
||||||
16 stdcall ILFindLastID(ptr)
|
16 stdcall -noname ILFindLastID(ptr)
|
||||||
17 stdcall ILRemoveLastID(ptr)
|
17 stdcall -noname ILRemoveLastID(ptr)
|
||||||
18 stdcall ILClone(ptr)
|
18 stdcall -noname ILClone(ptr)
|
||||||
19 stdcall ILCloneFirst (ptr)
|
19 stdcall -noname ILCloneFirst(ptr)
|
||||||
20 stdcall ILGlobalClone (ptr)
|
20 stdcall -noname ILGlobalClone(ptr)
|
||||||
21 stdcall ILIsEqual (ptr ptr)
|
21 stdcall -noname ILIsEqual(ptr ptr)
|
||||||
23 stdcall ILIsParent (ptr ptr long)
|
23 stdcall -noname ILIsParent(ptr ptr long)
|
||||||
24 stdcall ILFindChild (ptr ptr)
|
24 stdcall -noname ILFindChild(ptr ptr)
|
||||||
25 stdcall ILCombine(ptr ptr)
|
25 stdcall -noname ILCombine(ptr ptr)
|
||||||
26 stdcall ILLoadFromStream (ptr ptr)
|
26 stdcall -noname ILLoadFromStream(ptr ptr)
|
||||||
27 stdcall ILSaveToStream(ptr ptr)
|
27 stdcall -noname ILSaveToStream(ptr ptr)
|
||||||
28 stdcall SHILCreateFromPath(ptr ptr ptr) SHILCreateFromPathAW
|
28 stdcall -noname SHILCreateFromPath(ptr ptr ptr) SHILCreateFromPathAW
|
||||||
29 stdcall PathIsRoot(ptr) PathIsRootAW
|
29 stdcall -noname PathIsRoot(ptr) PathIsRootAW
|
||||||
30 stdcall PathBuildRoot(ptr long) PathBuildRootAW
|
30 stdcall -noname PathBuildRoot(ptr long) PathBuildRootAW
|
||||||
31 stdcall PathFindExtension(ptr) PathFindExtensionAW
|
31 stdcall -noname PathFindExtension(ptr) PathFindExtensionAW
|
||||||
32 stdcall PathAddBackslash(ptr) PathAddBackslashAW
|
32 stdcall -noname PathAddBackslash(ptr) PathAddBackslashAW
|
||||||
33 stdcall PathRemoveBlanks(ptr) PathRemoveBlanksAW
|
33 stdcall -noname PathRemoveBlanks(ptr) PathRemoveBlanksAW
|
||||||
34 stdcall PathFindFileName(ptr) PathFindFileNameAW
|
34 stdcall -noname PathFindFileName(ptr) PathFindFileNameAW
|
||||||
35 stdcall PathRemoveFileSpec(ptr) PathRemoveFileSpecAW
|
35 stdcall -noname PathRemoveFileSpec(ptr) PathRemoveFileSpecAW
|
||||||
36 stdcall PathAppend(ptr ptr) PathAppendAW
|
36 stdcall -noname PathAppend(ptr ptr) PathAppendAW
|
||||||
37 stdcall PathCombine(ptr ptr ptr) PathCombineAW
|
37 stdcall -noname PathCombine(ptr ptr ptr) PathCombineAW
|
||||||
38 stdcall PathStripPath(ptr)PathStripPathAW
|
38 stdcall -noname PathStripPath(ptr)PathStripPathAW
|
||||||
39 stdcall PathIsUNC (ptr) PathIsUNCAW
|
39 stdcall -noname PathIsUNC(ptr) PathIsUNCAW
|
||||||
40 stdcall PathIsRelative (ptr) PathIsRelativeAW
|
40 stdcall -noname PathIsRelative(ptr) PathIsRelativeAW
|
||||||
41 stdcall IsLFNDriveA(str)
|
41 stdcall -noname IsLFNDriveA(str)
|
||||||
42 stdcall IsLFNDriveW(wstr)
|
42 stdcall -noname IsLFNDriveW(wstr)
|
||||||
43 stdcall PathIsExe (ptr) PathIsExeAW
|
43 stdcall -noname PathIsExe(ptr) PathIsExeAW
|
||||||
45 stdcall PathFileExists(ptr) PathFileExistsAW
|
45 stdcall -noname PathFileExists(ptr) PathFileExistsAW
|
||||||
46 stdcall PathMatchSpec (ptr ptr) PathMatchSpecAW
|
46 stdcall -noname PathMatchSpec(ptr ptr) PathMatchSpecAW
|
||||||
47 stdcall PathMakeUniqueName (ptr long ptr ptr ptr)PathMakeUniqueNameAW
|
47 stdcall -noname PathMakeUniqueName(ptr long ptr ptr ptr)PathMakeUniqueNameAW
|
||||||
48 stdcall PathSetDlgItemPath (long long ptr) PathSetDlgItemPathAW
|
48 stdcall -noname PathSetDlgItemPath(long long ptr) PathSetDlgItemPathAW
|
||||||
49 stdcall PathQualify (ptr) PathQualifyAW
|
49 stdcall -noname PathQualify(ptr) PathQualifyAW
|
||||||
50 stdcall PathStripToRoot (ptr) PathStripToRootAW
|
50 stdcall -noname PathStripToRoot(ptr) PathStripToRootAW
|
||||||
51 stdcall PathResolve(str long long) PathResolveAW
|
51 stdcall -noname PathResolve(str long long) PathResolveAW
|
||||||
52 stdcall PathGetArgs(str) PathGetArgsAW
|
52 stdcall -noname PathGetArgs(str) PathGetArgsAW
|
||||||
53 stdcall DoEnvironmentSubst (long long) DoEnvironmentSubstAW
|
53 stdcall DoEnvironmentSubst(long long) DoEnvironmentSubstAW
|
||||||
54 stdcall DragAcceptFiles(long long)
|
55 stdcall -noname PathQuoteSpaces(ptr) PathQuoteSpacesAW
|
||||||
55 stdcall PathQuoteSpaces (ptr) PathQuoteSpacesAW
|
56 stdcall -noname PathUnquoteSpaces(str) PathUnquoteSpacesAW
|
||||||
56 stdcall PathUnquoteSpaces(str) PathUnquoteSpacesAW
|
57 stdcall -noname PathGetDriveNumber(str) PathGetDriveNumberAW
|
||||||
57 stdcall PathGetDriveNumber (str) PathGetDriveNumberAW
|
58 stdcall -noname ParseField(str long ptr long) ParseFieldAW
|
||||||
58 stdcall ParseField(str long ptr long) ParseFieldAW
|
59 stdcall -noname RestartDialog(long wstr long)
|
||||||
59 stdcall RestartDialog(long wstr long)
|
60 stdcall -noname ExitWindowsDialog(long)
|
||||||
60 stdcall ExitWindowsDialog(long)
|
61 stdcall -noname RunFileDlg(long long long str str long)
|
||||||
61 stdcall RunFileDlg(long long long str str long)
|
62 stdcall -noname PickIconDlg(long long long long)
|
||||||
62 stdcall PickIconDlg(long long long long)
|
63 stdcall -noname GetFileNameFromBrowse(long long long long str str str)
|
||||||
63 stdcall GetFileNameFromBrowse(long long long long str str str)
|
64 stdcall -noname DriveType(long)
|
||||||
64 stdcall DriveType (long)
|
65 stub -noname InvalidateDriveType
|
||||||
65 stub InvalidateDriveType
|
66 stdcall -noname IsNetDrive(long)
|
||||||
66 stdcall IsNetDrive(long)
|
67 stdcall -noname Shell_MergeMenus(long long long long long long)
|
||||||
67 stdcall Shell_MergeMenus (long long long long long long)
|
68 stdcall -noname SHGetSetSettings(ptr long long)
|
||||||
68 stdcall SHGetSetSettings(ptr long long)
|
69 stub -noname SHGetNetResource
|
||||||
69 stub SHGetNetResource
|
70 stdcall -noname SHCreateDefClassObject(long long long long long)
|
||||||
70 stdcall SHCreateDefClassObject(long long long long long)
|
71 stdcall -noname Shell_GetImageList(ptr ptr)
|
||||||
71 stdcall Shell_GetImageList(ptr ptr)
|
72 stdcall -noname Shell_GetCachedImageIndex(ptr ptr long) Shell_GetCachedImageIndexAW
|
||||||
72 stdcall Shell_GetCachedImageIndex(ptr ptr long) Shell_GetCachedImageIndexAW
|
73 stdcall -noname SHShellFolderView_Message(long long long)
|
||||||
73 stdcall SHShellFolderView_Message(long long long)
|
74 stdcall -noname SHCreateStdEnumFmtEtc(long ptr ptr)
|
||||||
74 stdcall SHCreateStdEnumFmtEtc(long ptr ptr)
|
75 stdcall -noname PathYetAnotherMakeUniqueName(ptr wstr wstr wstr)
|
||||||
75 stdcall PathYetAnotherMakeUniqueName(ptr wstr wstr wstr)
|
|
||||||
76 stub DragQueryInfo
|
76 stub DragQueryInfo
|
||||||
77 stdcall SHMapPIDLToSystemImageListIndex(ptr ptr ptr)
|
77 stdcall -noname SHMapPIDLToSystemImageListIndex(ptr ptr ptr)
|
||||||
78 stdcall OleStrToStrN(str long wstr long) OleStrToStrNAW
|
78 stdcall -noname OleStrToStrN(str long wstr long) OleStrToStrNAW
|
||||||
79 stdcall StrToOleStrN(wstr long str long) StrToOleStrNAW
|
79 stdcall -noname StrToOleStrN(wstr long str long) StrToOleStrNAW
|
||||||
80 stdcall DragFinish(long)
|
83 stdcall -noname CIDLData_CreateFromIDArray(ptr long ptr ptr)
|
||||||
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 OpenRegStream(long str str long) shlwapi.SHOpenRegStreamA
|
85 stdcall -noname OpenRegStream(long str str long) shlwapi.SHOpenRegStreamA
|
||||||
86 stdcall SHRegisterDragDrop(long ptr)
|
86 stdcall -noname SHRegisterDragDrop(long ptr)
|
||||||
87 stdcall SHRevokeDragDrop(long)
|
87 stdcall -noname SHRevokeDragDrop(long)
|
||||||
88 stdcall SHDoDragDrop(long ptr ptr long ptr)
|
88 stdcall -noname SHDoDragDrop(long ptr ptr long ptr)
|
||||||
89 stdcall SHCloneSpecialIDList(long long long)
|
89 stdcall -noname SHCloneSpecialIDList(long long long)
|
||||||
90 stdcall SHFindFiles(ptr ptr)
|
90 stdcall -noname SHFindFiles(ptr ptr)
|
||||||
91 stub SHFindComputer
|
91 stub SHFindComputer
|
||||||
92 stdcall PathGetShortPath (ptr) PathGetShortPathAW
|
92 stdcall -noname PathGetShortPath(ptr) PathGetShortPathAW
|
||||||
93 stdcall Win32CreateDirectory(wstr ptr) Win32CreateDirectoryAW
|
93 stdcall -noname Win32CreateDirectory(wstr ptr) Win32CreateDirectoryAW
|
||||||
94 stdcall Win32RemoveDirectory(wstr) Win32RemoveDirectoryAW
|
94 stdcall -noname Win32RemoveDirectory(wstr) Win32RemoveDirectoryAW
|
||||||
95 stdcall SHLogILFromFSIL (ptr)
|
95 stdcall -noname SHLogILFromFSIL(ptr)
|
||||||
96 stdcall StrRetToStrN (ptr long ptr ptr) StrRetToStrNAW
|
96 stdcall -noname StrRetToStrN(ptr long ptr ptr) StrRetToStrNAW
|
||||||
97 stdcall SHWaitForFileToOpen (long long long)
|
97 stdcall -noname SHWaitForFileToOpen (long long long)
|
||||||
98 stdcall SHGetRealIDL (ptr ptr ptr)
|
98 stdcall -noname SHGetRealIDL(ptr ptr ptr)
|
||||||
99 stdcall SetAppStartingCursor (long long)
|
99 stdcall -noname SetAppStartingCursor(long long)
|
||||||
100 stdcall SHRestricted(long)
|
100 stdcall -noname SHRestricted(long)
|
||||||
|
|
||||||
102 stdcall SHCoCreateInstance(wstr ptr long ptr ptr)
|
102 stdcall -noname SHCoCreateInstance(wstr ptr long ptr ptr)
|
||||||
103 stdcall SignalFileOpen(long)
|
103 stdcall -noname SignalFileOpen(long)
|
||||||
104 stdcall FileMenu_DeleteAllItems(long)
|
104 stdcall -noname FileMenu_DeleteAllItems(long)
|
||||||
105 stdcall FileMenu_DrawItem(long ptr)
|
105 stdcall -noname FileMenu_DrawItem(long ptr)
|
||||||
106 stdcall FileMenu_FindSubMenuByPidl(long ptr)
|
106 stdcall -noname FileMenu_FindSubMenuByPidl(long ptr)
|
||||||
107 stdcall FileMenu_GetLastSelectedItemPidls(long ptr ptr)
|
107 stdcall -noname FileMenu_GetLastSelectedItemPidls(long ptr ptr)
|
||||||
108 stdcall FileMenu_HandleMenuChar(long long)
|
108 stdcall -noname FileMenu_HandleMenuChar(long long)
|
||||||
109 stdcall FileMenu_InitMenuPopup (long)
|
109 stdcall -noname FileMenu_InitMenuPopup(long)
|
||||||
110 stdcall FileMenu_InsertUsingPidl (long long ptr long long ptr)
|
110 stdcall -noname FileMenu_InsertUsingPidl (long long ptr long long ptr)
|
||||||
111 stdcall FileMenu_Invalidate (long)
|
111 stdcall -noname FileMenu_Invalidate(long)
|
||||||
112 stdcall FileMenu_MeasureItem(long ptr)
|
112 stdcall -noname FileMenu_MeasureItem(long ptr)
|
||||||
113 stdcall FileMenu_ReplaceUsingPidl (long long ptr long ptr)
|
113 stdcall -noname FileMenu_ReplaceUsingPidl(long long ptr long ptr)
|
||||||
114 stdcall FileMenu_Create (long long long long long)
|
114 stdcall -noname FileMenu_Create(long long long long long)
|
||||||
115 stdcall FileMenu_AppendItem (long ptr long long long long) FileMenu_AppendItemAW
|
115 stdcall -noname FileMenu_AppendItem(long ptr long long long long) FileMenu_AppendItemAW
|
||||||
116 stdcall FileMenu_TrackPopupMenuEx (long long long long long long)
|
116 stdcall -noname FileMenu_TrackPopupMenuEx(long long long long long long)
|
||||||
117 stdcall FileMenu_DeleteItemByCmd(long long)
|
117 stdcall -noname FileMenu_DeleteItemByCmd(long long)
|
||||||
118 stdcall FileMenu_Destroy (long)
|
118 stdcall -noname FileMenu_Destroy(long)
|
||||||
119 stdcall IsLFNDrive(ptr) IsLFNDriveAW
|
119 stdcall -noname IsLFNDrive(ptr) IsLFNDriveAW
|
||||||
120 stdcall FileMenu_AbortInitMenu ()
|
120 stdcall -noname FileMenu_AbortInitMenu()
|
||||||
121 stdcall SHFlushClipboard ()
|
121 stdcall -noname 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 SHFreeUnusedLibraries ()
|
123 stdcall -noname SHFreeUnusedLibraries()
|
||||||
124 stdcall FileMenu_AppendFilesForPidl(long ptr long)
|
124 stdcall -noname FileMenu_AppendFilesForPidl(long ptr long)
|
||||||
125 stdcall FileMenu_AddFilesForPidl(long long long ptr long long ptr)
|
125 stdcall -noname FileMenu_AddFilesForPidl(long long long ptr long long ptr)
|
||||||
126 stdcall SHOutOfMemoryMessageBox (long long long)
|
126 stdcall -noname SHOutOfMemoryMessageBox(long long long)
|
||||||
127 stdcall SHWinHelp (long long long long)
|
127 stdcall -noname SHWinHelp(long long long long)
|
||||||
128 stdcall -private DllGetClassObject(long long ptr) SHELL32_DllGetClassObject
|
129 stdcall -noname DAD_AutoScroll(long ptr ptr)
|
||||||
129 stdcall DAD_AutoScroll(long ptr ptr)
|
130 stdcall -noname DAD_DragEnter(long)
|
||||||
130 stdcall DAD_DragEnter(long)
|
131 stdcall -noname DAD_DragEnterEx(long long long)
|
||||||
131 stdcall DAD_DragEnterEx(long long long)
|
132 stdcall -noname DAD_DragLeave()
|
||||||
132 stdcall DAD_DragLeave()
|
134 stdcall -noname DAD_DragMove(long long)
|
||||||
133 stdcall DragQueryFileW(long long ptr long)
|
136 stdcall -noname DAD_SetDragImage(long long)
|
||||||
134 stdcall DAD_DragMove(long long)
|
137 stdcall -noname DAD_ShowDragImage(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 FileMenu_DeleteItemByIndex(long long)
|
140 stdcall -noname FileMenu_DeleteItemByIndex(long long)
|
||||||
141 stdcall FileMenu_DeleteItemByFirstID(long long)
|
141 stdcall -noname FileMenu_DeleteItemByFirstID(long long)
|
||||||
142 stdcall FileMenu_DeleteSeparator(long)
|
142 stdcall -noname FileMenu_DeleteSeparator(long)
|
||||||
143 stdcall FileMenu_EnableItemByCmd(long long long)
|
143 stdcall -noname FileMenu_EnableItemByCmd(long long long)
|
||||||
144 stdcall FileMenu_GetItemExtent (long long)
|
144 stdcall -noname FileMenu_GetItemExtent(long long)
|
||||||
145 stdcall PathFindOnPath (ptr ptr) PathFindOnPathAW
|
145 stdcall -noname PathFindOnPath(ptr ptr) PathFindOnPathAW
|
||||||
146 stdcall RLBuildListOfPaths()
|
146 stdcall -noname RLBuildListOfPaths()
|
||||||
147 stdcall SHCLSIDFromString(long long) SHCLSIDFromStringAW
|
147 stdcall -noname SHCLSIDFromString(long long) SHCLSIDFromStringAW
|
||||||
149 stdcall SHFind_InitMenuPopup(long long long long)
|
149 stdcall -noname SHFind_InitMenuPopup(long long long long)
|
||||||
|
|
||||||
151 stdcall SHLoadOLE (long)
|
151 stdcall -noname SHLoadOLE(long)
|
||||||
152 stdcall ILGetSize(ptr)
|
152 stdcall -noname ILGetSize(ptr)
|
||||||
153 stdcall ILGetNext(ptr)
|
153 stdcall -noname ILGetNext(ptr)
|
||||||
154 stdcall ILAppend (long long long)
|
154 stdcall -noname ILAppend(long long long)
|
||||||
155 stdcall ILFree (ptr)
|
155 stdcall -noname ILFree(ptr)
|
||||||
156 stdcall ILGlobalFree (ptr)
|
156 stdcall -noname ILGlobalFree(ptr)
|
||||||
157 stdcall ILCreateFromPath (ptr) ILCreateFromPathAW
|
157 stdcall -noname ILCreateFromPath(ptr) ILCreateFromPathAW
|
||||||
158 stdcall PathGetExtension(str long long) PathGetExtensionAW
|
158 stdcall -noname PathGetExtension(str long long) PathGetExtensionAW
|
||||||
159 stdcall PathIsDirectory(ptr)PathIsDirectoryAW
|
159 stdcall -noname PathIsDirectory(ptr) PathIsDirectoryAW
|
||||||
160 stub SHNetConnectionDialog
|
160 stub SHNetConnectionDialog
|
||||||
161 stdcall SHRunControlPanel (long long)
|
161 stdcall -noname SHRunControlPanel(long long)
|
||||||
162 stdcall SHSimpleIDListFromPath (ptr) SHSimpleIDListFromPathAW
|
162 stdcall -noname SHSimpleIDListFromPath(ptr) SHSimpleIDListFromPathAW
|
||||||
163 stdcall StrToOleStr (wstr str) StrToOleStrAW
|
163 stdcall -noname StrToOleStr(wstr str) StrToOleStrAW
|
||||||
164 stdcall Win32DeleteFile(str) Win32DeleteFileAW
|
164 stdcall -noname Win32DeleteFile(str) Win32DeleteFileAW
|
||||||
165 stdcall SHCreateDirectory(long ptr)
|
165 stdcall -noname SHCreateDirectory(long ptr)
|
||||||
166 stdcall CallCPLEntry16(long long long long long long)
|
166 stdcall -noname CallCPLEntry16(long long long long long long)
|
||||||
167 stdcall SHAddFromPropSheetExtArray(long long long)
|
167 stdcall -noname SHAddFromPropSheetExtArray(long long long)
|
||||||
168 stdcall SHCreatePropSheetExtArray(long str long)
|
168 stdcall -noname SHCreatePropSheetExtArray(long str long)
|
||||||
169 stdcall SHDestroyPropSheetExtArray(long)
|
169 stdcall -noname SHDestroyPropSheetExtArray(long)
|
||||||
170 stdcall SHReplaceFromPropSheetExtArray(long long long long)
|
170 stdcall -noname SHReplaceFromPropSheetExtArray(long long long long)
|
||||||
171 stdcall PathCleanupSpec(ptr ptr)
|
171 stdcall -noname PathCleanupSpec(ptr ptr)
|
||||||
172 stdcall SHCreateLinks(long str ptr long ptr)
|
172 stdcall -noname SHCreateLinks(long str ptr long ptr)
|
||||||
173 stdcall SHValidateUNC(long long long)
|
173 stdcall -noname SHValidateUNC(long long long)
|
||||||
174 stdcall SHCreateShellFolderViewEx (ptr ptr)
|
174 stdcall -noname SHCreateShellFolderViewEx(ptr ptr)
|
||||||
175 stdcall SHGetSpecialFolderPath(long long long long) SHGetSpecialFolderPathAW
|
175 stdcall -noname SHGetSpecialFolderPath(long long long long) SHGetSpecialFolderPathAW
|
||||||
176 stdcall SHSetInstanceExplorer (long)
|
176 stdcall -noname SHSetInstanceExplorer(long)
|
||||||
177 stub DAD_SetDragImageFromListView
|
177 stub DAD_SetDragImageFromListView
|
||||||
178 stdcall SHObjectProperties(long long wstr wstr)
|
178 stdcall -noname SHObjectProperties(long long wstr wstr)
|
||||||
179 stdcall SHGetNewLinkInfoA(str str ptr long long)
|
179 stdcall -noname SHGetNewLinkInfoA(str str ptr long long)
|
||||||
180 stdcall SHGetNewLinkInfoW(wstr wstr ptr long long)
|
180 stdcall -noname SHGetNewLinkInfoW(wstr wstr ptr long long)
|
||||||
181 stdcall RegisterShellHook(long long)
|
181 stdcall -noname RegisterShellHook(long long)
|
||||||
182 varargs ShellMessageBoxW(long long long str long)
|
182 varargs -noname ShellMessageBoxW(long long long str long)
|
||||||
183 varargs ShellMessageBoxA(long long long str long)
|
183 varargs -noname ShellMessageBoxA(long long long str long)
|
||||||
184 stdcall ArrangeWindows(long long long long long)
|
184 stdcall -noname ArrangeWindows(long long long long long)
|
||||||
185 stub SHHandleDiskFull
|
185 stub SHHandleDiskFull
|
||||||
186 stdcall ILGetDisplayNameEx(ptr ptr ptr long)
|
186 stdcall -noname ILGetDisplayNameEx(ptr ptr ptr long)
|
||||||
187 stub ILGetPseudoNameW
|
187 stub ILGetPseudoNameW
|
||||||
188 stdcall ShellDDEInit(long)
|
188 stdcall -noname ShellDDEInit(long)
|
||||||
189 stdcall ILCreateFromPathA(str)
|
189 stdcall -noname ILCreateFromPathA(str)
|
||||||
190 stdcall ILCreateFromPathW(wstr)
|
190 stdcall -noname ILCreateFromPathW(wstr)
|
||||||
191 stdcall SHUpdateImageA(str long long long)
|
191 stdcall -noname SHUpdateImageA(str long long long)
|
||||||
192 stdcall SHUpdateImageW(wstr long long long)
|
192 stdcall -noname SHUpdateImageW(wstr long long long)
|
||||||
193 stdcall SHHandleUpdateImage(ptr)
|
193 stdcall -noname SHHandleUpdateImage(ptr)
|
||||||
194 stub SHCreatePropSheetExtArrayEx
|
194 stub SHCreatePropSheetExtArrayEx
|
||||||
195 stdcall SHFree(ptr)
|
195 stdcall -noname SHFree(ptr)
|
||||||
196 stdcall SHAlloc(long)
|
196 stdcall -noname SHAlloc(long)
|
||||||
197 stub SHGlobalDefect
|
197 stub SHGlobalDefect
|
||||||
198 stdcall SHAbortInvokeCommand ()
|
198 stdcall -noname SHAbortInvokeCommand()
|
||||||
199 stub SHGetFileIcon
|
199 stub SHGetFileIcon
|
||||||
200 stub SHLocalAlloc
|
200 stub SHLocalAlloc
|
||||||
201 stub SHLocalFree
|
201 stub SHLocalFree
|
||||||
|
@ -206,72 +199,15 @@
|
||||||
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 SHStartNetConnectionDialog(long str long)
|
215 stdcall -noname SHStartNetConnectionDialog(long str long)
|
||||||
243 stdcall @(long long) shell32_243
|
243 stdcall @(long long) shell32_243
|
||||||
244 stdcall SHInitRestricted(ptr ptr)
|
244 stdcall -noname SHInitRestricted(ptr ptr)
|
||||||
247 stdcall SHGetDataFromIDListA (ptr ptr long ptr long)
|
249 stdcall -noname PathParseIconLocation(ptr) PathParseIconLocationAW
|
||||||
248 stdcall SHGetDataFromIDListW (ptr ptr long ptr long)
|
250 stdcall -noname PathRemoveExtension(ptr) PathRemoveExtensionAW
|
||||||
249 stdcall PathParseIconLocation (ptr) PathParseIconLocationAW
|
251 stdcall -noname PathRemoveArgs(ptr) PathRemoveArgsAW
|
||||||
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)
|
||||||
|
@ -282,38 +218,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 RealDriveType (long long)
|
524 stdcall -noname RealDriveType(long long)
|
||||||
525 stub RealDriveTypeFlags
|
525 stub RealDriveTypeFlags
|
||||||
|
|
||||||
640 stdcall NTSHChangeNotifyRegister (long long long long long long)
|
640 stdcall -noname NTSHChangeNotifyRegister(long long long long long long)
|
||||||
641 stdcall NTSHChangeNotifyDeregister (long)
|
641 stdcall -noname NTSHChangeNotifyDeregister(long)
|
||||||
|
|
||||||
643 stub SHChangeNotifyReceive
|
643 stub SHChangeNotifyReceive
|
||||||
644 stdcall SHChangeNotification_Lock(long long ptr ptr)
|
644 stdcall -noname SHChangeNotification_Lock(long long ptr ptr)
|
||||||
645 stdcall SHChangeNotification_Unlock(long)
|
645 stdcall -noname 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 PathIsSameRoot(ptr ptr)PathIsSameRootAW
|
650 stdcall -noname PathIsSameRoot(ptr ptr) PathIsSameRootAW
|
||||||
|
|
||||||
# nt40/win98
|
# nt40/win98
|
||||||
651 stdcall ReadCabinetState (long long) # OldReadCabinetState
|
651 stdcall -noname ReadCabinetState(long long) # OldReadCabinetState
|
||||||
652 stdcall WriteCabinetState (long)
|
652 stdcall -noname WriteCabinetState(long)
|
||||||
653 stdcall PathProcessCommand (long long long long) PathProcessCommandAW
|
653 stdcall -noname 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 FileIconInit(long)
|
660 stdcall -noname FileIconInit(long)
|
||||||
680 stdcall IsUserAdmin()
|
680 stdcall -noname IsUserAdmin()
|
||||||
|
|
||||||
# >= NT5
|
# >= NT5
|
||||||
714 stdcall @(ptr)SHELL32_714 # PathIsTemporaryW
|
714 stdcall @(ptr) SHELL32_714 # PathIsTemporaryW
|
||||||
730 stdcall RestartDialogEx(long wstr long long)
|
730 stdcall -noname 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!!
|
||||||
|
|
||||||
|
@ -329,14 +265,22 @@
|
||||||
@ 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)
|
||||||
|
@ -353,9 +297,11 @@
|
||||||
@ 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
|
||||||
|
@ -373,16 +319,48 @@
|
||||||
@ 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)
|
||||||
|
@ -395,13 +373,47 @@
|
||||||
@ 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)
|
@ stdcall SHHelpShortcuts_RunDLL(long long long long) SHHelpShortcuts_RunDLLA
|
||||||
@ stub SHHelpShortcuts_RunDLLA
|
@ stdcall SHHelpShortcuts_RunDLLA(long long long long)
|
||||||
@ stub SHHelpShortcuts_RunDLLW
|
@ stdcall SHHelpShortcuts_RunDLLW(long long long long)
|
||||||
|
@ 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
|
||||||
|
|
||||||
#
|
#
|
||||||
|
@ -427,6 +439,9 @@
|
||||||
# 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
|
||||||
|
@ -434,6 +449,8 @@
|
||||||
@ 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_DEFAULT
|
LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL
|
||||||
|
|
||||||
MENU_001 MENU DISCARDABLE
|
MENU_001 MENU DISCARDABLE
|
||||||
BEGIN
|
BEGIN
|
||||||
|
|
|
@ -188,3 +188,35 @@ 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,6 +92,7 @@ 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);
|
||||||
|
@ -220,6 +221,8 @@ 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 (!strcasecmp(lpszExtension,lpszExtensions[i])) return TRUE;
|
if (!lstrcmpiA(lpszExtension,lpszExtensions[i])) return TRUE;
|
||||||
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
|
@ -1267,7 +1267,7 @@ static HRESULT _SHGetDefaultValue(BYTE folder, LPWSTR pszPath)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
FIXME("LoadString failed, missing translation?\n");
|
FIXME("(%d,%s), LoadString failed, missing translation?\n", folder, debugstr_w(pszPath));
|
||||||
hr = E_FAIL;
|
hr = E_FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,6 +46,7 @@ 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)
|
||||||
{
|
{
|
||||||
|
@ -55,4 +56,17 @@ 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
21
reactos/lib/shell32/shfldr_unixfs.c
Normal file
21
reactos/lib/shell32/shfldr_unixfs.c
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
/*
|
||||||
|
* 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)
|
||||||
{
|
{
|
||||||
FIXME("Strange error set by CreateProcess: %d\n", retval);
|
TRACE("CreateProcess returned error %d\n", retval);
|
||||||
retval = ERROR_BAD_FORMAT;
|
retval = ERROR_BAD_FORMAT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -861,7 +861,8 @@ 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
|
||||||
|
|
||||||
static int file_operation_delete( WIN32_FIND_DATAW *wfd,SHFILEOPSTRUCTW nFileOp, LPWSTR pFromFile,LPWSTR pTempFrom,HANDLE *hFind)
|
/* handle the complete deletion of `pTempFrom` */
|
||||||
|
static int shfileops_delete(WIN32_FIND_DATAW *wfd,SHFILEOPSTRUCTW nFileOp, LPWSTR pFromFile,LPWSTR pTempFrom,HANDLE *hFind)
|
||||||
|
|
||||||
{
|
{
|
||||||
LPWSTR lpFileName;
|
LPWSTR lpFileName;
|
||||||
|
@ -914,7 +915,7 @@ static int file_operation_delete( WIN32_FIND_DATAW *wfd,SHFILEOPSTRUCTW nFileOp,
|
||||||
* FOF_ALLOWUNDO, FOF_WANTMAPPINGHANDLE
|
* FOF_ALLOWUNDO, FOF_WANTMAPPINGHANDLE
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int file_operation_checkFlags(SHFILEOPSTRUCTW nFileOp)
|
static int shfileops_check_flags(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);
|
||||||
|
@ -945,6 +946,53 @@ static int file_operation_checkFlags(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.@]
|
||||||
*
|
*
|
||||||
|
@ -964,7 +1012,6 @@ 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;
|
||||||
|
@ -986,8 +1033,6 @@ 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;
|
||||||
|
|
||||||
|
@ -1016,12 +1061,9 @@ 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
|
||||||
*/
|
*/
|
||||||
|
|
||||||
ret = file_operation_checkFlags(nFileOp);
|
retCode = shfileops_check_flags(nFileOp);
|
||||||
if (ret != 0)
|
if (retCode)
|
||||||
{
|
|
||||||
retCode = ret;
|
|
||||||
goto shfileop_end;
|
goto shfileop_end;
|
||||||
}
|
|
||||||
|
|
||||||
if ((pNextFrom) && (!(b_MultiTo) || (pNextTo)))
|
if ((pNextFrom) && (!(b_MultiTo) || (pNextTo)))
|
||||||
{
|
{
|
||||||
|
@ -1108,17 +1150,10 @@ 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))
|
if ((FO_DELETE == FuncSwitch) && (b_Mask) && IsAttribDir(shfileops_get_parent_attr(pFromFile,pTempFrom)))
|
||||||
{
|
{
|
||||||
DWORD FromPathAttr;
|
/* FO_DELETE with mask and without found is valid */
|
||||||
pFromFile[0] = '\0';
|
goto shfileop_end;
|
||||||
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;
|
||||||
|
@ -1130,13 +1165,8 @@ 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 */
|
||||||
{
|
{
|
||||||
ret = file_operation_delete(&wfd,nFileOp,pFromFile,pTempFrom,&hFind);
|
retCode = shfileops_delete(&wfd,nFileOp,pFromFile,pTempFrom,&hFind);
|
||||||
/* if ret is not 0, nFileOp.fAnyOperationsAborted is TRUE */
|
/* if ret is not 0, nFileOp.fAnyOperationsAborted is TRUE and the loop will end */
|
||||||
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 */
|
||||||
|
|
||||||
|
@ -1146,9 +1176,7 @@ 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))
|
||||||
{
|
{
|
||||||
pToFile[0] = '\0';
|
ToPathAttr = shfileops_get_parent_attr(pToFile,pTempTo);
|
||||||
ToPathAttr = GetFileAttributesW(pTempTo);
|
|
||||||
pToFile[0] = '\\';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (FO_RENAME == FuncSwitch)
|
if (FO_RENAME == FuncSwitch)
|
||||||
|
@ -1202,15 +1230,7 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
||||||
nFileOp.fFlags = (nFileOp.fFlags | FOF_MULTIDESTFILES);
|
nFileOp.fFlags = (nFileOp.fFlags | FOF_MULTIDESTFILES);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
lpFileName = wfd.cAlternateFileName;
|
retCode = shfileops_do_operation(wfd,&nFileOp,pToFile,pFromFile);
|
||||||
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);
|
||||||
|
@ -1224,19 +1244,9 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
||||||
{
|
{
|
||||||
if (pToFile)
|
if (pToFile)
|
||||||
{
|
{
|
||||||
pToFile[0] = '\0';
|
ToPathAttr = shfileops_get_parent_attr2(pToFile,pTempTo,b_ToValid,&retCode);
|
||||||
ToPathAttr = GetFileAttributesW(pTempTo);
|
if (retCode)
|
||||||
if ((ToPathAttr == INVALID_FILE_ATTRIBUTES) && b_ToValid)
|
goto shfileop_end;
|
||||||
{
|
|
||||||
/* 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;
|
||||||
|
@ -1270,9 +1280,7 @@ int WINAPI SHFileOperationW(LPSHFILEOPSTRUCTW lpFileOp)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
pToFile[0] = '\0';
|
ToPathAttr = shfileops_get_parent_attr(pToFile,pTempTo);
|
||||||
ToPathAttr = GetFileAttributesW(pTempTo);
|
|
||||||
pToFile[0] = '\\';
|
|
||||||
if (IsAttribFile(ToPathAttr))
|
if (IsAttribFile(ToPathAttr))
|
||||||
{
|
{
|
||||||
/* error, is this tested ? */
|
/* error, is this tested ? */
|
||||||
|
@ -1403,7 +1411,16 @@ void WINAPI SHFreeNameMappings(HANDLE hNameMapping)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SheGetDirW [SHELL32.281]
|
* SheGetDirA [SHELL32.@]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
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)
|
||||||
|
@ -1412,7 +1429,16 @@ HRESULT WINAPI SheGetDirW(LPWSTR u, LPWSTR v)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*************************************************************************
|
/*************************************************************************
|
||||||
* SheChangeDirW [SHELL32.274]
|
* SheChangeDirA [SHELL32.@]
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
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) || strcasecmp(ext, "lnk"))
|
if (!_ILGetExtension(pidl, ext, MAX_PATH) || lstrcmpiA(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 = strcasecmp (szTemp1, szTemp2);
|
nReturn = lstrcmpiA (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 *iface, REFIID riid, LPVOID* ppvObj);
|
static HRESULT WINAPI IFileSystemBindData_fnQueryInterface(IFileSystemBindData *, REFIID, LPVOID*);
|
||||||
static ULONG WINAPI IFileSystemBindData_fnAddRef(IFileSystemBindData *iface);
|
static ULONG WINAPI IFileSystemBindData_fnAddRef(IFileSystemBindData *);
|
||||||
static ULONG WINAPI IFileSystemBindData_fnRelease(IFileSystemBindData *iface);
|
static ULONG WINAPI IFileSystemBindData_fnRelease(IFileSystemBindData *);
|
||||||
static HRESULT WINAPI IFileSystemBindData_fnGetFindData(IFileSystemBindData *iface, WIN32_FIND_DATAW *pfd);
|
static HRESULT WINAPI IFileSystemBindData_fnGetFindData(IFileSystemBindData *, WIN32_FIND_DATAW *);
|
||||||
static HRESULT WINAPI IFileSystemBindData_fnSetFindData(IFileSystemBindData *iface, const WIN32_FIND_DATAW *pfd);
|
static HRESULT WINAPI IFileSystemBindData_fnSetFindData(IFileSystemBindData *, const WIN32_FIND_DATAW *);
|
||||||
|
|
||||||
static struct IFileSystemBindDataVtbl sbvt =
|
static struct IFileSystemBindDataVtbl sbvt =
|
||||||
{
|
{
|
||||||
|
@ -62,165 +62,165 @@ static struct IFileSystemBindDataVtbl sbvt =
|
||||||
IFileSystemBindData_fnGetFindData,
|
IFileSystemBindData_fnGetFindData,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const WCHAR wFileSystemBindData[] = {'F','i','l','e',' ','S','y','s','t','e','m',' ','B','i','n','d','D','a','t','a',0};
|
static const WCHAR wFileSystemBindData[] = {
|
||||||
|
'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 = (IFileSystemBindDataImpl*)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeof(IFileSystemBindDataImpl));
|
sb = 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);
|
|
||||||
|
|
||||||
IFileSystemBindData_Release((IFileSystemBindData*)sb);
|
bindOpts.cbStruct = sizeof(BIND_OPTS);
|
||||||
}
|
bindOpts.grfFlags = 0;
|
||||||
else
|
bindOpts.grfMode = STGM_CREATE;
|
||||||
HeapFree(GetProcessHeap(), 0, sb);
|
bindOpts.dwTickCountDeadline = 0;
|
||||||
return ret;
|
IBindCtx_SetBindOptions(*ppV, &bindOpts);
|
||||||
|
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;
|
||||||
*ppV = This;
|
else if (IsEqualIID(riid, &IID_IFileSystemBindData))
|
||||||
}
|
*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(IFileSystemBindData *iface, WIN32_FIND_DATAW *pfd)
|
static HRESULT WINAPI IFileSystemBindData_fnGetFindData(
|
||||||
|
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(IFileSystemBindData *iface, const WIN32_FIND_DATAW *pfd)
|
static HRESULT WINAPI IFileSystemBindData_fnSetFindData(
|
||||||
|
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 = strcasecmp(strName1, strName2);
|
nDiff = lstrcmpiA(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 = strcasecmp(strName1, strName2);
|
nDiff = lstrcmpiA(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 = strcasecmp(strName1, strName2);
|
nDiff = lstrcmpiA(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 = strcasecmp(strName1, strName2);
|
nDiff = lstrcmpiA(strName1, strName2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!pSortInfo->bIsAscending)
|
if(!pSortInfo->bIsAscending)
|
||||||
|
|
|
@ -88,6 +88,8 @@ extern "C" {
|
||||||
#define PO_RENAME 20
|
#define PO_RENAME 20
|
||||||
#define PO_PORTCHANGE 32
|
#define PO_PORTCHANGE 32
|
||||||
#define PO_REN_PORT 52
|
#define PO_REN_PORT 52
|
||||||
|
#define SHGFI_ADDOVERLAYS 32
|
||||||
|
#define SHGFI_OVERLAYINDEX 64
|
||||||
#define SHGFI_ICON 256
|
#define SHGFI_ICON 256
|
||||||
#define SHGFI_DISPLAYNAME 512
|
#define SHGFI_DISPLAYNAME 512
|
||||||
#define SHGFI_TYPENAME 1024
|
#define SHGFI_TYPENAME 1024
|
||||||
|
|
|
@ -3754,6 +3754,13 @@ BOOL WINAPI SetCaretBlinkTime(UINT);
|
||||||
BOOL WINAPI SetCaretPos(int,int);
|
BOOL WINAPI SetCaretPos(int,int);
|
||||||
DWORD WINAPI SetClassLongA(HWND,int,LONG);
|
DWORD WINAPI SetClassLongA(HWND,int,LONG);
|
||||||
DWORD WINAPI SetClassLongW(HWND,int,LONG);
|
DWORD WINAPI SetClassLongW(HWND,int,LONG);
|
||||||
|
#ifdef _WIN64
|
||||||
|
ULONG_PTR WINAPI SetClassLongPtrA(HWND,INT,LONG_PTR);
|
||||||
|
ULONG_PTR WINAPI SetClassLongPtrW(HWND,INT,LONG_PTR);
|
||||||
|
#else
|
||||||
|
#define SetClassLongPtrA SetClassLongA
|
||||||
|
#define SetClassLongPtrW SetClassLongW
|
||||||
|
#endif
|
||||||
WORD WINAPI SetClassWord(HWND,int,WORD);
|
WORD WINAPI SetClassWord(HWND,int,WORD);
|
||||||
HANDLE WINAPI SetClipboardData(UINT,HANDLE);
|
HANDLE WINAPI SetClipboardData(UINT,HANDLE);
|
||||||
HWND WINAPI SetClipboardViewer(HWND);
|
HWND WINAPI SetClipboardViewer(HWND);
|
||||||
|
@ -4027,6 +4034,7 @@ typedef MONITORINFOEXW MONITORINFOEX, *LPMONITORINFOEX;
|
||||||
#define SendMessageTimeout SendMessageTimeoutW
|
#define SendMessageTimeout SendMessageTimeoutW
|
||||||
#define SendNotifyMessage SendNotifyMessageW
|
#define SendNotifyMessage SendNotifyMessageW
|
||||||
#define SetClassLong SetClassLongW
|
#define SetClassLong SetClassLongW
|
||||||
|
#define SetClassLongPtr SetClassLongPtrW
|
||||||
#define SetDlgItemText SetDlgItemTextW
|
#define SetDlgItemText SetDlgItemTextW
|
||||||
#define SetMenuItemInfo SetMenuItemInfoW
|
#define SetMenuItemInfo SetMenuItemInfoW
|
||||||
#define SetProp SetPropW
|
#define SetProp SetPropW
|
||||||
|
@ -4192,6 +4200,7 @@ typedef MONITORINFOEXA MONITORINFOEX, *LPMONITORINFOEX;
|
||||||
#define SendMessageTimeout SendMessageTimeoutA
|
#define SendMessageTimeout SendMessageTimeoutA
|
||||||
#define SendNotifyMessage SendNotifyMessageA
|
#define SendNotifyMessage SendNotifyMessageA
|
||||||
#define SetClassLong SetClassLongA
|
#define SetClassLong SetClassLongA
|
||||||
|
#define SetClassLongPtr SetClassLongPtrA
|
||||||
#define SetDlgItemText SetDlgItemTextA
|
#define SetDlgItemText SetDlgItemTextA
|
||||||
#define SetMenuItemInfo SetMenuItemInfoA
|
#define SetMenuItemInfo SetMenuItemInfoA
|
||||||
#define SetProp SetPropA
|
#define SetProp SetPropA
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue