/*
* Copyright (C) the Wine project
*
* 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
/*
* Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
* other than GPL or LGPL is available it will apply instead, Oracle elects to use only
* the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
* a choice of LGPL license versions is made available with the language indicating
* that LGPLv2 or any later version may be used, or where a choice of which version
* of the LGPL is applied is otherwise unspecified.
*/
#ifndef __WINE_SHLOBJ_H
#define __WINE_SHLOBJ_H
#include <ole2.h>
#include <commctrl.h>
#include <prsht.h>
#include <shlguid.h>
#include <shtypes.h>
#include <shobjidl.h>
#ifdef WINE_NO_UNICODE_MACROS
#endif
#ifdef __cplusplus
extern "C" {
#endif /* defined(__cplusplus) */
/* Except for specific structs, this header is byte packed */
#include <pshpack1.h>
#ifndef HPSXA_DEFINED
#define HPSXA_DEFINED
#endif
int WINAPI IsNetDrive(int);
/* SHFormatDrive flags */
/* SHPathPrepareForWrite flags */
/* SHObjectProperties flags */
/* Shell_MergeMenus flags */
/*****************************************************************************
* IContextMenu interface
*/
/* DATAOBJECT_InitShellIDList*/
/* DATAOBJECT_InitFileGroupDesc */
/* DATAOBJECT_InitFileContents*/
#if defined(__GNUC__)
# define CFSTR_SHELLIDLISTW \
# define CFSTR_SHELLIDLISTOFFSETW \
(const WCHAR []){ 'S','h','e','l','l',' ','O','b','j','e','c','t',' ','O','f','f','s','e','t','s',0 }
# define CFSTR_NETRESOURCESW \
# define CFSTR_FILEDESCRIPTORW \
(const WCHAR []){ 'F','i','l','e','G','r','o','u','p','D','e','s','c','r','i','p','t','o','r','W',0 }
# define CFSTR_FILECONTENTSW \
# define CFSTR_FILENAMEW \
# define CFSTR_FILENAMEMAPW \
# define CFSTR_PRINTERGROUPW \
# define CFSTR_SHELLURLW \
(const WCHAR []){ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r',0 }
# define CFSTR_INETURLW \
(const WCHAR []){ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r','W',0 }
# define CFSTR_PREFERREDDROPEFFECTW \
(const WCHAR []){ 'P','r','e','f','e','r','r','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 }
# define CFSTR_PERFORMEDDROPEFFECTW \
(const WCHAR []){ 'P','e','r','f','o','r','m','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 }
# define CFSTR_PASTESUCCEEDEDW \
# define CFSTR_INDRAGLOOPW \
# define CFSTR_DRAGCONTEXTW \
# define CFSTR_MOUNTEDVOLUMEW \
# define CFSTR_PERSISTEDDATAOBJECTW \
# define CFSTR_TARGETCLSIDW \
# define CFSTR_AUTOPLAY_SHELLIDLISTSW \
' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 }
# define CFSTR_LOGICALPERFORMEDDROPEFFECTW \
' ','D','r','o','p','E','f','f','e','c','t',0 }
#else
{ 'S','h','e','l','l',' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 };
{ 'S','h','e','l','l',' ','O','b','j','e','c','t',' ','O','f','f','s','e','t','s',0 };
{ 'N','e','t',' ','R','e','s','o','u','r','c','e',0 };
{ 'F','i','l','e','G','r','o','u','p','D','e','s','c','r','i','p','t','o','r','W',0 };
{ 'F','i','l','e','C','o','n','t','e','n','t','s',0 };
{ 'F','i','l','e','N','a','m','e','W',0 };
{ 'F','i','l','e','N','a','m','e','M','a','p','W',0 };
{ 'P','r','i','n','t','e','r','F','r','i','e','n','d','l','y','N','a','m','e',0 };
{ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r',0 };
{ 'U','n','i','f','o','r','m','R','e','s','o','u','r','c','e','L','o','c','a','t','o','r','W',0 };
{ 'P','r','e','f','e','r','r','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 };
{ 'P','e','r','f','o','r','m','e','d',' ','D','r','o','p','E','f','f','e','c','t',0 };
{ 'P','a','s','t','e',' ','S','u','c','c','e','e','d','e','d',0 };
{ 'I','n','S','h','e','l','l','D','r','a','g','L','o','o','p',0 };
{ 'D','r','a','g','C','o','n','t','e','x','t',0 };
{ 'M','o','u','n','t','e','d','V','o','l','u','m','e',0 };
{ 'P','e','r','s','i','s','t','e','d','D','a','t','a','O','b','j','e','c','t',0 };
{ 'T','a','r','g','e','t','C','L','S','I','D',0 };
{ 'A','u','t','o','p','l','a','y',' ','E','n','u','m','e','r','a','t','e','d',
' ','I','D','L','i','s','t',' ','A','r','r','a','y',0 };
{ 'L','o','g','i','c','a','l',' ','P','e','r','f','o','r','m','e','d',
' ','D','r','o','p','E','f','f','e','c','t',0 };
#endif
typedef struct
/************************************************************************
* IShellView interface
*/
/* undocumented */
/* 0x7030-0x703f are used by the shellbrowser */
/* undocumented toolbar items from stddlg's*/
/*
* Global submenu IDs and separator IDs
*/
/* control IDs known to the view */
{
/*** IUnknown methods ***/
/*** IShellDetails methods ***/
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IShellDetails methods ***/
#endif
/* IQueryInfo interface */
{
/*** IUnknown methods ***/
/*** IQueryInfo methods ***/
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IQueryInfo methods ***/
#endif
/* IInputObject interface */
{
/*** IUnknown methods ***/
/*** IInputObject methods ***/
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IInputObject methods ***/
#endif
/* IInputObjectSite interface */
{
/*** IUnknown methods ***/
/*** IInputObjectSite methods ***/
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IInputObject methods ***/
#endif
/* IObjMgr interface */
{
/*** IUnknown methods ***/
/*** IObjMgr methods ***/
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IObjMgr methods ***/
#endif
/* IACList interface */
{
/*** IUnknown methods ***/
/*** IACList methods ***/
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IACList methods ***/
#endif
/* IACList2 interface */
{
/*** IUnknown methods ***/
/*** IACList methods ***/
/*** IACList2 methods ***/
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IACList2 methods ***/
#endif
/****************************************************************************
* IShellFolderViewCB interface
*/
{
/*** IUnknown methods ***/
/*** IShellFolderViewCB methods ***/
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IShellFolderViewCB methods ***/
#endif
/****************************************************************************
* IShellFolderView interface
*/
#include <pshpack8.h>
typedef struct _ITEMSPACING
{
int cxSmall;
int cySmall;
int cxLarge;
int cyLarge;
} ITEMSPACING;
#include <poppack.h>
{
/*** IUnknown methods ***/
/*** IShellFolderView methods ***/
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IShellFolderView methods ***/
#endif
/* IProgressDialog interface */
{
/*** IUnknown methods ***/
/*** IProgressDialog methods ***/
STDMETHOD(StartProgressDialog)(THIS_ HWND hwndParent, IUnknown *punkEnableModeless, DWORD dwFlags, LPCVOID reserved) PURE;
};
#if !defined(__cplusplus) || defined(CINTERFACE)
/*** IUnknown methods ***/
/*** IProgressDialog methods ***/
#endif
/****************************************************************************
* SHAddToRecentDocs API
*/
/****************************************************************************
* SHBrowseForFolder API
*/
#include <pshpack8.h>
typedef struct tagBROWSEINFOA {
typedef struct tagBROWSEINFOW {
#include <poppack.h>
/* Browsing for directory. */
/* message from browser */
/* messages to browser */
/**********************************************************************
* SHCreateShellFolderViewEx API
*/
#include <pshpack8.h>
typedef struct _CSFV
{
#include <poppack.h>
/* SHCreateShellFolderViewEx callback messages */
#include <pshpack8.h>
typedef struct _SFV_CREATE
{
} SFV_CREATE;
#include <poppack.h>
/* Types and definitions for the SFM_* parameters */
#include <pshpack8.h>
#define QCMINFO_PLACE_BEFORE 0
typedef struct _QCMINFO_IDMAP_PLACEMENT
{
typedef struct _QCMINFO_IDMAP
{
typedef struct _QCMINFO
{
typedef struct _TBINFO
{
#include <poppack.h>
/****************************************************************************
* SHShellFolderView_Message API
*/
/* SHShellFolderView_Message messages */
/****************************************************************************
* SHGetDataFromIDList API
*/
#include <pshpack8.h>
typedef struct _SHDESCRIPTIONID
#include <poppack.h>
HRESULT WINAPI SHGetDataFromIDListA(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
HRESULT WINAPI SHGetDataFromIDListW(LPSHELLFOLDER psf, LPCITEMIDLIST pidl, int nFormat, LPVOID pv, int cb);
/**********************************************************************
* SHGetSetSettings ()
*/
typedef struct
{
int iSortDirection;
/**********************************************************************
* SHGetSettings ()
*/
typedef struct
/****************************************************************************
* SHRestricted API
*/
typedef enum RESTRICTIONS
{
/* 0x4000006C
0x4000006D
0x4000006E */
} RESTRICTIONS;
/****************************************************************************
* SHChangeNotify API
*/
typedef struct _SHChangeNotifyEntry
{
typedef enum {
typedef struct tagDATABLOCKHEADER
{
typedef struct {
typedef struct {
typedef struct {
typedef struct {
typedef struct _SHChangeDWORDAsIDList {
typedef struct _SHChangeProductKeyAsIDList {
/****************************************************************************
* SHCreateDirectory API
*/
/****************************************************************************
* SHGetSetFolderCustomSettings API
*/
typedef struct {
int iIconIndex;
HRESULT WINAPI SHGetSetFolderCustomSettings(LPSHFOLDERCUSTOMSETTINGS pfcs, LPCSTR pszPath, DWORD dwReadWrite);
/****************************************************************************
* SHGetSpecialFolderLocation API
*/
HRESULT WINAPI SHGetFolderLocation(HWND hwndOwner, int nFolder, HANDLE hToken, DWORD dwReserved, LPITEMIDLIST *ppidl);
/****************************************************************************
* SHGetFolderPath API
*/
typedef enum {
SHGFP_TYPE_CURRENT = 0,
} SHGFP_TYPE;
HRESULT WINAPI SHGetFolderPathA(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPSTR pszPath);
HRESULT WINAPI SHGetFolderPathW(HWND hwnd, int nFolder, HANDLE hToken, DWORD dwFlags, LPWSTR pszPath);
/****************************************************************************
* SHGetDesktopFolder API
*/
/****************************************************************************
* SHBindToParent API
*/
HRESULT WINAPI SHBindToParent(LPCITEMIDLIST pidl, REFIID riid, LPVOID *ppv, LPCITEMIDLIST *ppidlLast);
/****************************************************************************
* SHDefExtractIcon API
*/
/*
* DROPFILES for CF_HDROP and CF_PRINTERS
*/
typedef struct _DROPFILES
{
/*
* Properties of a file in the clipboard
*/
typedef struct _FILEDESCRIPTORA {
typedef struct _FILEDESCRIPTORW {
/*
* CF_FILEGROUPDESCRIPTOR clipboard format
*/
typedef struct _FILEGROUPDESCRIPTORA {
typedef struct _FILEGROUPDESCRIPTORW {
/****************************************************************************
* Cabinet functions
*/
typedef struct {
/****************************************************************************
* Path Manipulation Routines
*/
/* PathProcessCommand flags */
/* PathResolve flags */
/****************************************************************************
* Drag And Drop Routines
*/
/* DAD_AutoScroll sample structure */
typedef struct
{
int iNextSample;
/****************************************************************************
* Internet shortcut properties
*/
{
}
#include <pshpack8.h>
typedef struct {
#include <poppack.h>
IContextMenu **ppcm);
#include <poppack.h>
#ifdef __cplusplus
} /* extern "C" */
#endif /* defined(__cplusplus) */
#endif /* __WINE_SHLOBJ_H */