#include <windef.h>
#include <winbase.h>
-#include <winternl.h>
+#include <wine/winternl.h>
#include <shlobj.h>
#include <undocshell.h>
#include <shlwapi.h>
#include <commdlg.h>
#include <commoncontrols.h>
-#include <recyclebin.h>
+#include "../shellrecyclebin/recyclebin.h"
#include <wine/debug.h>
#include <wine/unicode.h>
extern INT WINAPI EnumMRUListA(HANDLE hList, INT nItemPos, LPVOID lpBuffer, DWORD nBufferSize);
-/* Get a function pointer from a DLL handle */
-#define GET_FUNC(func, funcType, module, name, fail) \
- do { \
- if (!func) { \
- if (!SHELL32_h##module && !(SHELL32_h##module = LoadLibraryA(#module ".dll"))) return fail; \
- func = (funcType)GetProcAddress(SHELL32_h##module, name); \
- if (!func) return fail; \
- } \
- } while (0)
-
-/* Function pointers for GET_FUNC macro */
-static HMODULE SHELL32_hshlwapi=NULL;
-
-
/*************************************************************************
* ParseFieldA [internal]
*
DWORD dwType)
{
if (dwType == 3)
+ {
+ SetTaskmanWindow(hWnd);
return RegisterShellHookWindow(hWnd);
+ }
else if (dwType == 0)
+ {
return DeregisterShellHookWindow(hWnd);
+ }
ERR("Unsupported argument");
return FALSE;
switch (uFlags)
{
case SHARD_PIDL:
- SHGetPathFromIDListA(pv, doc_name);
+ if (!SHGetPathFromIDListA(pv, doc_name))
+ {
+ WARN("can't get path from PIDL\n");
+ return;
+ }
break;
case SHARD_PATHA:
ext = strrchr(doc_name, '.');
if (!lstrcmpiA(ext, ".lnk"))
{
+ WCHAR doc_nameW[MAX_PATH];
IShellLinkA* ShellLink;
- IShellLink_ConstructFromFile(NULL, &IID_IShellLinkA, (LPCITEMIDLIST)SHSimpleIDListFromPathA(doc_name), (LPVOID*)&ShellLink);
+ int nLength = MultiByteToWideChar(CP_ACP, 0, doc_name, -1, doc_nameW, MAX_PATH);
+ if (nLength == 0)
+ return;
+
+ IShellLink_ConstructFromPath(doc_nameW, &IID_IShellLinkA, (LPVOID*)&ShellLink);
IShellLinkA_GetPath(ShellLink, doc_name, MAX_PATH, NULL, 0);
IShellLinkA_Release(ShellLink);
}
/* buffer size looks good */
ptr += 12; /* get to string */
len = bufused - (ptr-buffer); /* get length of buf remaining */
- if ((lstrlenA(ptr) > 0) && (lstrlenA(ptr) <= len-1)) {
+ if (ptr[0] && (lstrlenA(ptr) <= len-1)) {
/* appears to be good string */
lstrcpyA(old_lnk_name, link_dir);
PathAppendA(old_lnk_name, ptr);
if( r == ERROR_SUCCESS )
{
type = REG_BINARY;
- r = RegQueryValueExW( hkey, szwSettings,
+ r = RegQueryValueExW( hkey, szwSettings,
NULL, &type, (LPBYTE)cs, (LPDWORD)&length );
RegCloseKey( hkey );
-
+
}
/* if we can't read from the registry, create default values */
cs->fAdminsCreateCommonGroups = TRUE;
cs->fMenuEnumFilter = 96;
}
-
+
return TRUE;
}
NULL, 0, KEY_ALL_ACCESS, NULL, &hkey, NULL);
if( r == ERROR_SUCCESS )
{
- r = RegSetValueExW( hkey, szwSettings, 0,
+ r = RegSetValueExW( hkey, szwSettings, 0,
REG_BINARY, (LPBYTE) cs, cs->cLength);
RegCloseKey( hkey );
*
*/
BOOL WINAPI FileIconInit(BOOL bFullInit)
-{ FIXME("(%s)\n", bFullInit ? "true" : "false");
- return FALSE;
+{
+ return SIC_Initialize();
}
/*************************************************************************
return bResult;
}
-/*************************************************************************
- * SHAllocShared [SHELL32.520]
- *
- * See shlwapi.SHAllocShared
- */
-HANDLE WINAPI SHAllocShared(LPCVOID lpvData, DWORD dwSize, DWORD dwProcId)
-{
- typedef HANDLE (WINAPI *SHAllocSharedProc)(LPCVOID, DWORD, DWORD);
- static SHAllocSharedProc pSHAllocShared;
-
- GET_FUNC(pSHAllocShared, SHAllocSharedProc, shlwapi, (char*)7, NULL);
- return pSHAllocShared(lpvData, dwSize, dwProcId);
-}
-
-/*************************************************************************
- * SHLockShared [SHELL32.521]
- *
- * See shlwapi.SHLockShared
- */
-LPVOID WINAPI SHLockShared(HANDLE hShared, DWORD dwProcId)
-{
- typedef HANDLE (WINAPI *SHLockSharedProc)(HANDLE, DWORD);
- static SHLockSharedProc pSHLockShared;
-
- GET_FUNC(pSHLockShared, SHLockSharedProc, shlwapi, (char*)8, NULL);
- return pSHLockShared(hShared, dwProcId);
-}
-
-/*************************************************************************
- * SHUnlockShared [SHELL32.522]
- *
- * See shlwapi.SHUnlockShared
- */
-BOOL WINAPI SHUnlockShared(LPVOID lpView)
-{
- typedef HANDLE (WINAPI *SHUnlockSharedProc)(LPCVOID);
- static SHUnlockSharedProc pSHUnlockShared;
-
- GET_FUNC(pSHUnlockShared, SHUnlockSharedProc, shlwapi, (char*)9, FALSE);
- return pSHUnlockShared(lpView) != NULL;
-}
-
-/*************************************************************************
- * SHFreeShared [SHELL32.523]
- *
- * See shlwapi.SHFreeShared
- */
-BOOL WINAPI SHFreeShared(HANDLE hShared, DWORD dwProcId)
-{
- typedef HANDLE (WINAPI *SHFreeSharedProc)(HANDLE, DWORD);
- static SHFreeSharedProc pSHFreeShared;
-
- GET_FUNC(pSHFreeShared, SHFreeSharedProc, shlwapi, (char*)10, FALSE);
- return pSHFreeShared(hShared, dwProcId) != NULL;
-}
-
/*************************************************************************
* SetAppStartingCursor [SHELL32.99]
*/
/************************************************************************
* DoEnvironmentSubst [SHELL32.53]
*
- * See DoEnvironmentSubstA.
+ * See DoEnvironmentSubstA.
*/
DWORD WINAPI DoEnvironmentSubstAW(LPVOID x, UINT y)
{
* Create IDataObject from PIDLs??
*/
HRESULT WINAPI CIDLData_CreateFromIDArray(
- LPCITEMIDLIST pidlFolder,
+ PCIDLIST_ABSOLUTE pidlFolder,
UINT cpidlFiles,
- LPCITEMIDLIST *lppidlFiles,
+ PCUIDLIST_RELATIVE_ARRAY lppidlFiles,
LPDATAOBJECT *ppdataObject)
{
UINT i;
/*************************************************************************
* LinkWindow_UnregisterClass (SHELL32.259)
*/
-BOOL WINAPI LinkWindow_UnregisterClass(void)
+BOOL WINAPI LinkWindow_UnregisterClass(DWORD dwUnused)
{
FIXME("()\n");
return TRUE;