/*** Autogenerated by WIDL 6.4 from include/shldisp.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __shldisp_h__
#define __shldisp_h__

/* Forward declarations */

#ifndef __IFolderViewOC_FWD_DEFINED__
#define __IFolderViewOC_FWD_DEFINED__
typedef interface IFolderViewOC IFolderViewOC;
#ifdef __cplusplus
interface IFolderViewOC;
#endif /* __cplusplus */
#endif

#ifndef __DShellFolderViewEvents_FWD_DEFINED__
#define __DShellFolderViewEvents_FWD_DEFINED__
typedef interface DShellFolderViewEvents DShellFolderViewEvents;
#ifdef __cplusplus
interface DShellFolderViewEvents;
#endif /* __cplusplus */
#endif

#ifndef __ShellFolderViewOC_FWD_DEFINED__
#define __ShellFolderViewOC_FWD_DEFINED__
#ifdef __cplusplus
typedef class ShellFolderViewOC ShellFolderViewOC;
#else
typedef struct ShellFolderViewOC ShellFolderViewOC;
#endif /* defined __cplusplus */
#endif /* defined __ShellFolderViewOC_FWD_DEFINED__ */

#ifndef __DFConstraint_FWD_DEFINED__
#define __DFConstraint_FWD_DEFINED__
typedef interface DFConstraint DFConstraint;
#ifdef __cplusplus
interface DFConstraint;
#endif /* __cplusplus */
#endif

#ifndef __Folder_FWD_DEFINED__
#define __Folder_FWD_DEFINED__
typedef interface Folder Folder;
#ifdef __cplusplus
interface Folder;
#endif /* __cplusplus */
#endif

#ifndef __Folder2_FWD_DEFINED__
#define __Folder2_FWD_DEFINED__
typedef interface Folder2 Folder2;
#ifdef __cplusplus
interface Folder2;
#endif /* __cplusplus */
#endif

#ifndef __Folder3_FWD_DEFINED__
#define __Folder3_FWD_DEFINED__
typedef interface Folder3 Folder3;
#ifdef __cplusplus
interface Folder3;
#endif /* __cplusplus */
#endif

#ifndef __FolderItem_FWD_DEFINED__
#define __FolderItem_FWD_DEFINED__
typedef interface FolderItem FolderItem;
#ifdef __cplusplus
interface FolderItem;
#endif /* __cplusplus */
#endif

#ifndef __FolderItem2_FWD_DEFINED__
#define __FolderItem2_FWD_DEFINED__
typedef interface FolderItem2 FolderItem2;
#ifdef __cplusplus
interface FolderItem2;
#endif /* __cplusplus */
#endif

#ifndef __ShellFolderItem_FWD_DEFINED__
#define __ShellFolderItem_FWD_DEFINED__
#ifdef __cplusplus
typedef class ShellFolderItem ShellFolderItem;
#else
typedef struct ShellFolderItem ShellFolderItem;
#endif /* defined __cplusplus */
#endif /* defined __ShellFolderItem_FWD_DEFINED__ */

#ifndef __FolderItems_FWD_DEFINED__
#define __FolderItems_FWD_DEFINED__
typedef interface FolderItems FolderItems;
#ifdef __cplusplus
interface FolderItems;
#endif /* __cplusplus */
#endif

#ifndef __FolderItems2_FWD_DEFINED__
#define __FolderItems2_FWD_DEFINED__
typedef interface FolderItems2 FolderItems2;
#ifdef __cplusplus
interface FolderItems2;
#endif /* __cplusplus */
#endif

#ifndef __FolderItems3_FWD_DEFINED__
#define __FolderItems3_FWD_DEFINED__
typedef interface FolderItems3 FolderItems3;
#ifdef __cplusplus
interface FolderItems3;
#endif /* __cplusplus */
#endif

#ifndef __FolderItemVerb_FWD_DEFINED__
#define __FolderItemVerb_FWD_DEFINED__
typedef interface FolderItemVerb FolderItemVerb;
#ifdef __cplusplus
interface FolderItemVerb;
#endif /* __cplusplus */
#endif

#ifndef __FolderItemVerbs_FWD_DEFINED__
#define __FolderItemVerbs_FWD_DEFINED__
typedef interface FolderItemVerbs FolderItemVerbs;
#ifdef __cplusplus
interface FolderItemVerbs;
#endif /* __cplusplus */
#endif

#ifndef __IShellLinkDual_FWD_DEFINED__
#define __IShellLinkDual_FWD_DEFINED__
typedef interface IShellLinkDual IShellLinkDual;
#ifdef __cplusplus
interface IShellLinkDual;
#endif /* __cplusplus */
#endif

#ifndef __IShellLinkDual2_FWD_DEFINED__
#define __IShellLinkDual2_FWD_DEFINED__
typedef interface IShellLinkDual2 IShellLinkDual2;
#ifdef __cplusplus
interface IShellLinkDual2;
#endif /* __cplusplus */
#endif

#ifndef __ShellLinkObject_FWD_DEFINED__
#define __ShellLinkObject_FWD_DEFINED__
#ifdef __cplusplus
typedef class ShellLinkObject ShellLinkObject;
#else
typedef struct ShellLinkObject ShellLinkObject;
#endif /* defined __cplusplus */
#endif /* defined __ShellLinkObject_FWD_DEFINED__ */

#ifndef __IShellFolderViewDual_FWD_DEFINED__
#define __IShellFolderViewDual_FWD_DEFINED__
typedef interface IShellFolderViewDual IShellFolderViewDual;
#ifdef __cplusplus
interface IShellFolderViewDual;
#endif /* __cplusplus */
#endif

#ifndef __IShellFolderViewDual2_FWD_DEFINED__
#define __IShellFolderViewDual2_FWD_DEFINED__
typedef interface IShellFolderViewDual2 IShellFolderViewDual2;
#ifdef __cplusplus
interface IShellFolderViewDual2;
#endif /* __cplusplus */
#endif

#ifndef __IShellFolderViewDual3_FWD_DEFINED__
#define __IShellFolderViewDual3_FWD_DEFINED__
typedef interface IShellFolderViewDual3 IShellFolderViewDual3;
#ifdef __cplusplus
interface IShellFolderViewDual3;
#endif /* __cplusplus */
#endif

#ifndef __ShellFolderView_FWD_DEFINED__
#define __ShellFolderView_FWD_DEFINED__
#ifdef __cplusplus
typedef class ShellFolderView ShellFolderView;
#else
typedef struct ShellFolderView ShellFolderView;
#endif /* defined __cplusplus */
#endif /* defined __ShellFolderView_FWD_DEFINED__ */

#ifndef __IShellDispatch_FWD_DEFINED__
#define __IShellDispatch_FWD_DEFINED__
typedef interface IShellDispatch IShellDispatch;
#ifdef __cplusplus
interface IShellDispatch;
#endif /* __cplusplus */
#endif

#ifndef __IShellDispatch2_FWD_DEFINED__
#define __IShellDispatch2_FWD_DEFINED__
typedef interface IShellDispatch2 IShellDispatch2;
#ifdef __cplusplus
interface IShellDispatch2;
#endif /* __cplusplus */
#endif

#ifndef __IShellDispatch3_FWD_DEFINED__
#define __IShellDispatch3_FWD_DEFINED__
typedef interface IShellDispatch3 IShellDispatch3;
#ifdef __cplusplus
interface IShellDispatch3;
#endif /* __cplusplus */
#endif

#ifndef __IShellDispatch4_FWD_DEFINED__
#define __IShellDispatch4_FWD_DEFINED__
typedef interface IShellDispatch4 IShellDispatch4;
#ifdef __cplusplus
interface IShellDispatch4;
#endif /* __cplusplus */
#endif

#ifndef __IShellDispatch5_FWD_DEFINED__
#define __IShellDispatch5_FWD_DEFINED__
typedef interface IShellDispatch5 IShellDispatch5;
#ifdef __cplusplus
interface IShellDispatch5;
#endif /* __cplusplus */
#endif

#ifndef __IShellDispatch6_FWD_DEFINED__
#define __IShellDispatch6_FWD_DEFINED__
typedef interface IShellDispatch6 IShellDispatch6;
#ifdef __cplusplus
interface IShellDispatch6;
#endif /* __cplusplus */
#endif

#ifndef __Shell_FWD_DEFINED__
#define __Shell_FWD_DEFINED__
#ifdef __cplusplus
typedef class Shell Shell;
#else
typedef struct Shell Shell;
#endif /* defined __cplusplus */
#endif /* defined __Shell_FWD_DEFINED__ */

#ifndef __ShellDispatchInproc_FWD_DEFINED__
#define __ShellDispatchInproc_FWD_DEFINED__
#ifdef __cplusplus
typedef class ShellDispatchInproc ShellDispatchInproc;
#else
typedef struct ShellDispatchInproc ShellDispatchInproc;
#endif /* defined __cplusplus */
#endif /* defined __ShellDispatchInproc_FWD_DEFINED__ */

#ifndef __IFileSearchBand_FWD_DEFINED__
#define __IFileSearchBand_FWD_DEFINED__
typedef interface IFileSearchBand IFileSearchBand;
#ifdef __cplusplus
interface IFileSearchBand;
#endif /* __cplusplus */
#endif

#ifndef __FileSearchBand_FWD_DEFINED__
#define __FileSearchBand_FWD_DEFINED__
#ifdef __cplusplus
typedef class FileSearchBand FileSearchBand;
#else
typedef struct FileSearchBand FileSearchBand;
#endif /* defined __cplusplus */
#endif /* defined __FileSearchBand_FWD_DEFINED__ */

#ifndef __IWebWizardHost_FWD_DEFINED__
#define __IWebWizardHost_FWD_DEFINED__
typedef interface IWebWizardHost IWebWizardHost;
#ifdef __cplusplus
interface IWebWizardHost;
#endif /* __cplusplus */
#endif

#ifndef __INewWDEvents_FWD_DEFINED__
#define __INewWDEvents_FWD_DEFINED__
typedef interface INewWDEvents INewWDEvents;
#ifdef __cplusplus
interface INewWDEvents;
#endif /* __cplusplus */
#endif

#ifndef __IAutoComplete_FWD_DEFINED__
#define __IAutoComplete_FWD_DEFINED__
typedef interface IAutoComplete IAutoComplete;
#ifdef __cplusplus
interface IAutoComplete;
#endif /* __cplusplus */
#endif

#ifndef __IAutoComplete2_FWD_DEFINED__
#define __IAutoComplete2_FWD_DEFINED__
typedef interface IAutoComplete2 IAutoComplete2;
#ifdef __cplusplus
interface IAutoComplete2;
#endif /* __cplusplus */
#endif

#ifndef __IEnumACString_FWD_DEFINED__
#define __IEnumACString_FWD_DEFINED__
typedef interface IEnumACString IEnumACString;
#ifdef __cplusplus
interface IEnumACString;
#endif /* __cplusplus */
#endif

#ifndef __IDataObjectAsyncCapability_FWD_DEFINED__
#define __IDataObjectAsyncCapability_FWD_DEFINED__
typedef interface IDataObjectAsyncCapability IDataObjectAsyncCapability;
#ifdef __cplusplus
interface IDataObjectAsyncCapability;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <ocidl.h>

#ifdef __cplusplus
extern "C" {
#endif

#include <winapifamily.h>

#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#ifndef __DShellFolderViewEvents_FWD_DEFINED__
#define __DShellFolderViewEvents_FWD_DEFINED__
typedef interface DShellFolderViewEvents DShellFolderViewEvents;
#ifdef __cplusplus
interface DShellFolderViewEvents;
#endif /* __cplusplus */
#endif

#ifndef __IAutoComplete_FWD_DEFINED__
#define __IAutoComplete_FWD_DEFINED__
typedef interface IAutoComplete IAutoComplete;
#ifdef __cplusplus
interface IAutoComplete;
#endif /* __cplusplus */
#endif

#ifndef __FolderItem_FWD_DEFINED__
#define __FolderItem_FWD_DEFINED__
typedef interface FolderItem FolderItem;
#ifdef __cplusplus
interface FolderItem;
#endif /* __cplusplus */
#endif

#ifndef __FolderItems_FWD_DEFINED__
#define __FolderItems_FWD_DEFINED__
typedef interface FolderItems FolderItems;
#ifdef __cplusplus
interface FolderItems;
#endif /* __cplusplus */
#endif

#ifndef __FolderItemVerb_FWD_DEFINED__
#define __FolderItemVerb_FWD_DEFINED__
typedef interface FolderItemVerb FolderItemVerb;
#ifdef __cplusplus
interface FolderItemVerb;
#endif /* __cplusplus */
#endif

#ifndef __FolderItemVerbs_FWD_DEFINED__
#define __FolderItemVerbs_FWD_DEFINED__
typedef interface FolderItemVerbs FolderItemVerbs;
#ifdef __cplusplus
interface FolderItemVerbs;
#endif /* __cplusplus */
#endif

#ifndef __Shell32_LIBRARY_DEFINED__
#define __Shell32_LIBRARY_DEFINED__

DEFINE_GUID(LIBID_Shell32, 0x50a7e9b0, 0x70ef, 0x11d1, 0xb7,0x5a, 0x00,0xa0,0xc9,0x05,0x64,0xfe);

/*****************************************************************************
 * IFolderViewOC interface
 */
#ifndef __IFolderViewOC_INTERFACE_DEFINED__
#define __IFolderViewOC_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFolderViewOC, 0x9ba05970, 0xf6a8, 0x11cf, 0xa4,0x42, 0x00,0xa0,0xc9,0x0a,0x8f,0x39);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9ba05970-f6a8-11cf-a442-00a0c90a8f39")
IFolderViewOC : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE SetFolderView(
        IDispatch *pdisp) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFolderViewOC, 0x9ba05970, 0xf6a8, 0x11cf, 0xa4,0x42, 0x00,0xa0,0xc9,0x0a,0x8f,0x39)
#endif
#else
typedef struct IFolderViewOCVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IFolderViewOC *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IFolderViewOC *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IFolderViewOC *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IFolderViewOC *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IFolderViewOC *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IFolderViewOC *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IFolderViewOC *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IFolderViewOC methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFolderView)(
        IFolderViewOC *This,
        IDispatch *pdisp);

    END_INTERFACE
} IFolderViewOCVtbl;

interface IFolderViewOC {
    CONST_VTBL IFolderViewOCVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFolderViewOC_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFolderViewOC_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFolderViewOC_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IFolderViewOC_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IFolderViewOC_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IFolderViewOC_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IFolderViewOC_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IFolderViewOC methods ***/
#define IFolderViewOC_SetFolderView(This,pdisp) (This)->lpVtbl->SetFolderView(This,pdisp)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IFolderViewOC_QueryInterface(IFolderViewOC* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IFolderViewOC_AddRef(IFolderViewOC* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IFolderViewOC_Release(IFolderViewOC* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IFolderViewOC_GetTypeInfoCount(IFolderViewOC* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IFolderViewOC_GetTypeInfo(IFolderViewOC* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IFolderViewOC_GetIDsOfNames(IFolderViewOC* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IFolderViewOC_Invoke(IFolderViewOC* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IFolderViewOC methods ***/
static FORCEINLINE HRESULT IFolderViewOC_SetFolderView(IFolderViewOC* This,IDispatch *pdisp) {
    return This->lpVtbl->SetFolderView(This,pdisp);
}
#endif
#endif

#endif


#endif  /* __IFolderViewOC_INTERFACE_DEFINED__ */

/*****************************************************************************
 * DShellFolderViewEvents dispinterface
 */
#ifndef __DShellFolderViewEvents_DISPINTERFACE_DEFINED__
#define __DShellFolderViewEvents_DISPINTERFACE_DEFINED__

DEFINE_GUID(DIID_DShellFolderViewEvents, 0x62112aa2, 0xebe4, 0x11cf, 0xa5,0xfb, 0x00,0x20,0xaf,0xe7,0x29,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("62112aa2-ebe4-11cf-a5fb-0020afe7292d")
DShellFolderViewEvents : public IDispatch
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(DShellFolderViewEvents, 0x62112aa2, 0xebe4, 0x11cf, 0xa5,0xfb, 0x00,0x20,0xaf,0xe7,0x29,0x2d)
#endif
#else
typedef struct DShellFolderViewEventsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        DShellFolderViewEvents *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        DShellFolderViewEvents *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        DShellFolderViewEvents *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        DShellFolderViewEvents *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        DShellFolderViewEvents *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        DShellFolderViewEvents *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        DShellFolderViewEvents *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    END_INTERFACE
} DShellFolderViewEventsVtbl;

interface DShellFolderViewEvents {
    CONST_VTBL DShellFolderViewEventsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define DShellFolderViewEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define DShellFolderViewEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
#define DShellFolderViewEvents_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define DShellFolderViewEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define DShellFolderViewEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define DShellFolderViewEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define DShellFolderViewEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT DShellFolderViewEvents_QueryInterface(DShellFolderViewEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG DShellFolderViewEvents_AddRef(DShellFolderViewEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG DShellFolderViewEvents_Release(DShellFolderViewEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT DShellFolderViewEvents_GetTypeInfoCount(DShellFolderViewEvents* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT DShellFolderViewEvents_GetTypeInfo(DShellFolderViewEvents* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT DShellFolderViewEvents_GetIDsOfNames(DShellFolderViewEvents* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT DShellFolderViewEvents_Invoke(DShellFolderViewEvents* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
#endif
#endif

#endif

#endif  /* __DShellFolderViewEvents_DISPINTERFACE_DEFINED__ */

/*****************************************************************************
 * ShellFolderViewOC coclass
 */

DEFINE_GUID(CLSID_ShellFolderViewOC, 0x9ba05971, 0xf6a8, 0x11cf, 0xa4,0x42, 0x00,0xa0,0xc9,0x0a,0x8f,0x39);

#ifdef __cplusplus
class DECLSPEC_UUID("9ba05971-f6a8-11cf-a442-00a0c90a8f39") ShellFolderViewOC;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ShellFolderViewOC, 0x9ba05971, 0xf6a8, 0x11cf, 0xa4,0x42, 0x00,0xa0,0xc9,0x0a,0x8f,0x39)
#endif
#endif

/*****************************************************************************
 * DFConstraint interface
 */
#ifndef __DFConstraint_INTERFACE_DEFINED__
#define __DFConstraint_INTERFACE_DEFINED__

DEFINE_GUID(IID_DFConstraint, 0x4a3df050, 0x23bd, 0x11d2, 0x93,0x9f, 0x00,0xa0,0xc9,0x1e,0xed,0xba);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4a3df050-23bd-11d2-939f-00a0c91eedba")
DFConstraint : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Name(
        BSTR *pbs) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Value(
        VARIANT *pv) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(DFConstraint, 0x4a3df050, 0x23bd, 0x11d2, 0x93,0x9f, 0x00,0xa0,0xc9,0x1e,0xed,0xba)
#endif
#else
typedef struct DFConstraintVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        DFConstraint *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        DFConstraint *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        DFConstraint *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        DFConstraint *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        DFConstraint *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        DFConstraint *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        DFConstraint *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** DFConstraint methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Name)(
        DFConstraint *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *get_Value)(
        DFConstraint *This,
        VARIANT *pv);

    END_INTERFACE
} DFConstraintVtbl;

interface DFConstraint {
    CONST_VTBL DFConstraintVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define DFConstraint_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define DFConstraint_AddRef(This) (This)->lpVtbl->AddRef(This)
#define DFConstraint_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define DFConstraint_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define DFConstraint_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define DFConstraint_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define DFConstraint_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** DFConstraint methods ***/
#define DFConstraint_get_Name(This,pbs) (This)->lpVtbl->get_Name(This,pbs)
#define DFConstraint_get_Value(This,pv) (This)->lpVtbl->get_Value(This,pv)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT DFConstraint_QueryInterface(DFConstraint* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG DFConstraint_AddRef(DFConstraint* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG DFConstraint_Release(DFConstraint* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT DFConstraint_GetTypeInfoCount(DFConstraint* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT DFConstraint_GetTypeInfo(DFConstraint* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT DFConstraint_GetIDsOfNames(DFConstraint* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT DFConstraint_Invoke(DFConstraint* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** DFConstraint methods ***/
static FORCEINLINE HRESULT DFConstraint_get_Name(DFConstraint* This,BSTR *pbs) {
    return This->lpVtbl->get_Name(This,pbs);
}
static FORCEINLINE HRESULT DFConstraint_get_Value(DFConstraint* This,VARIANT *pv) {
    return This->lpVtbl->get_Value(This,pv);
}
#endif
#endif

#endif


#endif  /* __DFConstraint_INTERFACE_DEFINED__ */

/*****************************************************************************
 * Folder interface
 */
#ifndef __Folder_INTERFACE_DEFINED__
#define __Folder_INTERFACE_DEFINED__

DEFINE_GUID(IID_Folder, 0xbbcbde60, 0xc3ff, 0x11ce, 0x83,0x50, 0x44,0x45,0x53,0x54,0x00,0x00);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bbcbde60-c3ff-11ce-8350-444553540000")
Folder : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Title(
        BSTR *pbs) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Application(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Parent(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ParentFolder(
        Folder **ppsf) = 0;

    virtual HRESULT STDMETHODCALLTYPE Items(
        FolderItems **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE ParseName(
        BSTR bName,
        FolderItem **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE NewFolder(
        BSTR bName,
        VARIANT vOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE MoveHere(
        VARIANT vItem,
        VARIANT vOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE CopyHere(
        VARIANT vItem,
        VARIANT vOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDetailsOf(
        VARIANT vItem,
        int iColumn,
        BSTR *pbs) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(Folder, 0xbbcbde60, 0xc3ff, 0x11ce, 0x83,0x50, 0x44,0x45,0x53,0x54,0x00,0x00)
#endif
#else
typedef struct FolderVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        Folder *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        Folder *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        Folder *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        Folder *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        Folder *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        Folder *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        Folder *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** Folder methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Title)(
        Folder *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *get_Application)(
        Folder *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        Folder *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_ParentFolder)(
        Folder *This,
        Folder **ppsf);

    HRESULT (STDMETHODCALLTYPE *Items)(
        Folder *This,
        FolderItems **ppid);

    HRESULT (STDMETHODCALLTYPE *ParseName)(
        Folder *This,
        BSTR bName,
        FolderItem **ppid);

    HRESULT (STDMETHODCALLTYPE *NewFolder)(
        Folder *This,
        BSTR bName,
        VARIANT vOptions);

    HRESULT (STDMETHODCALLTYPE *MoveHere)(
        Folder *This,
        VARIANT vItem,
        VARIANT vOptions);

    HRESULT (STDMETHODCALLTYPE *CopyHere)(
        Folder *This,
        VARIANT vItem,
        VARIANT vOptions);

    HRESULT (STDMETHODCALLTYPE *GetDetailsOf)(
        Folder *This,
        VARIANT vItem,
        int iColumn,
        BSTR *pbs);

    END_INTERFACE
} FolderVtbl;

interface Folder {
    CONST_VTBL FolderVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define Folder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define Folder_AddRef(This) (This)->lpVtbl->AddRef(This)
#define Folder_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define Folder_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define Folder_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define Folder_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define Folder_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** Folder methods ***/
#define Folder_get_Title(This,pbs) (This)->lpVtbl->get_Title(This,pbs)
#define Folder_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define Folder_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define Folder_get_ParentFolder(This,ppsf) (This)->lpVtbl->get_ParentFolder(This,ppsf)
#define Folder_Items(This,ppid) (This)->lpVtbl->Items(This,ppid)
#define Folder_ParseName(This,bName,ppid) (This)->lpVtbl->ParseName(This,bName,ppid)
#define Folder_NewFolder(This,bName,vOptions) (This)->lpVtbl->NewFolder(This,bName,vOptions)
#define Folder_MoveHere(This,vItem,vOptions) (This)->lpVtbl->MoveHere(This,vItem,vOptions)
#define Folder_CopyHere(This,vItem,vOptions) (This)->lpVtbl->CopyHere(This,vItem,vOptions)
#define Folder_GetDetailsOf(This,vItem,iColumn,pbs) (This)->lpVtbl->GetDetailsOf(This,vItem,iColumn,pbs)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT Folder_QueryInterface(Folder* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG Folder_AddRef(Folder* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG Folder_Release(Folder* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT Folder_GetTypeInfoCount(Folder* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT Folder_GetTypeInfo(Folder* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT Folder_GetIDsOfNames(Folder* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT Folder_Invoke(Folder* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** Folder methods ***/
static FORCEINLINE HRESULT Folder_get_Title(Folder* This,BSTR *pbs) {
    return This->lpVtbl->get_Title(This,pbs);
}
static FORCEINLINE HRESULT Folder_get_Application(Folder* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT Folder_get_Parent(Folder* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT Folder_get_ParentFolder(Folder* This,Folder **ppsf) {
    return This->lpVtbl->get_ParentFolder(This,ppsf);
}
static FORCEINLINE HRESULT Folder_Items(Folder* This,FolderItems **ppid) {
    return This->lpVtbl->Items(This,ppid);
}
static FORCEINLINE HRESULT Folder_ParseName(Folder* This,BSTR bName,FolderItem **ppid) {
    return This->lpVtbl->ParseName(This,bName,ppid);
}
static FORCEINLINE HRESULT Folder_NewFolder(Folder* This,BSTR bName,VARIANT vOptions) {
    return This->lpVtbl->NewFolder(This,bName,vOptions);
}
static FORCEINLINE HRESULT Folder_MoveHere(Folder* This,VARIANT vItem,VARIANT vOptions) {
    return This->lpVtbl->MoveHere(This,vItem,vOptions);
}
static FORCEINLINE HRESULT Folder_CopyHere(Folder* This,VARIANT vItem,VARIANT vOptions) {
    return This->lpVtbl->CopyHere(This,vItem,vOptions);
}
static FORCEINLINE HRESULT Folder_GetDetailsOf(Folder* This,VARIANT vItem,int iColumn,BSTR *pbs) {
    return This->lpVtbl->GetDetailsOf(This,vItem,iColumn,pbs);
}
#endif
#endif

#endif


#endif  /* __Folder_INTERFACE_DEFINED__ */

/*****************************************************************************
 * Folder2 interface
 */
#ifndef __Folder2_INTERFACE_DEFINED__
#define __Folder2_INTERFACE_DEFINED__

DEFINE_GUID(IID_Folder2, 0xf0d2d8ef, 0x3890, 0x11d2, 0xbf,0x8b, 0x00,0xc0,0x4f,0xb9,0x36,0x61);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f0d2d8ef-3890-11d2-bf8b-00c04fb93661")
Folder2 : public Folder
{
    virtual HRESULT STDMETHODCALLTYPE get_Self(
        FolderItem **ppfi) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_OfflineStatus(
        LONG *pul) = 0;

    virtual HRESULT STDMETHODCALLTYPE Synchronize(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_HaveToShowWebViewBarricade(
        VARIANT_BOOL *pbHaveToShowWebViewBarricade) = 0;

    virtual HRESULT STDMETHODCALLTYPE DismissedWebViewBarricade(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(Folder2, 0xf0d2d8ef, 0x3890, 0x11d2, 0xbf,0x8b, 0x00,0xc0,0x4f,0xb9,0x36,0x61)
#endif
#else
typedef struct Folder2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        Folder2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        Folder2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        Folder2 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        Folder2 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        Folder2 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        Folder2 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        Folder2 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** Folder methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Title)(
        Folder2 *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *get_Application)(
        Folder2 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        Folder2 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_ParentFolder)(
        Folder2 *This,
        Folder **ppsf);

    HRESULT (STDMETHODCALLTYPE *Items)(
        Folder2 *This,
        FolderItems **ppid);

    HRESULT (STDMETHODCALLTYPE *ParseName)(
        Folder2 *This,
        BSTR bName,
        FolderItem **ppid);

    HRESULT (STDMETHODCALLTYPE *NewFolder)(
        Folder2 *This,
        BSTR bName,
        VARIANT vOptions);

    HRESULT (STDMETHODCALLTYPE *MoveHere)(
        Folder2 *This,
        VARIANT vItem,
        VARIANT vOptions);

    HRESULT (STDMETHODCALLTYPE *CopyHere)(
        Folder2 *This,
        VARIANT vItem,
        VARIANT vOptions);

    HRESULT (STDMETHODCALLTYPE *GetDetailsOf)(
        Folder2 *This,
        VARIANT vItem,
        int iColumn,
        BSTR *pbs);

    /*** Folder2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Self)(
        Folder2 *This,
        FolderItem **ppfi);

    HRESULT (STDMETHODCALLTYPE *get_OfflineStatus)(
        Folder2 *This,
        LONG *pul);

    HRESULT (STDMETHODCALLTYPE *Synchronize)(
        Folder2 *This);

    HRESULT (STDMETHODCALLTYPE *get_HaveToShowWebViewBarricade)(
        Folder2 *This,
        VARIANT_BOOL *pbHaveToShowWebViewBarricade);

    HRESULT (STDMETHODCALLTYPE *DismissedWebViewBarricade)(
        Folder2 *This);

    END_INTERFACE
} Folder2Vtbl;

interface Folder2 {
    CONST_VTBL Folder2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define Folder2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define Folder2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define Folder2_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define Folder2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define Folder2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define Folder2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define Folder2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** Folder methods ***/
#define Folder2_get_Title(This,pbs) (This)->lpVtbl->get_Title(This,pbs)
#define Folder2_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define Folder2_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define Folder2_get_ParentFolder(This,ppsf) (This)->lpVtbl->get_ParentFolder(This,ppsf)
#define Folder2_Items(This,ppid) (This)->lpVtbl->Items(This,ppid)
#define Folder2_ParseName(This,bName,ppid) (This)->lpVtbl->ParseName(This,bName,ppid)
#define Folder2_NewFolder(This,bName,vOptions) (This)->lpVtbl->NewFolder(This,bName,vOptions)
#define Folder2_MoveHere(This,vItem,vOptions) (This)->lpVtbl->MoveHere(This,vItem,vOptions)
#define Folder2_CopyHere(This,vItem,vOptions) (This)->lpVtbl->CopyHere(This,vItem,vOptions)
#define Folder2_GetDetailsOf(This,vItem,iColumn,pbs) (This)->lpVtbl->GetDetailsOf(This,vItem,iColumn,pbs)
/*** Folder2 methods ***/
#define Folder2_get_Self(This,ppfi) (This)->lpVtbl->get_Self(This,ppfi)
#define Folder2_get_OfflineStatus(This,pul) (This)->lpVtbl->get_OfflineStatus(This,pul)
#define Folder2_Synchronize(This) (This)->lpVtbl->Synchronize(This)
#define Folder2_get_HaveToShowWebViewBarricade(This,pbHaveToShowWebViewBarricade) (This)->lpVtbl->get_HaveToShowWebViewBarricade(This,pbHaveToShowWebViewBarricade)
#define Folder2_DismissedWebViewBarricade(This) (This)->lpVtbl->DismissedWebViewBarricade(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT Folder2_QueryInterface(Folder2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG Folder2_AddRef(Folder2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG Folder2_Release(Folder2* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT Folder2_GetTypeInfoCount(Folder2* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT Folder2_GetTypeInfo(Folder2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT Folder2_GetIDsOfNames(Folder2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT Folder2_Invoke(Folder2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** Folder methods ***/
static FORCEINLINE HRESULT Folder2_get_Title(Folder2* This,BSTR *pbs) {
    return This->lpVtbl->get_Title(This,pbs);
}
static FORCEINLINE HRESULT Folder2_get_Application(Folder2* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT Folder2_get_Parent(Folder2* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT Folder2_get_ParentFolder(Folder2* This,Folder **ppsf) {
    return This->lpVtbl->get_ParentFolder(This,ppsf);
}
static FORCEINLINE HRESULT Folder2_Items(Folder2* This,FolderItems **ppid) {
    return This->lpVtbl->Items(This,ppid);
}
static FORCEINLINE HRESULT Folder2_ParseName(Folder2* This,BSTR bName,FolderItem **ppid) {
    return This->lpVtbl->ParseName(This,bName,ppid);
}
static FORCEINLINE HRESULT Folder2_NewFolder(Folder2* This,BSTR bName,VARIANT vOptions) {
    return This->lpVtbl->NewFolder(This,bName,vOptions);
}
static FORCEINLINE HRESULT Folder2_MoveHere(Folder2* This,VARIANT vItem,VARIANT vOptions) {
    return This->lpVtbl->MoveHere(This,vItem,vOptions);
}
static FORCEINLINE HRESULT Folder2_CopyHere(Folder2* This,VARIANT vItem,VARIANT vOptions) {
    return This->lpVtbl->CopyHere(This,vItem,vOptions);
}
static FORCEINLINE HRESULT Folder2_GetDetailsOf(Folder2* This,VARIANT vItem,int iColumn,BSTR *pbs) {
    return This->lpVtbl->GetDetailsOf(This,vItem,iColumn,pbs);
}
/*** Folder2 methods ***/
static FORCEINLINE HRESULT Folder2_get_Self(Folder2* This,FolderItem **ppfi) {
    return This->lpVtbl->get_Self(This,ppfi);
}
static FORCEINLINE HRESULT Folder2_get_OfflineStatus(Folder2* This,LONG *pul) {
    return This->lpVtbl->get_OfflineStatus(This,pul);
}
static FORCEINLINE HRESULT Folder2_Synchronize(Folder2* This) {
    return This->lpVtbl->Synchronize(This);
}
static FORCEINLINE HRESULT Folder2_get_HaveToShowWebViewBarricade(Folder2* This,VARIANT_BOOL *pbHaveToShowWebViewBarricade) {
    return This->lpVtbl->get_HaveToShowWebViewBarricade(This,pbHaveToShowWebViewBarricade);
}
static FORCEINLINE HRESULT Folder2_DismissedWebViewBarricade(Folder2* This) {
    return This->lpVtbl->DismissedWebViewBarricade(This);
}
#endif
#endif

#endif


#endif  /* __Folder2_INTERFACE_DEFINED__ */

typedef enum OfflineFolderStatus {
    OFS_INACTIVE = -1,
    OFS_ONLINE = 0,
    OFS_OFFLINE = 1,
    OFS_SERVERBACK = 2,
    OFS_DIRTYCACHE = 3
} OfflineFolderStatus;
/*****************************************************************************
 * Folder3 interface
 */
#ifndef __Folder3_INTERFACE_DEFINED__
#define __Folder3_INTERFACE_DEFINED__

DEFINE_GUID(IID_Folder3, 0xa7ae5f64, 0xc4d7, 0x4d7f, 0x93,0x07, 0x4d,0x24,0xee,0x54,0xb8,0x41);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a7ae5f64-c4d7-4d7f-9307-4d24ee54b841")
Folder3 : public Folder2
{
    virtual HRESULT STDMETHODCALLTYPE get_ShowWebViewBarricade(
        VARIANT_BOOL *pbShowWebViewBarricade) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ShowWebViewBarricade(
        VARIANT_BOOL bShowWebViewBarricade) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(Folder3, 0xa7ae5f64, 0xc4d7, 0x4d7f, 0x93,0x07, 0x4d,0x24,0xee,0x54,0xb8,0x41)
#endif
#else
typedef struct Folder3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        Folder3 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        Folder3 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        Folder3 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        Folder3 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        Folder3 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        Folder3 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        Folder3 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** Folder methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Title)(
        Folder3 *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *get_Application)(
        Folder3 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        Folder3 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_ParentFolder)(
        Folder3 *This,
        Folder **ppsf);

    HRESULT (STDMETHODCALLTYPE *Items)(
        Folder3 *This,
        FolderItems **ppid);

    HRESULT (STDMETHODCALLTYPE *ParseName)(
        Folder3 *This,
        BSTR bName,
        FolderItem **ppid);

    HRESULT (STDMETHODCALLTYPE *NewFolder)(
        Folder3 *This,
        BSTR bName,
        VARIANT vOptions);

    HRESULT (STDMETHODCALLTYPE *MoveHere)(
        Folder3 *This,
        VARIANT vItem,
        VARIANT vOptions);

    HRESULT (STDMETHODCALLTYPE *CopyHere)(
        Folder3 *This,
        VARIANT vItem,
        VARIANT vOptions);

    HRESULT (STDMETHODCALLTYPE *GetDetailsOf)(
        Folder3 *This,
        VARIANT vItem,
        int iColumn,
        BSTR *pbs);

    /*** Folder2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Self)(
        Folder3 *This,
        FolderItem **ppfi);

    HRESULT (STDMETHODCALLTYPE *get_OfflineStatus)(
        Folder3 *This,
        LONG *pul);

    HRESULT (STDMETHODCALLTYPE *Synchronize)(
        Folder3 *This);

    HRESULT (STDMETHODCALLTYPE *get_HaveToShowWebViewBarricade)(
        Folder3 *This,
        VARIANT_BOOL *pbHaveToShowWebViewBarricade);

    HRESULT (STDMETHODCALLTYPE *DismissedWebViewBarricade)(
        Folder3 *This);

    /*** Folder3 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_ShowWebViewBarricade)(
        Folder3 *This,
        VARIANT_BOOL *pbShowWebViewBarricade);

    HRESULT (STDMETHODCALLTYPE *put_ShowWebViewBarricade)(
        Folder3 *This,
        VARIANT_BOOL bShowWebViewBarricade);

    END_INTERFACE
} Folder3Vtbl;

interface Folder3 {
    CONST_VTBL Folder3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define Folder3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define Folder3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define Folder3_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define Folder3_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define Folder3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define Folder3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define Folder3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** Folder methods ***/
#define Folder3_get_Title(This,pbs) (This)->lpVtbl->get_Title(This,pbs)
#define Folder3_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define Folder3_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define Folder3_get_ParentFolder(This,ppsf) (This)->lpVtbl->get_ParentFolder(This,ppsf)
#define Folder3_Items(This,ppid) (This)->lpVtbl->Items(This,ppid)
#define Folder3_ParseName(This,bName,ppid) (This)->lpVtbl->ParseName(This,bName,ppid)
#define Folder3_NewFolder(This,bName,vOptions) (This)->lpVtbl->NewFolder(This,bName,vOptions)
#define Folder3_MoveHere(This,vItem,vOptions) (This)->lpVtbl->MoveHere(This,vItem,vOptions)
#define Folder3_CopyHere(This,vItem,vOptions) (This)->lpVtbl->CopyHere(This,vItem,vOptions)
#define Folder3_GetDetailsOf(This,vItem,iColumn,pbs) (This)->lpVtbl->GetDetailsOf(This,vItem,iColumn,pbs)
/*** Folder2 methods ***/
#define Folder3_get_Self(This,ppfi) (This)->lpVtbl->get_Self(This,ppfi)
#define Folder3_get_OfflineStatus(This,pul) (This)->lpVtbl->get_OfflineStatus(This,pul)
#define Folder3_Synchronize(This) (This)->lpVtbl->Synchronize(This)
#define Folder3_get_HaveToShowWebViewBarricade(This,pbHaveToShowWebViewBarricade) (This)->lpVtbl->get_HaveToShowWebViewBarricade(This,pbHaveToShowWebViewBarricade)
#define Folder3_DismissedWebViewBarricade(This) (This)->lpVtbl->DismissedWebViewBarricade(This)
/*** Folder3 methods ***/
#define Folder3_get_ShowWebViewBarricade(This,pbShowWebViewBarricade) (This)->lpVtbl->get_ShowWebViewBarricade(This,pbShowWebViewBarricade)
#define Folder3_put_ShowWebViewBarricade(This,bShowWebViewBarricade) (This)->lpVtbl->put_ShowWebViewBarricade(This,bShowWebViewBarricade)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT Folder3_QueryInterface(Folder3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG Folder3_AddRef(Folder3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG Folder3_Release(Folder3* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT Folder3_GetTypeInfoCount(Folder3* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT Folder3_GetTypeInfo(Folder3* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT Folder3_GetIDsOfNames(Folder3* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT Folder3_Invoke(Folder3* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** Folder methods ***/
static FORCEINLINE HRESULT Folder3_get_Title(Folder3* This,BSTR *pbs) {
    return This->lpVtbl->get_Title(This,pbs);
}
static FORCEINLINE HRESULT Folder3_get_Application(Folder3* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT Folder3_get_Parent(Folder3* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT Folder3_get_ParentFolder(Folder3* This,Folder **ppsf) {
    return This->lpVtbl->get_ParentFolder(This,ppsf);
}
static FORCEINLINE HRESULT Folder3_Items(Folder3* This,FolderItems **ppid) {
    return This->lpVtbl->Items(This,ppid);
}
static FORCEINLINE HRESULT Folder3_ParseName(Folder3* This,BSTR bName,FolderItem **ppid) {
    return This->lpVtbl->ParseName(This,bName,ppid);
}
static FORCEINLINE HRESULT Folder3_NewFolder(Folder3* This,BSTR bName,VARIANT vOptions) {
    return This->lpVtbl->NewFolder(This,bName,vOptions);
}
static FORCEINLINE HRESULT Folder3_MoveHere(Folder3* This,VARIANT vItem,VARIANT vOptions) {
    return This->lpVtbl->MoveHere(This,vItem,vOptions);
}
static FORCEINLINE HRESULT Folder3_CopyHere(Folder3* This,VARIANT vItem,VARIANT vOptions) {
    return This->lpVtbl->CopyHere(This,vItem,vOptions);
}
static FORCEINLINE HRESULT Folder3_GetDetailsOf(Folder3* This,VARIANT vItem,int iColumn,BSTR *pbs) {
    return This->lpVtbl->GetDetailsOf(This,vItem,iColumn,pbs);
}
/*** Folder2 methods ***/
static FORCEINLINE HRESULT Folder3_get_Self(Folder3* This,FolderItem **ppfi) {
    return This->lpVtbl->get_Self(This,ppfi);
}
static FORCEINLINE HRESULT Folder3_get_OfflineStatus(Folder3* This,LONG *pul) {
    return This->lpVtbl->get_OfflineStatus(This,pul);
}
static FORCEINLINE HRESULT Folder3_Synchronize(Folder3* This) {
    return This->lpVtbl->Synchronize(This);
}
static FORCEINLINE HRESULT Folder3_get_HaveToShowWebViewBarricade(Folder3* This,VARIANT_BOOL *pbHaveToShowWebViewBarricade) {
    return This->lpVtbl->get_HaveToShowWebViewBarricade(This,pbHaveToShowWebViewBarricade);
}
static FORCEINLINE HRESULT Folder3_DismissedWebViewBarricade(Folder3* This) {
    return This->lpVtbl->DismissedWebViewBarricade(This);
}
/*** Folder3 methods ***/
static FORCEINLINE HRESULT Folder3_get_ShowWebViewBarricade(Folder3* This,VARIANT_BOOL *pbShowWebViewBarricade) {
    return This->lpVtbl->get_ShowWebViewBarricade(This,pbShowWebViewBarricade);
}
static FORCEINLINE HRESULT Folder3_put_ShowWebViewBarricade(Folder3* This,VARIANT_BOOL bShowWebViewBarricade) {
    return This->lpVtbl->put_ShowWebViewBarricade(This,bShowWebViewBarricade);
}
#endif
#endif

#endif


#endif  /* __Folder3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * FolderItem interface
 */
#ifndef __FolderItem_INTERFACE_DEFINED__
#define __FolderItem_INTERFACE_DEFINED__

typedef FolderItem *LPFOLDERITEM;
DEFINE_GUID(IID_FolderItem, 0xfac32c80, 0xcbe4, 0x11ce, 0x83,0x50, 0x44,0x45,0x53,0x54,0x00,0x00);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fac32c80-cbe4-11ce-8350-444553540000")
FolderItem : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Application(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Parent(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Name(
        BSTR *pbs) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Name(
        BSTR bs) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Path(
        BSTR *pbs) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_GetLink(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_GetFolder(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsLink(
        VARIANT_BOOL *pb) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsFolder(
        VARIANT_BOOL *pb) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsFileSystem(
        VARIANT_BOOL *pb) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IsBrowsable(
        VARIANT_BOOL *pb) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ModifyDate(
        DATE *pdt) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ModifyDate(
        DATE dt) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Size(
        LONG *pul) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Type(
        BSTR *pbs) = 0;

    virtual HRESULT STDMETHODCALLTYPE Verbs(
        FolderItemVerbs **ppfic) = 0;

    virtual HRESULT STDMETHODCALLTYPE InvokeVerb(
        VARIANT vVerb) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FolderItem, 0xfac32c80, 0xcbe4, 0x11ce, 0x83,0x50, 0x44,0x45,0x53,0x54,0x00,0x00)
#endif
#else
typedef struct FolderItemVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        FolderItem *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        FolderItem *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        FolderItem *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        FolderItem *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        FolderItem *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        FolderItem *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        FolderItem *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** FolderItem methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Application)(
        FolderItem *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        FolderItem *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Name)(
        FolderItem *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *put_Name)(
        FolderItem *This,
        BSTR bs);

    HRESULT (STDMETHODCALLTYPE *get_Path)(
        FolderItem *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *get_GetLink)(
        FolderItem *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_GetFolder)(
        FolderItem *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_IsLink)(
        FolderItem *This,
        VARIANT_BOOL *pb);

    HRESULT (STDMETHODCALLTYPE *get_IsFolder)(
        FolderItem *This,
        VARIANT_BOOL *pb);

    HRESULT (STDMETHODCALLTYPE *get_IsFileSystem)(
        FolderItem *This,
        VARIANT_BOOL *pb);

    HRESULT (STDMETHODCALLTYPE *get_IsBrowsable)(
        FolderItem *This,
        VARIANT_BOOL *pb);

    HRESULT (STDMETHODCALLTYPE *get_ModifyDate)(
        FolderItem *This,
        DATE *pdt);

    HRESULT (STDMETHODCALLTYPE *put_ModifyDate)(
        FolderItem *This,
        DATE dt);

    HRESULT (STDMETHODCALLTYPE *get_Size)(
        FolderItem *This,
        LONG *pul);

    HRESULT (STDMETHODCALLTYPE *get_Type)(
        FolderItem *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *Verbs)(
        FolderItem *This,
        FolderItemVerbs **ppfic);

    HRESULT (STDMETHODCALLTYPE *InvokeVerb)(
        FolderItem *This,
        VARIANT vVerb);

    END_INTERFACE
} FolderItemVtbl;

interface FolderItem {
    CONST_VTBL FolderItemVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define FolderItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define FolderItem_AddRef(This) (This)->lpVtbl->AddRef(This)
#define FolderItem_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define FolderItem_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define FolderItem_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define FolderItem_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define FolderItem_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** FolderItem methods ***/
#define FolderItem_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define FolderItem_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define FolderItem_get_Name(This,pbs) (This)->lpVtbl->get_Name(This,pbs)
#define FolderItem_put_Name(This,bs) (This)->lpVtbl->put_Name(This,bs)
#define FolderItem_get_Path(This,pbs) (This)->lpVtbl->get_Path(This,pbs)
#define FolderItem_get_GetLink(This,ppid) (This)->lpVtbl->get_GetLink(This,ppid)
#define FolderItem_get_GetFolder(This,ppid) (This)->lpVtbl->get_GetFolder(This,ppid)
#define FolderItem_get_IsLink(This,pb) (This)->lpVtbl->get_IsLink(This,pb)
#define FolderItem_get_IsFolder(This,pb) (This)->lpVtbl->get_IsFolder(This,pb)
#define FolderItem_get_IsFileSystem(This,pb) (This)->lpVtbl->get_IsFileSystem(This,pb)
#define FolderItem_get_IsBrowsable(This,pb) (This)->lpVtbl->get_IsBrowsable(This,pb)
#define FolderItem_get_ModifyDate(This,pdt) (This)->lpVtbl->get_ModifyDate(This,pdt)
#define FolderItem_put_ModifyDate(This,dt) (This)->lpVtbl->put_ModifyDate(This,dt)
#define FolderItem_get_Size(This,pul) (This)->lpVtbl->get_Size(This,pul)
#define FolderItem_get_Type(This,pbs) (This)->lpVtbl->get_Type(This,pbs)
#define FolderItem_Verbs(This,ppfic) (This)->lpVtbl->Verbs(This,ppfic)
#define FolderItem_InvokeVerb(This,vVerb) (This)->lpVtbl->InvokeVerb(This,vVerb)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT FolderItem_QueryInterface(FolderItem* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG FolderItem_AddRef(FolderItem* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG FolderItem_Release(FolderItem* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT FolderItem_GetTypeInfoCount(FolderItem* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT FolderItem_GetTypeInfo(FolderItem* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT FolderItem_GetIDsOfNames(FolderItem* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT FolderItem_Invoke(FolderItem* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** FolderItem methods ***/
static FORCEINLINE HRESULT FolderItem_get_Application(FolderItem* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT FolderItem_get_Parent(FolderItem* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT FolderItem_get_Name(FolderItem* This,BSTR *pbs) {
    return This->lpVtbl->get_Name(This,pbs);
}
static FORCEINLINE HRESULT FolderItem_put_Name(FolderItem* This,BSTR bs) {
    return This->lpVtbl->put_Name(This,bs);
}
static FORCEINLINE HRESULT FolderItem_get_Path(FolderItem* This,BSTR *pbs) {
    return This->lpVtbl->get_Path(This,pbs);
}
static FORCEINLINE HRESULT FolderItem_get_GetLink(FolderItem* This,IDispatch **ppid) {
    return This->lpVtbl->get_GetLink(This,ppid);
}
static FORCEINLINE HRESULT FolderItem_get_GetFolder(FolderItem* This,IDispatch **ppid) {
    return This->lpVtbl->get_GetFolder(This,ppid);
}
static FORCEINLINE HRESULT FolderItem_get_IsLink(FolderItem* This,VARIANT_BOOL *pb) {
    return This->lpVtbl->get_IsLink(This,pb);
}
static FORCEINLINE HRESULT FolderItem_get_IsFolder(FolderItem* This,VARIANT_BOOL *pb) {
    return This->lpVtbl->get_IsFolder(This,pb);
}
static FORCEINLINE HRESULT FolderItem_get_IsFileSystem(FolderItem* This,VARIANT_BOOL *pb) {
    return This->lpVtbl->get_IsFileSystem(This,pb);
}
static FORCEINLINE HRESULT FolderItem_get_IsBrowsable(FolderItem* This,VARIANT_BOOL *pb) {
    return This->lpVtbl->get_IsBrowsable(This,pb);
}
static FORCEINLINE HRESULT FolderItem_get_ModifyDate(FolderItem* This,DATE *pdt) {
    return This->lpVtbl->get_ModifyDate(This,pdt);
}
static FORCEINLINE HRESULT FolderItem_put_ModifyDate(FolderItem* This,DATE dt) {
    return This->lpVtbl->put_ModifyDate(This,dt);
}
static FORCEINLINE HRESULT FolderItem_get_Size(FolderItem* This,LONG *pul) {
    return This->lpVtbl->get_Size(This,pul);
}
static FORCEINLINE HRESULT FolderItem_get_Type(FolderItem* This,BSTR *pbs) {
    return This->lpVtbl->get_Type(This,pbs);
}
static FORCEINLINE HRESULT FolderItem_Verbs(FolderItem* This,FolderItemVerbs **ppfic) {
    return This->lpVtbl->Verbs(This,ppfic);
}
static FORCEINLINE HRESULT FolderItem_InvokeVerb(FolderItem* This,VARIANT vVerb) {
    return This->lpVtbl->InvokeVerb(This,vVerb);
}
#endif
#endif

#endif


#endif  /* __FolderItem_INTERFACE_DEFINED__ */

/*****************************************************************************
 * FolderItem2 interface
 */
#ifndef __FolderItem2_INTERFACE_DEFINED__
#define __FolderItem2_INTERFACE_DEFINED__

DEFINE_GUID(IID_FolderItem2, 0xedc817aa, 0x92b8, 0x11d1, 0xb0,0x75, 0x00,0xc0,0x4f,0xc3,0x3a,0xa5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("edc817aa-92b8-11d1-b075-00c04fc33aa5")
FolderItem2 : public FolderItem
{
    virtual HRESULT STDMETHODCALLTYPE InvokeVerbEx(
        VARIANT vVerb,
        VARIANT vArgs) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExtendedProperty(
        BSTR bstrPropName,
        VARIANT *pvRet) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FolderItem2, 0xedc817aa, 0x92b8, 0x11d1, 0xb0,0x75, 0x00,0xc0,0x4f,0xc3,0x3a,0xa5)
#endif
#else
typedef struct FolderItem2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        FolderItem2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        FolderItem2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        FolderItem2 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        FolderItem2 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        FolderItem2 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        FolderItem2 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        FolderItem2 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** FolderItem methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Application)(
        FolderItem2 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        FolderItem2 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Name)(
        FolderItem2 *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *put_Name)(
        FolderItem2 *This,
        BSTR bs);

    HRESULT (STDMETHODCALLTYPE *get_Path)(
        FolderItem2 *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *get_GetLink)(
        FolderItem2 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_GetFolder)(
        FolderItem2 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_IsLink)(
        FolderItem2 *This,
        VARIANT_BOOL *pb);

    HRESULT (STDMETHODCALLTYPE *get_IsFolder)(
        FolderItem2 *This,
        VARIANT_BOOL *pb);

    HRESULT (STDMETHODCALLTYPE *get_IsFileSystem)(
        FolderItem2 *This,
        VARIANT_BOOL *pb);

    HRESULT (STDMETHODCALLTYPE *get_IsBrowsable)(
        FolderItem2 *This,
        VARIANT_BOOL *pb);

    HRESULT (STDMETHODCALLTYPE *get_ModifyDate)(
        FolderItem2 *This,
        DATE *pdt);

    HRESULT (STDMETHODCALLTYPE *put_ModifyDate)(
        FolderItem2 *This,
        DATE dt);

    HRESULT (STDMETHODCALLTYPE *get_Size)(
        FolderItem2 *This,
        LONG *pul);

    HRESULT (STDMETHODCALLTYPE *get_Type)(
        FolderItem2 *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *Verbs)(
        FolderItem2 *This,
        FolderItemVerbs **ppfic);

    HRESULT (STDMETHODCALLTYPE *InvokeVerb)(
        FolderItem2 *This,
        VARIANT vVerb);

    /*** FolderItem2 methods ***/
    HRESULT (STDMETHODCALLTYPE *InvokeVerbEx)(
        FolderItem2 *This,
        VARIANT vVerb,
        VARIANT vArgs);

    HRESULT (STDMETHODCALLTYPE *ExtendedProperty)(
        FolderItem2 *This,
        BSTR bstrPropName,
        VARIANT *pvRet);

    END_INTERFACE
} FolderItem2Vtbl;

interface FolderItem2 {
    CONST_VTBL FolderItem2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define FolderItem2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define FolderItem2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define FolderItem2_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define FolderItem2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define FolderItem2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define FolderItem2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define FolderItem2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** FolderItem methods ***/
#define FolderItem2_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define FolderItem2_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define FolderItem2_get_Name(This,pbs) (This)->lpVtbl->get_Name(This,pbs)
#define FolderItem2_put_Name(This,bs) (This)->lpVtbl->put_Name(This,bs)
#define FolderItem2_get_Path(This,pbs) (This)->lpVtbl->get_Path(This,pbs)
#define FolderItem2_get_GetLink(This,ppid) (This)->lpVtbl->get_GetLink(This,ppid)
#define FolderItem2_get_GetFolder(This,ppid) (This)->lpVtbl->get_GetFolder(This,ppid)
#define FolderItem2_get_IsLink(This,pb) (This)->lpVtbl->get_IsLink(This,pb)
#define FolderItem2_get_IsFolder(This,pb) (This)->lpVtbl->get_IsFolder(This,pb)
#define FolderItem2_get_IsFileSystem(This,pb) (This)->lpVtbl->get_IsFileSystem(This,pb)
#define FolderItem2_get_IsBrowsable(This,pb) (This)->lpVtbl->get_IsBrowsable(This,pb)
#define FolderItem2_get_ModifyDate(This,pdt) (This)->lpVtbl->get_ModifyDate(This,pdt)
#define FolderItem2_put_ModifyDate(This,dt) (This)->lpVtbl->put_ModifyDate(This,dt)
#define FolderItem2_get_Size(This,pul) (This)->lpVtbl->get_Size(This,pul)
#define FolderItem2_get_Type(This,pbs) (This)->lpVtbl->get_Type(This,pbs)
#define FolderItem2_Verbs(This,ppfic) (This)->lpVtbl->Verbs(This,ppfic)
#define FolderItem2_InvokeVerb(This,vVerb) (This)->lpVtbl->InvokeVerb(This,vVerb)
/*** FolderItem2 methods ***/
#define FolderItem2_InvokeVerbEx(This,vVerb,vArgs) (This)->lpVtbl->InvokeVerbEx(This,vVerb,vArgs)
#define FolderItem2_ExtendedProperty(This,bstrPropName,pvRet) (This)->lpVtbl->ExtendedProperty(This,bstrPropName,pvRet)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT FolderItem2_QueryInterface(FolderItem2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG FolderItem2_AddRef(FolderItem2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG FolderItem2_Release(FolderItem2* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT FolderItem2_GetTypeInfoCount(FolderItem2* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT FolderItem2_GetTypeInfo(FolderItem2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT FolderItem2_GetIDsOfNames(FolderItem2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT FolderItem2_Invoke(FolderItem2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** FolderItem methods ***/
static FORCEINLINE HRESULT FolderItem2_get_Application(FolderItem2* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT FolderItem2_get_Parent(FolderItem2* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT FolderItem2_get_Name(FolderItem2* This,BSTR *pbs) {
    return This->lpVtbl->get_Name(This,pbs);
}
static FORCEINLINE HRESULT FolderItem2_put_Name(FolderItem2* This,BSTR bs) {
    return This->lpVtbl->put_Name(This,bs);
}
static FORCEINLINE HRESULT FolderItem2_get_Path(FolderItem2* This,BSTR *pbs) {
    return This->lpVtbl->get_Path(This,pbs);
}
static FORCEINLINE HRESULT FolderItem2_get_GetLink(FolderItem2* This,IDispatch **ppid) {
    return This->lpVtbl->get_GetLink(This,ppid);
}
static FORCEINLINE HRESULT FolderItem2_get_GetFolder(FolderItem2* This,IDispatch **ppid) {
    return This->lpVtbl->get_GetFolder(This,ppid);
}
static FORCEINLINE HRESULT FolderItem2_get_IsLink(FolderItem2* This,VARIANT_BOOL *pb) {
    return This->lpVtbl->get_IsLink(This,pb);
}
static FORCEINLINE HRESULT FolderItem2_get_IsFolder(FolderItem2* This,VARIANT_BOOL *pb) {
    return This->lpVtbl->get_IsFolder(This,pb);
}
static FORCEINLINE HRESULT FolderItem2_get_IsFileSystem(FolderItem2* This,VARIANT_BOOL *pb) {
    return This->lpVtbl->get_IsFileSystem(This,pb);
}
static FORCEINLINE HRESULT FolderItem2_get_IsBrowsable(FolderItem2* This,VARIANT_BOOL *pb) {
    return This->lpVtbl->get_IsBrowsable(This,pb);
}
static FORCEINLINE HRESULT FolderItem2_get_ModifyDate(FolderItem2* This,DATE *pdt) {
    return This->lpVtbl->get_ModifyDate(This,pdt);
}
static FORCEINLINE HRESULT FolderItem2_put_ModifyDate(FolderItem2* This,DATE dt) {
    return This->lpVtbl->put_ModifyDate(This,dt);
}
static FORCEINLINE HRESULT FolderItem2_get_Size(FolderItem2* This,LONG *pul) {
    return This->lpVtbl->get_Size(This,pul);
}
static FORCEINLINE HRESULT FolderItem2_get_Type(FolderItem2* This,BSTR *pbs) {
    return This->lpVtbl->get_Type(This,pbs);
}
static FORCEINLINE HRESULT FolderItem2_Verbs(FolderItem2* This,FolderItemVerbs **ppfic) {
    return This->lpVtbl->Verbs(This,ppfic);
}
static FORCEINLINE HRESULT FolderItem2_InvokeVerb(FolderItem2* This,VARIANT vVerb) {
    return This->lpVtbl->InvokeVerb(This,vVerb);
}
/*** FolderItem2 methods ***/
static FORCEINLINE HRESULT FolderItem2_InvokeVerbEx(FolderItem2* This,VARIANT vVerb,VARIANT vArgs) {
    return This->lpVtbl->InvokeVerbEx(This,vVerb,vArgs);
}
static FORCEINLINE HRESULT FolderItem2_ExtendedProperty(FolderItem2* This,BSTR bstrPropName,VARIANT *pvRet) {
    return This->lpVtbl->ExtendedProperty(This,bstrPropName,pvRet);
}
#endif
#endif

#endif


#endif  /* __FolderItem2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ShellFolderItem coclass
 */

DEFINE_GUID(CLSID_ShellFolderItem, 0x2fe352ea, 0xfd1f, 0x11d2, 0xb1,0xf4, 0x00,0xc0,0x4f,0x8e,0xeb,0x3e);

#ifdef __cplusplus
class DECLSPEC_UUID("2fe352ea-fd1f-11d2-b1f4-00c04f8eeb3e") ShellFolderItem;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ShellFolderItem, 0x2fe352ea, 0xfd1f, 0x11d2, 0xb1,0xf4, 0x00,0xc0,0x4f,0x8e,0xeb,0x3e)
#endif
#endif

/*****************************************************************************
 * FolderItems interface
 */
#ifndef __FolderItems_INTERFACE_DEFINED__
#define __FolderItems_INTERFACE_DEFINED__

DEFINE_GUID(IID_FolderItems, 0x744129e0, 0xcbe5, 0x11ce, 0x83,0x50, 0x44,0x45,0x53,0x54,0x00,0x00);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("744129e0-cbe5-11ce-8350-444553540000")
FolderItems : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *plCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Application(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Parent(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        VARIANT index,
        FolderItem **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE _NewEnum(
        IUnknown **ppunk) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FolderItems, 0x744129e0, 0xcbe5, 0x11ce, 0x83,0x50, 0x44,0x45,0x53,0x54,0x00,0x00)
#endif
#else
typedef struct FolderItemsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        FolderItems *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        FolderItems *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        FolderItems *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        FolderItems *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        FolderItems *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        FolderItems *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        FolderItems *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** FolderItems methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        FolderItems *This,
        LONG *plCount);

    HRESULT (STDMETHODCALLTYPE *get_Application)(
        FolderItems *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        FolderItems *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *Item)(
        FolderItems *This,
        VARIANT index,
        FolderItem **ppid);

    HRESULT (STDMETHODCALLTYPE *_NewEnum)(
        FolderItems *This,
        IUnknown **ppunk);

    END_INTERFACE
} FolderItemsVtbl;

interface FolderItems {
    CONST_VTBL FolderItemsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define FolderItems_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define FolderItems_AddRef(This) (This)->lpVtbl->AddRef(This)
#define FolderItems_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define FolderItems_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define FolderItems_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define FolderItems_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define FolderItems_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** FolderItems methods ***/
#define FolderItems_get_Count(This,plCount) (This)->lpVtbl->get_Count(This,plCount)
#define FolderItems_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define FolderItems_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define FolderItems_Item(This,index,ppid) (This)->lpVtbl->Item(This,index,ppid)
#define FolderItems__NewEnum(This,ppunk) (This)->lpVtbl->_NewEnum(This,ppunk)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT FolderItems_QueryInterface(FolderItems* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG FolderItems_AddRef(FolderItems* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG FolderItems_Release(FolderItems* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT FolderItems_GetTypeInfoCount(FolderItems* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT FolderItems_GetTypeInfo(FolderItems* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT FolderItems_GetIDsOfNames(FolderItems* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT FolderItems_Invoke(FolderItems* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** FolderItems methods ***/
static FORCEINLINE HRESULT FolderItems_get_Count(FolderItems* This,LONG *plCount) {
    return This->lpVtbl->get_Count(This,plCount);
}
static FORCEINLINE HRESULT FolderItems_get_Application(FolderItems* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT FolderItems_get_Parent(FolderItems* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT FolderItems_Item(FolderItems* This,VARIANT index,FolderItem **ppid) {
    return This->lpVtbl->Item(This,index,ppid);
}
static FORCEINLINE HRESULT FolderItems__NewEnum(FolderItems* This,IUnknown **ppunk) {
    return This->lpVtbl->_NewEnum(This,ppunk);
}
#endif
#endif

#endif


#endif  /* __FolderItems_INTERFACE_DEFINED__ */

/*****************************************************************************
 * FolderItems2 interface
 */
#ifndef __FolderItems2_INTERFACE_DEFINED__
#define __FolderItems2_INTERFACE_DEFINED__

DEFINE_GUID(IID_FolderItems2, 0xc94f0ad0, 0xf363, 0x11d2, 0xa3,0x27, 0x00,0xc0,0x4f,0x8e,0xec,0x7f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c94f0ad0-f363-11d2-a327-00c04f8eec7f")
FolderItems2 : public FolderItems
{
    virtual HRESULT STDMETHODCALLTYPE InvokeVerbEx(
        VARIANT vVerb,
        VARIANT vArgs) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FolderItems2, 0xc94f0ad0, 0xf363, 0x11d2, 0xa3,0x27, 0x00,0xc0,0x4f,0x8e,0xec,0x7f)
#endif
#else
typedef struct FolderItems2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        FolderItems2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        FolderItems2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        FolderItems2 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        FolderItems2 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        FolderItems2 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        FolderItems2 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        FolderItems2 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** FolderItems methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        FolderItems2 *This,
        LONG *plCount);

    HRESULT (STDMETHODCALLTYPE *get_Application)(
        FolderItems2 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        FolderItems2 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *Item)(
        FolderItems2 *This,
        VARIANT index,
        FolderItem **ppid);

    HRESULT (STDMETHODCALLTYPE *_NewEnum)(
        FolderItems2 *This,
        IUnknown **ppunk);

    /*** FolderItems2 methods ***/
    HRESULT (STDMETHODCALLTYPE *InvokeVerbEx)(
        FolderItems2 *This,
        VARIANT vVerb,
        VARIANT vArgs);

    END_INTERFACE
} FolderItems2Vtbl;

interface FolderItems2 {
    CONST_VTBL FolderItems2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define FolderItems2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define FolderItems2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define FolderItems2_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define FolderItems2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define FolderItems2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define FolderItems2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define FolderItems2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** FolderItems methods ***/
#define FolderItems2_get_Count(This,plCount) (This)->lpVtbl->get_Count(This,plCount)
#define FolderItems2_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define FolderItems2_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define FolderItems2_Item(This,index,ppid) (This)->lpVtbl->Item(This,index,ppid)
#define FolderItems2__NewEnum(This,ppunk) (This)->lpVtbl->_NewEnum(This,ppunk)
/*** FolderItems2 methods ***/
#define FolderItems2_InvokeVerbEx(This,vVerb,vArgs) (This)->lpVtbl->InvokeVerbEx(This,vVerb,vArgs)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT FolderItems2_QueryInterface(FolderItems2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG FolderItems2_AddRef(FolderItems2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG FolderItems2_Release(FolderItems2* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT FolderItems2_GetTypeInfoCount(FolderItems2* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT FolderItems2_GetTypeInfo(FolderItems2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT FolderItems2_GetIDsOfNames(FolderItems2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT FolderItems2_Invoke(FolderItems2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** FolderItems methods ***/
static FORCEINLINE HRESULT FolderItems2_get_Count(FolderItems2* This,LONG *plCount) {
    return This->lpVtbl->get_Count(This,plCount);
}
static FORCEINLINE HRESULT FolderItems2_get_Application(FolderItems2* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT FolderItems2_get_Parent(FolderItems2* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT FolderItems2_Item(FolderItems2* This,VARIANT index,FolderItem **ppid) {
    return This->lpVtbl->Item(This,index,ppid);
}
static FORCEINLINE HRESULT FolderItems2__NewEnum(FolderItems2* This,IUnknown **ppunk) {
    return This->lpVtbl->_NewEnum(This,ppunk);
}
/*** FolderItems2 methods ***/
static FORCEINLINE HRESULT FolderItems2_InvokeVerbEx(FolderItems2* This,VARIANT vVerb,VARIANT vArgs) {
    return This->lpVtbl->InvokeVerbEx(This,vVerb,vArgs);
}
#endif
#endif

#endif


#endif  /* __FolderItems2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * FolderItems3 interface
 */
#ifndef __FolderItems3_INTERFACE_DEFINED__
#define __FolderItems3_INTERFACE_DEFINED__

DEFINE_GUID(IID_FolderItems3, 0xeaa7c309, 0xbbec, 0x49d5, 0x82,0x1d, 0x64,0xd9,0x66,0xcb,0x66,0x7f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("eaa7c309-bbec-49d5-821d-64d966cb667f")
FolderItems3 : public FolderItems2
{
    virtual HRESULT STDMETHODCALLTYPE Filter(
        LONG grfFlags,
        BSTR bstrFileSpec) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Verbs(
        FolderItemVerbs **ppfic) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FolderItems3, 0xeaa7c309, 0xbbec, 0x49d5, 0x82,0x1d, 0x64,0xd9,0x66,0xcb,0x66,0x7f)
#endif
#else
typedef struct FolderItems3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        FolderItems3 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        FolderItems3 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        FolderItems3 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        FolderItems3 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        FolderItems3 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        FolderItems3 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        FolderItems3 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** FolderItems methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        FolderItems3 *This,
        LONG *plCount);

    HRESULT (STDMETHODCALLTYPE *get_Application)(
        FolderItems3 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        FolderItems3 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *Item)(
        FolderItems3 *This,
        VARIANT index,
        FolderItem **ppid);

    HRESULT (STDMETHODCALLTYPE *_NewEnum)(
        FolderItems3 *This,
        IUnknown **ppunk);

    /*** FolderItems2 methods ***/
    HRESULT (STDMETHODCALLTYPE *InvokeVerbEx)(
        FolderItems3 *This,
        VARIANT vVerb,
        VARIANT vArgs);

    /*** FolderItems3 methods ***/
    HRESULT (STDMETHODCALLTYPE *Filter)(
        FolderItems3 *This,
        LONG grfFlags,
        BSTR bstrFileSpec);

    HRESULT (STDMETHODCALLTYPE *get_Verbs)(
        FolderItems3 *This,
        FolderItemVerbs **ppfic);

    END_INTERFACE
} FolderItems3Vtbl;

interface FolderItems3 {
    CONST_VTBL FolderItems3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define FolderItems3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define FolderItems3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define FolderItems3_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define FolderItems3_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define FolderItems3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define FolderItems3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define FolderItems3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** FolderItems methods ***/
#define FolderItems3_get_Count(This,plCount) (This)->lpVtbl->get_Count(This,plCount)
#define FolderItems3_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define FolderItems3_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define FolderItems3_Item(This,index,ppid) (This)->lpVtbl->Item(This,index,ppid)
#define FolderItems3__NewEnum(This,ppunk) (This)->lpVtbl->_NewEnum(This,ppunk)
/*** FolderItems2 methods ***/
#define FolderItems3_InvokeVerbEx(This,vVerb,vArgs) (This)->lpVtbl->InvokeVerbEx(This,vVerb,vArgs)
/*** FolderItems3 methods ***/
#define FolderItems3_Filter(This,grfFlags,bstrFileSpec) (This)->lpVtbl->Filter(This,grfFlags,bstrFileSpec)
#define FolderItems3_get_Verbs(This,ppfic) (This)->lpVtbl->get_Verbs(This,ppfic)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT FolderItems3_QueryInterface(FolderItems3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG FolderItems3_AddRef(FolderItems3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG FolderItems3_Release(FolderItems3* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT FolderItems3_GetTypeInfoCount(FolderItems3* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT FolderItems3_GetTypeInfo(FolderItems3* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT FolderItems3_GetIDsOfNames(FolderItems3* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT FolderItems3_Invoke(FolderItems3* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** FolderItems methods ***/
static FORCEINLINE HRESULT FolderItems3_get_Count(FolderItems3* This,LONG *plCount) {
    return This->lpVtbl->get_Count(This,plCount);
}
static FORCEINLINE HRESULT FolderItems3_get_Application(FolderItems3* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT FolderItems3_get_Parent(FolderItems3* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT FolderItems3_Item(FolderItems3* This,VARIANT index,FolderItem **ppid) {
    return This->lpVtbl->Item(This,index,ppid);
}
static FORCEINLINE HRESULT FolderItems3__NewEnum(FolderItems3* This,IUnknown **ppunk) {
    return This->lpVtbl->_NewEnum(This,ppunk);
}
/*** FolderItems2 methods ***/
static FORCEINLINE HRESULT FolderItems3_InvokeVerbEx(FolderItems3* This,VARIANT vVerb,VARIANT vArgs) {
    return This->lpVtbl->InvokeVerbEx(This,vVerb,vArgs);
}
/*** FolderItems3 methods ***/
static FORCEINLINE HRESULT FolderItems3_Filter(FolderItems3* This,LONG grfFlags,BSTR bstrFileSpec) {
    return This->lpVtbl->Filter(This,grfFlags,bstrFileSpec);
}
static FORCEINLINE HRESULT FolderItems3_get_Verbs(FolderItems3* This,FolderItemVerbs **ppfic) {
    return This->lpVtbl->get_Verbs(This,ppfic);
}
#endif
#endif

#endif


#endif  /* __FolderItems3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * FolderItemVerb interface
 */
#ifndef __FolderItemVerb_INTERFACE_DEFINED__
#define __FolderItemVerb_INTERFACE_DEFINED__

DEFINE_GUID(IID_FolderItemVerb, 0x08ec3e00, 0x50b0, 0x11cf, 0x96,0x0c, 0x00,0x80,0xc7,0xf4,0xee,0x85);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("08ec3e00-50b0-11cf-960c-0080c7f4ee85")
FolderItemVerb : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Application(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Parent(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Name(
        BSTR *pbs) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoIt(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FolderItemVerb, 0x08ec3e00, 0x50b0, 0x11cf, 0x96,0x0c, 0x00,0x80,0xc7,0xf4,0xee,0x85)
#endif
#else
typedef struct FolderItemVerbVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        FolderItemVerb *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        FolderItemVerb *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        FolderItemVerb *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        FolderItemVerb *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        FolderItemVerb *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        FolderItemVerb *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        FolderItemVerb *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** FolderItemVerb methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Application)(
        FolderItemVerb *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        FolderItemVerb *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Name)(
        FolderItemVerb *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *DoIt)(
        FolderItemVerb *This);

    END_INTERFACE
} FolderItemVerbVtbl;

interface FolderItemVerb {
    CONST_VTBL FolderItemVerbVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define FolderItemVerb_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define FolderItemVerb_AddRef(This) (This)->lpVtbl->AddRef(This)
#define FolderItemVerb_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define FolderItemVerb_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define FolderItemVerb_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define FolderItemVerb_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define FolderItemVerb_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** FolderItemVerb methods ***/
#define FolderItemVerb_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define FolderItemVerb_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define FolderItemVerb_get_Name(This,pbs) (This)->lpVtbl->get_Name(This,pbs)
#define FolderItemVerb_DoIt(This) (This)->lpVtbl->DoIt(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT FolderItemVerb_QueryInterface(FolderItemVerb* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG FolderItemVerb_AddRef(FolderItemVerb* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG FolderItemVerb_Release(FolderItemVerb* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT FolderItemVerb_GetTypeInfoCount(FolderItemVerb* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT FolderItemVerb_GetTypeInfo(FolderItemVerb* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT FolderItemVerb_GetIDsOfNames(FolderItemVerb* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT FolderItemVerb_Invoke(FolderItemVerb* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** FolderItemVerb methods ***/
static FORCEINLINE HRESULT FolderItemVerb_get_Application(FolderItemVerb* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT FolderItemVerb_get_Parent(FolderItemVerb* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT FolderItemVerb_get_Name(FolderItemVerb* This,BSTR *pbs) {
    return This->lpVtbl->get_Name(This,pbs);
}
static FORCEINLINE HRESULT FolderItemVerb_DoIt(FolderItemVerb* This) {
    return This->lpVtbl->DoIt(This);
}
#endif
#endif

#endif


#endif  /* __FolderItemVerb_INTERFACE_DEFINED__ */

/*****************************************************************************
 * FolderItemVerbs interface
 */
#ifndef __FolderItemVerbs_INTERFACE_DEFINED__
#define __FolderItemVerbs_INTERFACE_DEFINED__

DEFINE_GUID(IID_FolderItemVerbs, 0x1f8352c0, 0x50b0, 0x11cf, 0x96,0x0c, 0x00,0x80,0xc7,0xf4,0xee,0x85);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1f8352c0-50b0-11cf-960c-0080c7f4ee85")
FolderItemVerbs : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Count(
        LONG *plCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Application(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Parent(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE Item(
        VARIANT index,
        FolderItemVerb **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE _NewEnum(
        IUnknown **ppunk) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FolderItemVerbs, 0x1f8352c0, 0x50b0, 0x11cf, 0x96,0x0c, 0x00,0x80,0xc7,0xf4,0xee,0x85)
#endif
#else
typedef struct FolderItemVerbsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        FolderItemVerbs *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        FolderItemVerbs *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        FolderItemVerbs *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        FolderItemVerbs *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        FolderItemVerbs *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        FolderItemVerbs *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        FolderItemVerbs *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** FolderItemVerbs methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Count)(
        FolderItemVerbs *This,
        LONG *plCount);

    HRESULT (STDMETHODCALLTYPE *get_Application)(
        FolderItemVerbs *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        FolderItemVerbs *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *Item)(
        FolderItemVerbs *This,
        VARIANT index,
        FolderItemVerb **ppid);

    HRESULT (STDMETHODCALLTYPE *_NewEnum)(
        FolderItemVerbs *This,
        IUnknown **ppunk);

    END_INTERFACE
} FolderItemVerbsVtbl;

interface FolderItemVerbs {
    CONST_VTBL FolderItemVerbsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define FolderItemVerbs_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define FolderItemVerbs_AddRef(This) (This)->lpVtbl->AddRef(This)
#define FolderItemVerbs_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define FolderItemVerbs_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define FolderItemVerbs_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define FolderItemVerbs_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define FolderItemVerbs_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** FolderItemVerbs methods ***/
#define FolderItemVerbs_get_Count(This,plCount) (This)->lpVtbl->get_Count(This,plCount)
#define FolderItemVerbs_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define FolderItemVerbs_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define FolderItemVerbs_Item(This,index,ppid) (This)->lpVtbl->Item(This,index,ppid)
#define FolderItemVerbs__NewEnum(This,ppunk) (This)->lpVtbl->_NewEnum(This,ppunk)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT FolderItemVerbs_QueryInterface(FolderItemVerbs* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG FolderItemVerbs_AddRef(FolderItemVerbs* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG FolderItemVerbs_Release(FolderItemVerbs* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT FolderItemVerbs_GetTypeInfoCount(FolderItemVerbs* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT FolderItemVerbs_GetTypeInfo(FolderItemVerbs* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT FolderItemVerbs_GetIDsOfNames(FolderItemVerbs* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT FolderItemVerbs_Invoke(FolderItemVerbs* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** FolderItemVerbs methods ***/
static FORCEINLINE HRESULT FolderItemVerbs_get_Count(FolderItemVerbs* This,LONG *plCount) {
    return This->lpVtbl->get_Count(This,plCount);
}
static FORCEINLINE HRESULT FolderItemVerbs_get_Application(FolderItemVerbs* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT FolderItemVerbs_get_Parent(FolderItemVerbs* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT FolderItemVerbs_Item(FolderItemVerbs* This,VARIANT index,FolderItemVerb **ppid) {
    return This->lpVtbl->Item(This,index,ppid);
}
static FORCEINLINE HRESULT FolderItemVerbs__NewEnum(FolderItemVerbs* This,IUnknown **ppunk) {
    return This->lpVtbl->_NewEnum(This,ppunk);
}
#endif
#endif

#endif


#endif  /* __FolderItemVerbs_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IShellLinkDual interface
 */
#ifndef __IShellLinkDual_INTERFACE_DEFINED__
#define __IShellLinkDual_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellLinkDual, 0x88a05c00, 0xf000, 0x11ce, 0x83,0x50, 0x44,0x45,0x53,0x54,0x00,0x00);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("88a05c00-f000-11ce-8350-444553540000")
IShellLinkDual : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Path(
        BSTR *pbs) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Path(
        BSTR bs) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Description(
        BSTR *pbs) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Description(
        BSTR bs) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_WorkingDirectory(
        BSTR *pbs) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_WorkingDirectory(
        BSTR bs) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Arguments(
        BSTR *pbs) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Arguments(
        BSTR bs) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Hotkey(
        int *piHK) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Hotkey(
        int iHK) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ShowCommand(
        int *piShowCommand) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_ShowCommand(
        int iShowCommand) = 0;

    virtual HRESULT STDMETHODCALLTYPE Resolve(
        int fFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetIconLocation(
        BSTR *pbs,
        int *piIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetIconLocation(
        BSTR bs,
        int iIcon) = 0;

    virtual HRESULT STDMETHODCALLTYPE Save(
        VARIANT vWhere) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellLinkDual, 0x88a05c00, 0xf000, 0x11ce, 0x83,0x50, 0x44,0x45,0x53,0x54,0x00,0x00)
#endif
#else
typedef struct IShellLinkDualVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellLinkDual *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellLinkDual *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellLinkDual *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IShellLinkDual *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IShellLinkDual *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IShellLinkDual *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IShellLinkDual *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IShellLinkDual methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Path)(
        IShellLinkDual *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *put_Path)(
        IShellLinkDual *This,
        BSTR bs);

    HRESULT (STDMETHODCALLTYPE *get_Description)(
        IShellLinkDual *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *put_Description)(
        IShellLinkDual *This,
        BSTR bs);

    HRESULT (STDMETHODCALLTYPE *get_WorkingDirectory)(
        IShellLinkDual *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *put_WorkingDirectory)(
        IShellLinkDual *This,
        BSTR bs);

    HRESULT (STDMETHODCALLTYPE *get_Arguments)(
        IShellLinkDual *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *put_Arguments)(
        IShellLinkDual *This,
        BSTR bs);

    HRESULT (STDMETHODCALLTYPE *get_Hotkey)(
        IShellLinkDual *This,
        int *piHK);

    HRESULT (STDMETHODCALLTYPE *put_Hotkey)(
        IShellLinkDual *This,
        int iHK);

    HRESULT (STDMETHODCALLTYPE *get_ShowCommand)(
        IShellLinkDual *This,
        int *piShowCommand);

    HRESULT (STDMETHODCALLTYPE *put_ShowCommand)(
        IShellLinkDual *This,
        int iShowCommand);

    HRESULT (STDMETHODCALLTYPE *Resolve)(
        IShellLinkDual *This,
        int fFlags);

    HRESULT (STDMETHODCALLTYPE *GetIconLocation)(
        IShellLinkDual *This,
        BSTR *pbs,
        int *piIcon);

    HRESULT (STDMETHODCALLTYPE *SetIconLocation)(
        IShellLinkDual *This,
        BSTR bs,
        int iIcon);

    HRESULT (STDMETHODCALLTYPE *Save)(
        IShellLinkDual *This,
        VARIANT vWhere);

    END_INTERFACE
} IShellLinkDualVtbl;

interface IShellLinkDual {
    CONST_VTBL IShellLinkDualVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellLinkDual_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellLinkDual_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellLinkDual_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IShellLinkDual_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IShellLinkDual_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IShellLinkDual_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IShellLinkDual_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IShellLinkDual methods ***/
#define IShellLinkDual_get_Path(This,pbs) (This)->lpVtbl->get_Path(This,pbs)
#define IShellLinkDual_put_Path(This,bs) (This)->lpVtbl->put_Path(This,bs)
#define IShellLinkDual_get_Description(This,pbs) (This)->lpVtbl->get_Description(This,pbs)
#define IShellLinkDual_put_Description(This,bs) (This)->lpVtbl->put_Description(This,bs)
#define IShellLinkDual_get_WorkingDirectory(This,pbs) (This)->lpVtbl->get_WorkingDirectory(This,pbs)
#define IShellLinkDual_put_WorkingDirectory(This,bs) (This)->lpVtbl->put_WorkingDirectory(This,bs)
#define IShellLinkDual_get_Arguments(This,pbs) (This)->lpVtbl->get_Arguments(This,pbs)
#define IShellLinkDual_put_Arguments(This,bs) (This)->lpVtbl->put_Arguments(This,bs)
#define IShellLinkDual_get_Hotkey(This,piHK) (This)->lpVtbl->get_Hotkey(This,piHK)
#define IShellLinkDual_put_Hotkey(This,iHK) (This)->lpVtbl->put_Hotkey(This,iHK)
#define IShellLinkDual_get_ShowCommand(This,piShowCommand) (This)->lpVtbl->get_ShowCommand(This,piShowCommand)
#define IShellLinkDual_put_ShowCommand(This,iShowCommand) (This)->lpVtbl->put_ShowCommand(This,iShowCommand)
#define IShellLinkDual_Resolve(This,fFlags) (This)->lpVtbl->Resolve(This,fFlags)
#define IShellLinkDual_GetIconLocation(This,pbs,piIcon) (This)->lpVtbl->GetIconLocation(This,pbs,piIcon)
#define IShellLinkDual_SetIconLocation(This,bs,iIcon) (This)->lpVtbl->SetIconLocation(This,bs,iIcon)
#define IShellLinkDual_Save(This,vWhere) (This)->lpVtbl->Save(This,vWhere)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellLinkDual_QueryInterface(IShellLinkDual* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellLinkDual_AddRef(IShellLinkDual* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellLinkDual_Release(IShellLinkDual* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IShellLinkDual_GetTypeInfoCount(IShellLinkDual* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IShellLinkDual_GetTypeInfo(IShellLinkDual* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IShellLinkDual_GetIDsOfNames(IShellLinkDual* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IShellLinkDual_Invoke(IShellLinkDual* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IShellLinkDual methods ***/
static FORCEINLINE HRESULT IShellLinkDual_get_Path(IShellLinkDual* This,BSTR *pbs) {
    return This->lpVtbl->get_Path(This,pbs);
}
static FORCEINLINE HRESULT IShellLinkDual_put_Path(IShellLinkDual* This,BSTR bs) {
    return This->lpVtbl->put_Path(This,bs);
}
static FORCEINLINE HRESULT IShellLinkDual_get_Description(IShellLinkDual* This,BSTR *pbs) {
    return This->lpVtbl->get_Description(This,pbs);
}
static FORCEINLINE HRESULT IShellLinkDual_put_Description(IShellLinkDual* This,BSTR bs) {
    return This->lpVtbl->put_Description(This,bs);
}
static FORCEINLINE HRESULT IShellLinkDual_get_WorkingDirectory(IShellLinkDual* This,BSTR *pbs) {
    return This->lpVtbl->get_WorkingDirectory(This,pbs);
}
static FORCEINLINE HRESULT IShellLinkDual_put_WorkingDirectory(IShellLinkDual* This,BSTR bs) {
    return This->lpVtbl->put_WorkingDirectory(This,bs);
}
static FORCEINLINE HRESULT IShellLinkDual_get_Arguments(IShellLinkDual* This,BSTR *pbs) {
    return This->lpVtbl->get_Arguments(This,pbs);
}
static FORCEINLINE HRESULT IShellLinkDual_put_Arguments(IShellLinkDual* This,BSTR bs) {
    return This->lpVtbl->put_Arguments(This,bs);
}
static FORCEINLINE HRESULT IShellLinkDual_get_Hotkey(IShellLinkDual* This,int *piHK) {
    return This->lpVtbl->get_Hotkey(This,piHK);
}
static FORCEINLINE HRESULT IShellLinkDual_put_Hotkey(IShellLinkDual* This,int iHK) {
    return This->lpVtbl->put_Hotkey(This,iHK);
}
static FORCEINLINE HRESULT IShellLinkDual_get_ShowCommand(IShellLinkDual* This,int *piShowCommand) {
    return This->lpVtbl->get_ShowCommand(This,piShowCommand);
}
static FORCEINLINE HRESULT IShellLinkDual_put_ShowCommand(IShellLinkDual* This,int iShowCommand) {
    return This->lpVtbl->put_ShowCommand(This,iShowCommand);
}
static FORCEINLINE HRESULT IShellLinkDual_Resolve(IShellLinkDual* This,int fFlags) {
    return This->lpVtbl->Resolve(This,fFlags);
}
static FORCEINLINE HRESULT IShellLinkDual_GetIconLocation(IShellLinkDual* This,BSTR *pbs,int *piIcon) {
    return This->lpVtbl->GetIconLocation(This,pbs,piIcon);
}
static FORCEINLINE HRESULT IShellLinkDual_SetIconLocation(IShellLinkDual* This,BSTR bs,int iIcon) {
    return This->lpVtbl->SetIconLocation(This,bs,iIcon);
}
static FORCEINLINE HRESULT IShellLinkDual_Save(IShellLinkDual* This,VARIANT vWhere) {
    return This->lpVtbl->Save(This,vWhere);
}
#endif
#endif

#endif


#endif  /* __IShellLinkDual_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IShellLinkDual2 interface
 */
#ifndef __IShellLinkDual2_INTERFACE_DEFINED__
#define __IShellLinkDual2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellLinkDual2, 0x317ee249, 0xf12e, 0x11d2, 0xb1,0xe4, 0x00,0xc0,0x4f,0x8e,0xeb,0x3e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("317ee249-f12e-11d2-b1e4-00c04f8eeb3e")
IShellLinkDual2 : public IShellLinkDual
{
    virtual HRESULT STDMETHODCALLTYPE get_Target(
        FolderItem **ppfi) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellLinkDual2, 0x317ee249, 0xf12e, 0x11d2, 0xb1,0xe4, 0x00,0xc0,0x4f,0x8e,0xeb,0x3e)
#endif
#else
typedef struct IShellLinkDual2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellLinkDual2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellLinkDual2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellLinkDual2 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IShellLinkDual2 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IShellLinkDual2 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IShellLinkDual2 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IShellLinkDual2 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IShellLinkDual methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Path)(
        IShellLinkDual2 *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *put_Path)(
        IShellLinkDual2 *This,
        BSTR bs);

    HRESULT (STDMETHODCALLTYPE *get_Description)(
        IShellLinkDual2 *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *put_Description)(
        IShellLinkDual2 *This,
        BSTR bs);

    HRESULT (STDMETHODCALLTYPE *get_WorkingDirectory)(
        IShellLinkDual2 *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *put_WorkingDirectory)(
        IShellLinkDual2 *This,
        BSTR bs);

    HRESULT (STDMETHODCALLTYPE *get_Arguments)(
        IShellLinkDual2 *This,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *put_Arguments)(
        IShellLinkDual2 *This,
        BSTR bs);

    HRESULT (STDMETHODCALLTYPE *get_Hotkey)(
        IShellLinkDual2 *This,
        int *piHK);

    HRESULT (STDMETHODCALLTYPE *put_Hotkey)(
        IShellLinkDual2 *This,
        int iHK);

    HRESULT (STDMETHODCALLTYPE *get_ShowCommand)(
        IShellLinkDual2 *This,
        int *piShowCommand);

    HRESULT (STDMETHODCALLTYPE *put_ShowCommand)(
        IShellLinkDual2 *This,
        int iShowCommand);

    HRESULT (STDMETHODCALLTYPE *Resolve)(
        IShellLinkDual2 *This,
        int fFlags);

    HRESULT (STDMETHODCALLTYPE *GetIconLocation)(
        IShellLinkDual2 *This,
        BSTR *pbs,
        int *piIcon);

    HRESULT (STDMETHODCALLTYPE *SetIconLocation)(
        IShellLinkDual2 *This,
        BSTR bs,
        int iIcon);

    HRESULT (STDMETHODCALLTYPE *Save)(
        IShellLinkDual2 *This,
        VARIANT vWhere);

    /*** IShellLinkDual2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Target)(
        IShellLinkDual2 *This,
        FolderItem **ppfi);

    END_INTERFACE
} IShellLinkDual2Vtbl;

interface IShellLinkDual2 {
    CONST_VTBL IShellLinkDual2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellLinkDual2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellLinkDual2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellLinkDual2_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IShellLinkDual2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IShellLinkDual2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IShellLinkDual2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IShellLinkDual2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IShellLinkDual methods ***/
#define IShellLinkDual2_get_Path(This,pbs) (This)->lpVtbl->get_Path(This,pbs)
#define IShellLinkDual2_put_Path(This,bs) (This)->lpVtbl->put_Path(This,bs)
#define IShellLinkDual2_get_Description(This,pbs) (This)->lpVtbl->get_Description(This,pbs)
#define IShellLinkDual2_put_Description(This,bs) (This)->lpVtbl->put_Description(This,bs)
#define IShellLinkDual2_get_WorkingDirectory(This,pbs) (This)->lpVtbl->get_WorkingDirectory(This,pbs)
#define IShellLinkDual2_put_WorkingDirectory(This,bs) (This)->lpVtbl->put_WorkingDirectory(This,bs)
#define IShellLinkDual2_get_Arguments(This,pbs) (This)->lpVtbl->get_Arguments(This,pbs)
#define IShellLinkDual2_put_Arguments(This,bs) (This)->lpVtbl->put_Arguments(This,bs)
#define IShellLinkDual2_get_Hotkey(This,piHK) (This)->lpVtbl->get_Hotkey(This,piHK)
#define IShellLinkDual2_put_Hotkey(This,iHK) (This)->lpVtbl->put_Hotkey(This,iHK)
#define IShellLinkDual2_get_ShowCommand(This,piShowCommand) (This)->lpVtbl->get_ShowCommand(This,piShowCommand)
#define IShellLinkDual2_put_ShowCommand(This,iShowCommand) (This)->lpVtbl->put_ShowCommand(This,iShowCommand)
#define IShellLinkDual2_Resolve(This,fFlags) (This)->lpVtbl->Resolve(This,fFlags)
#define IShellLinkDual2_GetIconLocation(This,pbs,piIcon) (This)->lpVtbl->GetIconLocation(This,pbs,piIcon)
#define IShellLinkDual2_SetIconLocation(This,bs,iIcon) (This)->lpVtbl->SetIconLocation(This,bs,iIcon)
#define IShellLinkDual2_Save(This,vWhere) (This)->lpVtbl->Save(This,vWhere)
/*** IShellLinkDual2 methods ***/
#define IShellLinkDual2_get_Target(This,ppfi) (This)->lpVtbl->get_Target(This,ppfi)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellLinkDual2_QueryInterface(IShellLinkDual2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellLinkDual2_AddRef(IShellLinkDual2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellLinkDual2_Release(IShellLinkDual2* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IShellLinkDual2_GetTypeInfoCount(IShellLinkDual2* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IShellLinkDual2_GetTypeInfo(IShellLinkDual2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IShellLinkDual2_GetIDsOfNames(IShellLinkDual2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IShellLinkDual2_Invoke(IShellLinkDual2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IShellLinkDual methods ***/
static FORCEINLINE HRESULT IShellLinkDual2_get_Path(IShellLinkDual2* This,BSTR *pbs) {
    return This->lpVtbl->get_Path(This,pbs);
}
static FORCEINLINE HRESULT IShellLinkDual2_put_Path(IShellLinkDual2* This,BSTR bs) {
    return This->lpVtbl->put_Path(This,bs);
}
static FORCEINLINE HRESULT IShellLinkDual2_get_Description(IShellLinkDual2* This,BSTR *pbs) {
    return This->lpVtbl->get_Description(This,pbs);
}
static FORCEINLINE HRESULT IShellLinkDual2_put_Description(IShellLinkDual2* This,BSTR bs) {
    return This->lpVtbl->put_Description(This,bs);
}
static FORCEINLINE HRESULT IShellLinkDual2_get_WorkingDirectory(IShellLinkDual2* This,BSTR *pbs) {
    return This->lpVtbl->get_WorkingDirectory(This,pbs);
}
static FORCEINLINE HRESULT IShellLinkDual2_put_WorkingDirectory(IShellLinkDual2* This,BSTR bs) {
    return This->lpVtbl->put_WorkingDirectory(This,bs);
}
static FORCEINLINE HRESULT IShellLinkDual2_get_Arguments(IShellLinkDual2* This,BSTR *pbs) {
    return This->lpVtbl->get_Arguments(This,pbs);
}
static FORCEINLINE HRESULT IShellLinkDual2_put_Arguments(IShellLinkDual2* This,BSTR bs) {
    return This->lpVtbl->put_Arguments(This,bs);
}
static FORCEINLINE HRESULT IShellLinkDual2_get_Hotkey(IShellLinkDual2* This,int *piHK) {
    return This->lpVtbl->get_Hotkey(This,piHK);
}
static FORCEINLINE HRESULT IShellLinkDual2_put_Hotkey(IShellLinkDual2* This,int iHK) {
    return This->lpVtbl->put_Hotkey(This,iHK);
}
static FORCEINLINE HRESULT IShellLinkDual2_get_ShowCommand(IShellLinkDual2* This,int *piShowCommand) {
    return This->lpVtbl->get_ShowCommand(This,piShowCommand);
}
static FORCEINLINE HRESULT IShellLinkDual2_put_ShowCommand(IShellLinkDual2* This,int iShowCommand) {
    return This->lpVtbl->put_ShowCommand(This,iShowCommand);
}
static FORCEINLINE HRESULT IShellLinkDual2_Resolve(IShellLinkDual2* This,int fFlags) {
    return This->lpVtbl->Resolve(This,fFlags);
}
static FORCEINLINE HRESULT IShellLinkDual2_GetIconLocation(IShellLinkDual2* This,BSTR *pbs,int *piIcon) {
    return This->lpVtbl->GetIconLocation(This,pbs,piIcon);
}
static FORCEINLINE HRESULT IShellLinkDual2_SetIconLocation(IShellLinkDual2* This,BSTR bs,int iIcon) {
    return This->lpVtbl->SetIconLocation(This,bs,iIcon);
}
static FORCEINLINE HRESULT IShellLinkDual2_Save(IShellLinkDual2* This,VARIANT vWhere) {
    return This->lpVtbl->Save(This,vWhere);
}
/*** IShellLinkDual2 methods ***/
static FORCEINLINE HRESULT IShellLinkDual2_get_Target(IShellLinkDual2* This,FolderItem **ppfi) {
    return This->lpVtbl->get_Target(This,ppfi);
}
#endif
#endif

#endif


#endif  /* __IShellLinkDual2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ShellLinkObject coclass
 */

DEFINE_GUID(CLSID_ShellLinkObject, 0x11219420, 0x1768, 0x11d1, 0x95,0xbe, 0x00,0x60,0x97,0x97,0xea,0x4f);

#ifdef __cplusplus
class DECLSPEC_UUID("11219420-1768-11d1-95be-00609797ea4f") ShellLinkObject;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ShellLinkObject, 0x11219420, 0x1768, 0x11d1, 0x95,0xbe, 0x00,0x60,0x97,0x97,0xea,0x4f)
#endif
#endif

/*****************************************************************************
 * IShellFolderViewDual interface
 */
#ifndef __IShellFolderViewDual_INTERFACE_DEFINED__
#define __IShellFolderViewDual_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellFolderViewDual, 0xe7a1af80, 0x4d96, 0x11cf, 0x96,0x0c, 0x00,0x80,0xc7,0xf4,0xee,0x85);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e7a1af80-4d96-11cf-960c-0080c7f4ee85")
IShellFolderViewDual : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Application(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Parent(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Folder(
        Folder **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE SelectedItems(
        FolderItems **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FocusedItem(
        FolderItem **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE SelectItem(
        VARIANT *pvfi,
        int dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE PopupItemMenu(
        FolderItem *pfi,
        VARIANT vx,
        VARIANT vy,
        BSTR *pbs) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Script(
        IDispatch **ppDisp) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_ViewOptions(
        LONG *plViewOptions) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellFolderViewDual, 0xe7a1af80, 0x4d96, 0x11cf, 0x96,0x0c, 0x00,0x80,0xc7,0xf4,0xee,0x85)
#endif
#else
typedef struct IShellFolderViewDualVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellFolderViewDual *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellFolderViewDual *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellFolderViewDual *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IShellFolderViewDual *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IShellFolderViewDual *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IShellFolderViewDual *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IShellFolderViewDual *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IShellFolderViewDual methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Application)(
        IShellFolderViewDual *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        IShellFolderViewDual *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Folder)(
        IShellFolderViewDual *This,
        Folder **ppid);

    HRESULT (STDMETHODCALLTYPE *SelectedItems)(
        IShellFolderViewDual *This,
        FolderItems **ppid);

    HRESULT (STDMETHODCALLTYPE *get_FocusedItem)(
        IShellFolderViewDual *This,
        FolderItem **ppid);

    HRESULT (STDMETHODCALLTYPE *SelectItem)(
        IShellFolderViewDual *This,
        VARIANT *pvfi,
        int dwFlags);

    HRESULT (STDMETHODCALLTYPE *PopupItemMenu)(
        IShellFolderViewDual *This,
        FolderItem *pfi,
        VARIANT vx,
        VARIANT vy,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *get_Script)(
        IShellFolderViewDual *This,
        IDispatch **ppDisp);

    HRESULT (STDMETHODCALLTYPE *get_ViewOptions)(
        IShellFolderViewDual *This,
        LONG *plViewOptions);

    END_INTERFACE
} IShellFolderViewDualVtbl;

interface IShellFolderViewDual {
    CONST_VTBL IShellFolderViewDualVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellFolderViewDual_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellFolderViewDual_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellFolderViewDual_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IShellFolderViewDual_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IShellFolderViewDual_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IShellFolderViewDual_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IShellFolderViewDual_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IShellFolderViewDual methods ***/
#define IShellFolderViewDual_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define IShellFolderViewDual_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define IShellFolderViewDual_get_Folder(This,ppid) (This)->lpVtbl->get_Folder(This,ppid)
#define IShellFolderViewDual_SelectedItems(This,ppid) (This)->lpVtbl->SelectedItems(This,ppid)
#define IShellFolderViewDual_get_FocusedItem(This,ppid) (This)->lpVtbl->get_FocusedItem(This,ppid)
#define IShellFolderViewDual_SelectItem(This,pvfi,dwFlags) (This)->lpVtbl->SelectItem(This,pvfi,dwFlags)
#define IShellFolderViewDual_PopupItemMenu(This,pfi,vx,vy,pbs) (This)->lpVtbl->PopupItemMenu(This,pfi,vx,vy,pbs)
#define IShellFolderViewDual_get_Script(This,ppDisp) (This)->lpVtbl->get_Script(This,ppDisp)
#define IShellFolderViewDual_get_ViewOptions(This,plViewOptions) (This)->lpVtbl->get_ViewOptions(This,plViewOptions)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellFolderViewDual_QueryInterface(IShellFolderViewDual* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellFolderViewDual_AddRef(IShellFolderViewDual* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellFolderViewDual_Release(IShellFolderViewDual* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IShellFolderViewDual_GetTypeInfoCount(IShellFolderViewDual* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IShellFolderViewDual_GetTypeInfo(IShellFolderViewDual* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IShellFolderViewDual_GetIDsOfNames(IShellFolderViewDual* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IShellFolderViewDual_Invoke(IShellFolderViewDual* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IShellFolderViewDual methods ***/
static FORCEINLINE HRESULT IShellFolderViewDual_get_Application(IShellFolderViewDual* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual_get_Parent(IShellFolderViewDual* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual_get_Folder(IShellFolderViewDual* This,Folder **ppid) {
    return This->lpVtbl->get_Folder(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual_SelectedItems(IShellFolderViewDual* This,FolderItems **ppid) {
    return This->lpVtbl->SelectedItems(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual_get_FocusedItem(IShellFolderViewDual* This,FolderItem **ppid) {
    return This->lpVtbl->get_FocusedItem(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual_SelectItem(IShellFolderViewDual* This,VARIANT *pvfi,int dwFlags) {
    return This->lpVtbl->SelectItem(This,pvfi,dwFlags);
}
static FORCEINLINE HRESULT IShellFolderViewDual_PopupItemMenu(IShellFolderViewDual* This,FolderItem *pfi,VARIANT vx,VARIANT vy,BSTR *pbs) {
    return This->lpVtbl->PopupItemMenu(This,pfi,vx,vy,pbs);
}
static FORCEINLINE HRESULT IShellFolderViewDual_get_Script(IShellFolderViewDual* This,IDispatch **ppDisp) {
    return This->lpVtbl->get_Script(This,ppDisp);
}
static FORCEINLINE HRESULT IShellFolderViewDual_get_ViewOptions(IShellFolderViewDual* This,LONG *plViewOptions) {
    return This->lpVtbl->get_ViewOptions(This,plViewOptions);
}
#endif
#endif

#endif


#endif  /* __IShellFolderViewDual_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IShellFolderViewDual2 interface
 */
#ifndef __IShellFolderViewDual2_INTERFACE_DEFINED__
#define __IShellFolderViewDual2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellFolderViewDual2, 0x31c147b6, 0x0ade, 0x4a3c, 0xb5,0x14, 0xdd,0xf9,0x32,0xef,0x6d,0x17);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("31c147b6-0ade-4a3c-b514-ddf932ef6d17")
IShellFolderViewDual2 : public IShellFolderViewDual
{
    virtual HRESULT STDMETHODCALLTYPE get_CurrentViewMode(
        UINT *pViewMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_CurrentViewMode(
        UINT ViewMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SelectItemRelative(
        int iRelative) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellFolderViewDual2, 0x31c147b6, 0x0ade, 0x4a3c, 0xb5,0x14, 0xdd,0xf9,0x32,0xef,0x6d,0x17)
#endif
#else
typedef struct IShellFolderViewDual2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellFolderViewDual2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellFolderViewDual2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellFolderViewDual2 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IShellFolderViewDual2 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IShellFolderViewDual2 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IShellFolderViewDual2 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IShellFolderViewDual2 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IShellFolderViewDual methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Application)(
        IShellFolderViewDual2 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        IShellFolderViewDual2 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Folder)(
        IShellFolderViewDual2 *This,
        Folder **ppid);

    HRESULT (STDMETHODCALLTYPE *SelectedItems)(
        IShellFolderViewDual2 *This,
        FolderItems **ppid);

    HRESULT (STDMETHODCALLTYPE *get_FocusedItem)(
        IShellFolderViewDual2 *This,
        FolderItem **ppid);

    HRESULT (STDMETHODCALLTYPE *SelectItem)(
        IShellFolderViewDual2 *This,
        VARIANT *pvfi,
        int dwFlags);

    HRESULT (STDMETHODCALLTYPE *PopupItemMenu)(
        IShellFolderViewDual2 *This,
        FolderItem *pfi,
        VARIANT vx,
        VARIANT vy,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *get_Script)(
        IShellFolderViewDual2 *This,
        IDispatch **ppDisp);

    HRESULT (STDMETHODCALLTYPE *get_ViewOptions)(
        IShellFolderViewDual2 *This,
        LONG *plViewOptions);

    /*** IShellFolderViewDual2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentViewMode)(
        IShellFolderViewDual2 *This,
        UINT *pViewMode);

    HRESULT (STDMETHODCALLTYPE *put_CurrentViewMode)(
        IShellFolderViewDual2 *This,
        UINT ViewMode);

    HRESULT (STDMETHODCALLTYPE *SelectItemRelative)(
        IShellFolderViewDual2 *This,
        int iRelative);

    END_INTERFACE
} IShellFolderViewDual2Vtbl;

interface IShellFolderViewDual2 {
    CONST_VTBL IShellFolderViewDual2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellFolderViewDual2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellFolderViewDual2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellFolderViewDual2_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IShellFolderViewDual2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IShellFolderViewDual2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IShellFolderViewDual2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IShellFolderViewDual2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IShellFolderViewDual methods ***/
#define IShellFolderViewDual2_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define IShellFolderViewDual2_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define IShellFolderViewDual2_get_Folder(This,ppid) (This)->lpVtbl->get_Folder(This,ppid)
#define IShellFolderViewDual2_SelectedItems(This,ppid) (This)->lpVtbl->SelectedItems(This,ppid)
#define IShellFolderViewDual2_get_FocusedItem(This,ppid) (This)->lpVtbl->get_FocusedItem(This,ppid)
#define IShellFolderViewDual2_SelectItem(This,pvfi,dwFlags) (This)->lpVtbl->SelectItem(This,pvfi,dwFlags)
#define IShellFolderViewDual2_PopupItemMenu(This,pfi,vx,vy,pbs) (This)->lpVtbl->PopupItemMenu(This,pfi,vx,vy,pbs)
#define IShellFolderViewDual2_get_Script(This,ppDisp) (This)->lpVtbl->get_Script(This,ppDisp)
#define IShellFolderViewDual2_get_ViewOptions(This,plViewOptions) (This)->lpVtbl->get_ViewOptions(This,plViewOptions)
/*** IShellFolderViewDual2 methods ***/
#define IShellFolderViewDual2_get_CurrentViewMode(This,pViewMode) (This)->lpVtbl->get_CurrentViewMode(This,pViewMode)
#define IShellFolderViewDual2_put_CurrentViewMode(This,ViewMode) (This)->lpVtbl->put_CurrentViewMode(This,ViewMode)
#define IShellFolderViewDual2_SelectItemRelative(This,iRelative) (This)->lpVtbl->SelectItemRelative(This,iRelative)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellFolderViewDual2_QueryInterface(IShellFolderViewDual2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellFolderViewDual2_AddRef(IShellFolderViewDual2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellFolderViewDual2_Release(IShellFolderViewDual2* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IShellFolderViewDual2_GetTypeInfoCount(IShellFolderViewDual2* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IShellFolderViewDual2_GetTypeInfo(IShellFolderViewDual2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IShellFolderViewDual2_GetIDsOfNames(IShellFolderViewDual2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IShellFolderViewDual2_Invoke(IShellFolderViewDual2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IShellFolderViewDual methods ***/
static FORCEINLINE HRESULT IShellFolderViewDual2_get_Application(IShellFolderViewDual2* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual2_get_Parent(IShellFolderViewDual2* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual2_get_Folder(IShellFolderViewDual2* This,Folder **ppid) {
    return This->lpVtbl->get_Folder(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual2_SelectedItems(IShellFolderViewDual2* This,FolderItems **ppid) {
    return This->lpVtbl->SelectedItems(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual2_get_FocusedItem(IShellFolderViewDual2* This,FolderItem **ppid) {
    return This->lpVtbl->get_FocusedItem(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual2_SelectItem(IShellFolderViewDual2* This,VARIANT *pvfi,int dwFlags) {
    return This->lpVtbl->SelectItem(This,pvfi,dwFlags);
}
static FORCEINLINE HRESULT IShellFolderViewDual2_PopupItemMenu(IShellFolderViewDual2* This,FolderItem *pfi,VARIANT vx,VARIANT vy,BSTR *pbs) {
    return This->lpVtbl->PopupItemMenu(This,pfi,vx,vy,pbs);
}
static FORCEINLINE HRESULT IShellFolderViewDual2_get_Script(IShellFolderViewDual2* This,IDispatch **ppDisp) {
    return This->lpVtbl->get_Script(This,ppDisp);
}
static FORCEINLINE HRESULT IShellFolderViewDual2_get_ViewOptions(IShellFolderViewDual2* This,LONG *plViewOptions) {
    return This->lpVtbl->get_ViewOptions(This,plViewOptions);
}
/*** IShellFolderViewDual2 methods ***/
static FORCEINLINE HRESULT IShellFolderViewDual2_get_CurrentViewMode(IShellFolderViewDual2* This,UINT *pViewMode) {
    return This->lpVtbl->get_CurrentViewMode(This,pViewMode);
}
static FORCEINLINE HRESULT IShellFolderViewDual2_put_CurrentViewMode(IShellFolderViewDual2* This,UINT ViewMode) {
    return This->lpVtbl->put_CurrentViewMode(This,ViewMode);
}
static FORCEINLINE HRESULT IShellFolderViewDual2_SelectItemRelative(IShellFolderViewDual2* This,int iRelative) {
    return This->lpVtbl->SelectItemRelative(This,iRelative);
}
#endif
#endif

#endif


#endif  /* __IShellFolderViewDual2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IShellFolderViewDual3 interface
 */
#ifndef __IShellFolderViewDual3_INTERFACE_DEFINED__
#define __IShellFolderViewDual3_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellFolderViewDual3, 0x29ec8e6c, 0x46d3, 0x411f, 0xba,0xaa, 0x61,0x1a,0x6c,0x9c,0xac,0x66);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("29ec8e6c-46d3-411f-baaa-611a6c9cac66")
IShellFolderViewDual3 : public IShellFolderViewDual2
{
    virtual HRESULT STDMETHODCALLTYPE get_GroupBy(
        BSTR *pbstrGroupBy) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_GroupBy(
        BSTR bstrGroupBy) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_FolderFlags(
        DWORD *pdwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_FolderFlags(
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SortColumns(
        BSTR *pbstrSortColumns) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_SortColumns(
        BSTR bstrSortColumns) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_IconSize(
        int iIconSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_IconSize(
        int *piIconSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE FilterView(
        BSTR bstrFilterText) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellFolderViewDual3, 0x29ec8e6c, 0x46d3, 0x411f, 0xba,0xaa, 0x61,0x1a,0x6c,0x9c,0xac,0x66)
#endif
#else
typedef struct IShellFolderViewDual3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellFolderViewDual3 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellFolderViewDual3 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellFolderViewDual3 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IShellFolderViewDual3 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IShellFolderViewDual3 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IShellFolderViewDual3 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IShellFolderViewDual3 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IShellFolderViewDual methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Application)(
        IShellFolderViewDual3 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        IShellFolderViewDual3 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Folder)(
        IShellFolderViewDual3 *This,
        Folder **ppid);

    HRESULT (STDMETHODCALLTYPE *SelectedItems)(
        IShellFolderViewDual3 *This,
        FolderItems **ppid);

    HRESULT (STDMETHODCALLTYPE *get_FocusedItem)(
        IShellFolderViewDual3 *This,
        FolderItem **ppid);

    HRESULT (STDMETHODCALLTYPE *SelectItem)(
        IShellFolderViewDual3 *This,
        VARIANT *pvfi,
        int dwFlags);

    HRESULT (STDMETHODCALLTYPE *PopupItemMenu)(
        IShellFolderViewDual3 *This,
        FolderItem *pfi,
        VARIANT vx,
        VARIANT vy,
        BSTR *pbs);

    HRESULT (STDMETHODCALLTYPE *get_Script)(
        IShellFolderViewDual3 *This,
        IDispatch **ppDisp);

    HRESULT (STDMETHODCALLTYPE *get_ViewOptions)(
        IShellFolderViewDual3 *This,
        LONG *plViewOptions);

    /*** IShellFolderViewDual2 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_CurrentViewMode)(
        IShellFolderViewDual3 *This,
        UINT *pViewMode);

    HRESULT (STDMETHODCALLTYPE *put_CurrentViewMode)(
        IShellFolderViewDual3 *This,
        UINT ViewMode);

    HRESULT (STDMETHODCALLTYPE *SelectItemRelative)(
        IShellFolderViewDual3 *This,
        int iRelative);

    /*** IShellFolderViewDual3 methods ***/
    HRESULT (STDMETHODCALLTYPE *get_GroupBy)(
        IShellFolderViewDual3 *This,
        BSTR *pbstrGroupBy);

    HRESULT (STDMETHODCALLTYPE *put_GroupBy)(
        IShellFolderViewDual3 *This,
        BSTR bstrGroupBy);

    HRESULT (STDMETHODCALLTYPE *get_FolderFlags)(
        IShellFolderViewDual3 *This,
        DWORD *pdwFlags);

    HRESULT (STDMETHODCALLTYPE *put_FolderFlags)(
        IShellFolderViewDual3 *This,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *get_SortColumns)(
        IShellFolderViewDual3 *This,
        BSTR *pbstrSortColumns);

    HRESULT (STDMETHODCALLTYPE *put_SortColumns)(
        IShellFolderViewDual3 *This,
        BSTR bstrSortColumns);

    HRESULT (STDMETHODCALLTYPE *put_IconSize)(
        IShellFolderViewDual3 *This,
        int iIconSize);

    HRESULT (STDMETHODCALLTYPE *get_IconSize)(
        IShellFolderViewDual3 *This,
        int *piIconSize);

    HRESULT (STDMETHODCALLTYPE *FilterView)(
        IShellFolderViewDual3 *This,
        BSTR bstrFilterText);

    END_INTERFACE
} IShellFolderViewDual3Vtbl;

interface IShellFolderViewDual3 {
    CONST_VTBL IShellFolderViewDual3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellFolderViewDual3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellFolderViewDual3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellFolderViewDual3_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IShellFolderViewDual3_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IShellFolderViewDual3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IShellFolderViewDual3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IShellFolderViewDual3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IShellFolderViewDual methods ***/
#define IShellFolderViewDual3_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define IShellFolderViewDual3_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define IShellFolderViewDual3_get_Folder(This,ppid) (This)->lpVtbl->get_Folder(This,ppid)
#define IShellFolderViewDual3_SelectedItems(This,ppid) (This)->lpVtbl->SelectedItems(This,ppid)
#define IShellFolderViewDual3_get_FocusedItem(This,ppid) (This)->lpVtbl->get_FocusedItem(This,ppid)
#define IShellFolderViewDual3_SelectItem(This,pvfi,dwFlags) (This)->lpVtbl->SelectItem(This,pvfi,dwFlags)
#define IShellFolderViewDual3_PopupItemMenu(This,pfi,vx,vy,pbs) (This)->lpVtbl->PopupItemMenu(This,pfi,vx,vy,pbs)
#define IShellFolderViewDual3_get_Script(This,ppDisp) (This)->lpVtbl->get_Script(This,ppDisp)
#define IShellFolderViewDual3_get_ViewOptions(This,plViewOptions) (This)->lpVtbl->get_ViewOptions(This,plViewOptions)
/*** IShellFolderViewDual2 methods ***/
#define IShellFolderViewDual3_get_CurrentViewMode(This,pViewMode) (This)->lpVtbl->get_CurrentViewMode(This,pViewMode)
#define IShellFolderViewDual3_put_CurrentViewMode(This,ViewMode) (This)->lpVtbl->put_CurrentViewMode(This,ViewMode)
#define IShellFolderViewDual3_SelectItemRelative(This,iRelative) (This)->lpVtbl->SelectItemRelative(This,iRelative)
/*** IShellFolderViewDual3 methods ***/
#define IShellFolderViewDual3_get_GroupBy(This,pbstrGroupBy) (This)->lpVtbl->get_GroupBy(This,pbstrGroupBy)
#define IShellFolderViewDual3_put_GroupBy(This,bstrGroupBy) (This)->lpVtbl->put_GroupBy(This,bstrGroupBy)
#define IShellFolderViewDual3_get_FolderFlags(This,pdwFlags) (This)->lpVtbl->get_FolderFlags(This,pdwFlags)
#define IShellFolderViewDual3_put_FolderFlags(This,dwFlags) (This)->lpVtbl->put_FolderFlags(This,dwFlags)
#define IShellFolderViewDual3_get_SortColumns(This,pbstrSortColumns) (This)->lpVtbl->get_SortColumns(This,pbstrSortColumns)
#define IShellFolderViewDual3_put_SortColumns(This,bstrSortColumns) (This)->lpVtbl->put_SortColumns(This,bstrSortColumns)
#define IShellFolderViewDual3_put_IconSize(This,iIconSize) (This)->lpVtbl->put_IconSize(This,iIconSize)
#define IShellFolderViewDual3_get_IconSize(This,piIconSize) (This)->lpVtbl->get_IconSize(This,piIconSize)
#define IShellFolderViewDual3_FilterView(This,bstrFilterText) (This)->lpVtbl->FilterView(This,bstrFilterText)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellFolderViewDual3_QueryInterface(IShellFolderViewDual3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellFolderViewDual3_AddRef(IShellFolderViewDual3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellFolderViewDual3_Release(IShellFolderViewDual3* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IShellFolderViewDual3_GetTypeInfoCount(IShellFolderViewDual3* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_GetTypeInfo(IShellFolderViewDual3* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_GetIDsOfNames(IShellFolderViewDual3* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_Invoke(IShellFolderViewDual3* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IShellFolderViewDual methods ***/
static FORCEINLINE HRESULT IShellFolderViewDual3_get_Application(IShellFolderViewDual3* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_get_Parent(IShellFolderViewDual3* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_get_Folder(IShellFolderViewDual3* This,Folder **ppid) {
    return This->lpVtbl->get_Folder(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_SelectedItems(IShellFolderViewDual3* This,FolderItems **ppid) {
    return This->lpVtbl->SelectedItems(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_get_FocusedItem(IShellFolderViewDual3* This,FolderItem **ppid) {
    return This->lpVtbl->get_FocusedItem(This,ppid);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_SelectItem(IShellFolderViewDual3* This,VARIANT *pvfi,int dwFlags) {
    return This->lpVtbl->SelectItem(This,pvfi,dwFlags);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_PopupItemMenu(IShellFolderViewDual3* This,FolderItem *pfi,VARIANT vx,VARIANT vy,BSTR *pbs) {
    return This->lpVtbl->PopupItemMenu(This,pfi,vx,vy,pbs);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_get_Script(IShellFolderViewDual3* This,IDispatch **ppDisp) {
    return This->lpVtbl->get_Script(This,ppDisp);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_get_ViewOptions(IShellFolderViewDual3* This,LONG *plViewOptions) {
    return This->lpVtbl->get_ViewOptions(This,plViewOptions);
}
/*** IShellFolderViewDual2 methods ***/
static FORCEINLINE HRESULT IShellFolderViewDual3_get_CurrentViewMode(IShellFolderViewDual3* This,UINT *pViewMode) {
    return This->lpVtbl->get_CurrentViewMode(This,pViewMode);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_put_CurrentViewMode(IShellFolderViewDual3* This,UINT ViewMode) {
    return This->lpVtbl->put_CurrentViewMode(This,ViewMode);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_SelectItemRelative(IShellFolderViewDual3* This,int iRelative) {
    return This->lpVtbl->SelectItemRelative(This,iRelative);
}
/*** IShellFolderViewDual3 methods ***/
static FORCEINLINE HRESULT IShellFolderViewDual3_get_GroupBy(IShellFolderViewDual3* This,BSTR *pbstrGroupBy) {
    return This->lpVtbl->get_GroupBy(This,pbstrGroupBy);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_put_GroupBy(IShellFolderViewDual3* This,BSTR bstrGroupBy) {
    return This->lpVtbl->put_GroupBy(This,bstrGroupBy);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_get_FolderFlags(IShellFolderViewDual3* This,DWORD *pdwFlags) {
    return This->lpVtbl->get_FolderFlags(This,pdwFlags);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_put_FolderFlags(IShellFolderViewDual3* This,DWORD dwFlags) {
    return This->lpVtbl->put_FolderFlags(This,dwFlags);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_get_SortColumns(IShellFolderViewDual3* This,BSTR *pbstrSortColumns) {
    return This->lpVtbl->get_SortColumns(This,pbstrSortColumns);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_put_SortColumns(IShellFolderViewDual3* This,BSTR bstrSortColumns) {
    return This->lpVtbl->put_SortColumns(This,bstrSortColumns);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_put_IconSize(IShellFolderViewDual3* This,int iIconSize) {
    return This->lpVtbl->put_IconSize(This,iIconSize);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_get_IconSize(IShellFolderViewDual3* This,int *piIconSize) {
    return This->lpVtbl->get_IconSize(This,piIconSize);
}
static FORCEINLINE HRESULT IShellFolderViewDual3_FilterView(IShellFolderViewDual3* This,BSTR bstrFilterText) {
    return This->lpVtbl->FilterView(This,bstrFilterText);
}
#endif
#endif

#endif


#endif  /* __IShellFolderViewDual3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ShellFolderView coclass
 */

DEFINE_GUID(CLSID_ShellFolderView, 0x62112aa1, 0xebe4, 0x11cf, 0xa5,0xfb, 0x00,0x20,0xaf,0xe7,0x29,0x2d);

#ifdef __cplusplus
class DECLSPEC_UUID("62112aa1-ebe4-11cf-a5fb-0020afe7292d") ShellFolderView;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ShellFolderView, 0x62112aa1, 0xebe4, 0x11cf, 0xa5,0xfb, 0x00,0x20,0xaf,0xe7,0x29,0x2d)
#endif
#endif

typedef enum ShellFolderViewOptions {
    SFVVO_SHOWALLOBJECTS = 0x1,
    SFVVO_SHOWEXTENSIONS = 0x2,
    SFVVO_SHOWCOMPCOLOR = 0x8,
    SFVVO_SHOWSYSFILES = 0x20,
    SFVVO_WIN95CLASSIC = 0x40,
    SFVVO_DOUBLECLICKINWEBVIEW = 0x80,
    SFVVO_DESKTOPHTML = 0x200
} ShellFolderViewOptions;
/*****************************************************************************
 * IShellDispatch interface
 */
#ifndef __IShellDispatch_INTERFACE_DEFINED__
#define __IShellDispatch_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellDispatch, 0xd8f015c0, 0xc278, 0x11ce, 0xa4,0x9e, 0x44,0x45,0x53,0x54,0x00,0x00);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d8f015c0-c278-11ce-a49e-444553540000")
IShellDispatch : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE get_Application(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Parent(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE NameSpace(
        VARIANT vDir,
        Folder **ppsdf) = 0;

    virtual HRESULT STDMETHODCALLTYPE BrowseForFolder(
        LONG Hwnd,
        BSTR Title,
        LONG Options,
        VARIANT RootFolder,
        Folder **ppsdf) = 0;

    virtual HRESULT STDMETHODCALLTYPE Windows(
        IDispatch **ppid) = 0;

    virtual HRESULT STDMETHODCALLTYPE Open(
        VARIANT vDir) = 0;

    virtual HRESULT STDMETHODCALLTYPE Explore(
        VARIANT vDir) = 0;

    virtual HRESULT STDMETHODCALLTYPE MinimizeAll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE UndoMinimizeALL(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE FileRun(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE CascadeWindows(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE TileVertically(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE TileHorizontally(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ShutdownWindows(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Suspend(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE EjectPC(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTime(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE TrayProperties(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Help(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindFiles(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindComputer(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE RefreshMenu(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ControlPanelItem(
        BSTR bstrDir) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellDispatch, 0xd8f015c0, 0xc278, 0x11ce, 0xa4,0x9e, 0x44,0x45,0x53,0x54,0x00,0x00)
#endif
#else
typedef struct IShellDispatchVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellDispatch *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellDispatch *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellDispatch *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IShellDispatch *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IShellDispatch *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IShellDispatch *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IShellDispatch *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IShellDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Application)(
        IShellDispatch *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        IShellDispatch *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *NameSpace)(
        IShellDispatch *This,
        VARIANT vDir,
        Folder **ppsdf);

    HRESULT (STDMETHODCALLTYPE *BrowseForFolder)(
        IShellDispatch *This,
        LONG Hwnd,
        BSTR Title,
        LONG Options,
        VARIANT RootFolder,
        Folder **ppsdf);

    HRESULT (STDMETHODCALLTYPE *Windows)(
        IShellDispatch *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *Open)(
        IShellDispatch *This,
        VARIANT vDir);

    HRESULT (STDMETHODCALLTYPE *Explore)(
        IShellDispatch *This,
        VARIANT vDir);

    HRESULT (STDMETHODCALLTYPE *MinimizeAll)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *UndoMinimizeALL)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *FileRun)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *CascadeWindows)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *TileVertically)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *TileHorizontally)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *ShutdownWindows)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *Suspend)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *EjectPC)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *SetTime)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *TrayProperties)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *Help)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *FindFiles)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *FindComputer)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *RefreshMenu)(
        IShellDispatch *This);

    HRESULT (STDMETHODCALLTYPE *ControlPanelItem)(
        IShellDispatch *This,
        BSTR bstrDir);

    END_INTERFACE
} IShellDispatchVtbl;

interface IShellDispatch {
    CONST_VTBL IShellDispatchVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellDispatch_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellDispatch_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellDispatch_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IShellDispatch_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IShellDispatch_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IShellDispatch_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IShellDispatch_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IShellDispatch methods ***/
#define IShellDispatch_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define IShellDispatch_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define IShellDispatch_NameSpace(This,vDir,ppsdf) (This)->lpVtbl->NameSpace(This,vDir,ppsdf)
#define IShellDispatch_BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf) (This)->lpVtbl->BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf)
#define IShellDispatch_Windows(This,ppid) (This)->lpVtbl->Windows(This,ppid)
#define IShellDispatch_Open(This,vDir) (This)->lpVtbl->Open(This,vDir)
#define IShellDispatch_Explore(This,vDir) (This)->lpVtbl->Explore(This,vDir)
#define IShellDispatch_MinimizeAll(This) (This)->lpVtbl->MinimizeAll(This)
#define IShellDispatch_UndoMinimizeALL(This) (This)->lpVtbl->UndoMinimizeALL(This)
#define IShellDispatch_FileRun(This) (This)->lpVtbl->FileRun(This)
#define IShellDispatch_CascadeWindows(This) (This)->lpVtbl->CascadeWindows(This)
#define IShellDispatch_TileVertically(This) (This)->lpVtbl->TileVertically(This)
#define IShellDispatch_TileHorizontally(This) (This)->lpVtbl->TileHorizontally(This)
#define IShellDispatch_ShutdownWindows(This) (This)->lpVtbl->ShutdownWindows(This)
#define IShellDispatch_Suspend(This) (This)->lpVtbl->Suspend(This)
#define IShellDispatch_EjectPC(This) (This)->lpVtbl->EjectPC(This)
#define IShellDispatch_SetTime(This) (This)->lpVtbl->SetTime(This)
#define IShellDispatch_TrayProperties(This) (This)->lpVtbl->TrayProperties(This)
#define IShellDispatch_Help(This) (This)->lpVtbl->Help(This)
#define IShellDispatch_FindFiles(This) (This)->lpVtbl->FindFiles(This)
#define IShellDispatch_FindComputer(This) (This)->lpVtbl->FindComputer(This)
#define IShellDispatch_RefreshMenu(This) (This)->lpVtbl->RefreshMenu(This)
#define IShellDispatch_ControlPanelItem(This,bstrDir) (This)->lpVtbl->ControlPanelItem(This,bstrDir)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellDispatch_QueryInterface(IShellDispatch* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellDispatch_AddRef(IShellDispatch* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellDispatch_Release(IShellDispatch* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IShellDispatch_GetTypeInfoCount(IShellDispatch* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IShellDispatch_GetTypeInfo(IShellDispatch* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IShellDispatch_GetIDsOfNames(IShellDispatch* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IShellDispatch_Invoke(IShellDispatch* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IShellDispatch methods ***/
static FORCEINLINE HRESULT IShellDispatch_get_Application(IShellDispatch* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch_get_Parent(IShellDispatch* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch_NameSpace(IShellDispatch* This,VARIANT vDir,Folder **ppsdf) {
    return This->lpVtbl->NameSpace(This,vDir,ppsdf);
}
static FORCEINLINE HRESULT IShellDispatch_BrowseForFolder(IShellDispatch* This,LONG Hwnd,BSTR Title,LONG Options,VARIANT RootFolder,Folder **ppsdf) {
    return This->lpVtbl->BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf);
}
static FORCEINLINE HRESULT IShellDispatch_Windows(IShellDispatch* This,IDispatch **ppid) {
    return This->lpVtbl->Windows(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch_Open(IShellDispatch* This,VARIANT vDir) {
    return This->lpVtbl->Open(This,vDir);
}
static FORCEINLINE HRESULT IShellDispatch_Explore(IShellDispatch* This,VARIANT vDir) {
    return This->lpVtbl->Explore(This,vDir);
}
static FORCEINLINE HRESULT IShellDispatch_MinimizeAll(IShellDispatch* This) {
    return This->lpVtbl->MinimizeAll(This);
}
static FORCEINLINE HRESULT IShellDispatch_UndoMinimizeALL(IShellDispatch* This) {
    return This->lpVtbl->UndoMinimizeALL(This);
}
static FORCEINLINE HRESULT IShellDispatch_FileRun(IShellDispatch* This) {
    return This->lpVtbl->FileRun(This);
}
static FORCEINLINE HRESULT IShellDispatch_CascadeWindows(IShellDispatch* This) {
    return This->lpVtbl->CascadeWindows(This);
}
static FORCEINLINE HRESULT IShellDispatch_TileVertically(IShellDispatch* This) {
    return This->lpVtbl->TileVertically(This);
}
static FORCEINLINE HRESULT IShellDispatch_TileHorizontally(IShellDispatch* This) {
    return This->lpVtbl->TileHorizontally(This);
}
static FORCEINLINE HRESULT IShellDispatch_ShutdownWindows(IShellDispatch* This) {
    return This->lpVtbl->ShutdownWindows(This);
}
static FORCEINLINE HRESULT IShellDispatch_Suspend(IShellDispatch* This) {
    return This->lpVtbl->Suspend(This);
}
static FORCEINLINE HRESULT IShellDispatch_EjectPC(IShellDispatch* This) {
    return This->lpVtbl->EjectPC(This);
}
static FORCEINLINE HRESULT IShellDispatch_SetTime(IShellDispatch* This) {
    return This->lpVtbl->SetTime(This);
}
static FORCEINLINE HRESULT IShellDispatch_TrayProperties(IShellDispatch* This) {
    return This->lpVtbl->TrayProperties(This);
}
static FORCEINLINE HRESULT IShellDispatch_Help(IShellDispatch* This) {
    return This->lpVtbl->Help(This);
}
static FORCEINLINE HRESULT IShellDispatch_FindFiles(IShellDispatch* This) {
    return This->lpVtbl->FindFiles(This);
}
static FORCEINLINE HRESULT IShellDispatch_FindComputer(IShellDispatch* This) {
    return This->lpVtbl->FindComputer(This);
}
static FORCEINLINE HRESULT IShellDispatch_RefreshMenu(IShellDispatch* This) {
    return This->lpVtbl->RefreshMenu(This);
}
static FORCEINLINE HRESULT IShellDispatch_ControlPanelItem(IShellDispatch* This,BSTR bstrDir) {
    return This->lpVtbl->ControlPanelItem(This,bstrDir);
}
#endif
#endif

#endif


#endif  /* __IShellDispatch_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IShellDispatch2 interface
 */
#ifndef __IShellDispatch2_INTERFACE_DEFINED__
#define __IShellDispatch2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellDispatch2, 0xa4c6892c, 0x3ba9, 0x11d2, 0x9d,0xea, 0x00,0xc0,0x4f,0xb1,0x61,0x62);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a4c6892c-3ba9-11d2-9dea-00c04fb16162")
IShellDispatch2 : public IShellDispatch
{
    virtual HRESULT STDMETHODCALLTYPE IsRestricted(
        BSTR Group,
        BSTR Restriction,
        LONG *plRestrictValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE ShellExecute(
        BSTR File,
        VARIANT vArgs,
        VARIANT vDir,
        VARIANT vOperation,
        VARIANT vShow) = 0;

    virtual HRESULT STDMETHODCALLTYPE FindPrinter(
        BSTR name,
        BSTR location,
        BSTR model) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSystemInformation(
        BSTR name,
        VARIANT *pv) = 0;

    virtual HRESULT STDMETHODCALLTYPE ServiceStart(
        BSTR ServiceName,
        VARIANT Persistent,
        VARIANT *pSuccess) = 0;

    virtual HRESULT STDMETHODCALLTYPE ServiceStop(
        BSTR ServiceName,
        VARIANT Persistent,
        VARIANT *pSuccess) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsServiceRunning(
        BSTR ServiceName,
        VARIANT *pRunning) = 0;

    virtual HRESULT STDMETHODCALLTYPE CanStartStopService(
        BSTR ServiceName,
        VARIANT *pCanStartStop) = 0;

    virtual HRESULT STDMETHODCALLTYPE ShowBrowserBar(
        BSTR bstrClsid,
        VARIANT bShow,
        VARIANT *pSuccess) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellDispatch2, 0xa4c6892c, 0x3ba9, 0x11d2, 0x9d,0xea, 0x00,0xc0,0x4f,0xb1,0x61,0x62)
#endif
#else
typedef struct IShellDispatch2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellDispatch2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellDispatch2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellDispatch2 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IShellDispatch2 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IShellDispatch2 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IShellDispatch2 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IShellDispatch2 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IShellDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Application)(
        IShellDispatch2 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        IShellDispatch2 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *NameSpace)(
        IShellDispatch2 *This,
        VARIANT vDir,
        Folder **ppsdf);

    HRESULT (STDMETHODCALLTYPE *BrowseForFolder)(
        IShellDispatch2 *This,
        LONG Hwnd,
        BSTR Title,
        LONG Options,
        VARIANT RootFolder,
        Folder **ppsdf);

    HRESULT (STDMETHODCALLTYPE *Windows)(
        IShellDispatch2 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *Open)(
        IShellDispatch2 *This,
        VARIANT vDir);

    HRESULT (STDMETHODCALLTYPE *Explore)(
        IShellDispatch2 *This,
        VARIANT vDir);

    HRESULT (STDMETHODCALLTYPE *MinimizeAll)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *UndoMinimizeALL)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *FileRun)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *CascadeWindows)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *TileVertically)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *TileHorizontally)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *ShutdownWindows)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *Suspend)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *EjectPC)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *SetTime)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *TrayProperties)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *Help)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *FindFiles)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *FindComputer)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *RefreshMenu)(
        IShellDispatch2 *This);

    HRESULT (STDMETHODCALLTYPE *ControlPanelItem)(
        IShellDispatch2 *This,
        BSTR bstrDir);

    /*** IShellDispatch2 methods ***/
    HRESULT (STDMETHODCALLTYPE *IsRestricted)(
        IShellDispatch2 *This,
        BSTR Group,
        BSTR Restriction,
        LONG *plRestrictValue);

    HRESULT (STDMETHODCALLTYPE *ShellExecute)(
        IShellDispatch2 *This,
        BSTR File,
        VARIANT vArgs,
        VARIANT vDir,
        VARIANT vOperation,
        VARIANT vShow);

    HRESULT (STDMETHODCALLTYPE *FindPrinter)(
        IShellDispatch2 *This,
        BSTR name,
        BSTR location,
        BSTR model);

    HRESULT (STDMETHODCALLTYPE *GetSystemInformation)(
        IShellDispatch2 *This,
        BSTR name,
        VARIANT *pv);

    HRESULT (STDMETHODCALLTYPE *ServiceStart)(
        IShellDispatch2 *This,
        BSTR ServiceName,
        VARIANT Persistent,
        VARIANT *pSuccess);

    HRESULT (STDMETHODCALLTYPE *ServiceStop)(
        IShellDispatch2 *This,
        BSTR ServiceName,
        VARIANT Persistent,
        VARIANT *pSuccess);

    HRESULT (STDMETHODCALLTYPE *IsServiceRunning)(
        IShellDispatch2 *This,
        BSTR ServiceName,
        VARIANT *pRunning);

    HRESULT (STDMETHODCALLTYPE *CanStartStopService)(
        IShellDispatch2 *This,
        BSTR ServiceName,
        VARIANT *pCanStartStop);

    HRESULT (STDMETHODCALLTYPE *ShowBrowserBar)(
        IShellDispatch2 *This,
        BSTR bstrClsid,
        VARIANT bShow,
        VARIANT *pSuccess);

    END_INTERFACE
} IShellDispatch2Vtbl;

interface IShellDispatch2 {
    CONST_VTBL IShellDispatch2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellDispatch2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellDispatch2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellDispatch2_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IShellDispatch2_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IShellDispatch2_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IShellDispatch2_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IShellDispatch2_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IShellDispatch methods ***/
#define IShellDispatch2_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define IShellDispatch2_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define IShellDispatch2_NameSpace(This,vDir,ppsdf) (This)->lpVtbl->NameSpace(This,vDir,ppsdf)
#define IShellDispatch2_BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf) (This)->lpVtbl->BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf)
#define IShellDispatch2_Windows(This,ppid) (This)->lpVtbl->Windows(This,ppid)
#define IShellDispatch2_Open(This,vDir) (This)->lpVtbl->Open(This,vDir)
#define IShellDispatch2_Explore(This,vDir) (This)->lpVtbl->Explore(This,vDir)
#define IShellDispatch2_MinimizeAll(This) (This)->lpVtbl->MinimizeAll(This)
#define IShellDispatch2_UndoMinimizeALL(This) (This)->lpVtbl->UndoMinimizeALL(This)
#define IShellDispatch2_FileRun(This) (This)->lpVtbl->FileRun(This)
#define IShellDispatch2_CascadeWindows(This) (This)->lpVtbl->CascadeWindows(This)
#define IShellDispatch2_TileVertically(This) (This)->lpVtbl->TileVertically(This)
#define IShellDispatch2_TileHorizontally(This) (This)->lpVtbl->TileHorizontally(This)
#define IShellDispatch2_ShutdownWindows(This) (This)->lpVtbl->ShutdownWindows(This)
#define IShellDispatch2_Suspend(This) (This)->lpVtbl->Suspend(This)
#define IShellDispatch2_EjectPC(This) (This)->lpVtbl->EjectPC(This)
#define IShellDispatch2_SetTime(This) (This)->lpVtbl->SetTime(This)
#define IShellDispatch2_TrayProperties(This) (This)->lpVtbl->TrayProperties(This)
#define IShellDispatch2_Help(This) (This)->lpVtbl->Help(This)
#define IShellDispatch2_FindFiles(This) (This)->lpVtbl->FindFiles(This)
#define IShellDispatch2_FindComputer(This) (This)->lpVtbl->FindComputer(This)
#define IShellDispatch2_RefreshMenu(This) (This)->lpVtbl->RefreshMenu(This)
#define IShellDispatch2_ControlPanelItem(This,bstrDir) (This)->lpVtbl->ControlPanelItem(This,bstrDir)
/*** IShellDispatch2 methods ***/
#define IShellDispatch2_IsRestricted(This,Group,Restriction,plRestrictValue) (This)->lpVtbl->IsRestricted(This,Group,Restriction,plRestrictValue)
#define IShellDispatch2_ShellExecute(This,File,vArgs,vDir,vOperation,vShow) (This)->lpVtbl->ShellExecute(This,File,vArgs,vDir,vOperation,vShow)
#define IShellDispatch2_FindPrinter(This,name,location,model) (This)->lpVtbl->FindPrinter(This,name,location,model)
#define IShellDispatch2_GetSystemInformation(This,name,pv) (This)->lpVtbl->GetSystemInformation(This,name,pv)
#define IShellDispatch2_ServiceStart(This,ServiceName,Persistent,pSuccess) (This)->lpVtbl->ServiceStart(This,ServiceName,Persistent,pSuccess)
#define IShellDispatch2_ServiceStop(This,ServiceName,Persistent,pSuccess) (This)->lpVtbl->ServiceStop(This,ServiceName,Persistent,pSuccess)
#define IShellDispatch2_IsServiceRunning(This,ServiceName,pRunning) (This)->lpVtbl->IsServiceRunning(This,ServiceName,pRunning)
#define IShellDispatch2_CanStartStopService(This,ServiceName,pCanStartStop) (This)->lpVtbl->CanStartStopService(This,ServiceName,pCanStartStop)
#define IShellDispatch2_ShowBrowserBar(This,bstrClsid,bShow,pSuccess) (This)->lpVtbl->ShowBrowserBar(This,bstrClsid,bShow,pSuccess)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellDispatch2_QueryInterface(IShellDispatch2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellDispatch2_AddRef(IShellDispatch2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellDispatch2_Release(IShellDispatch2* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IShellDispatch2_GetTypeInfoCount(IShellDispatch2* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IShellDispatch2_GetTypeInfo(IShellDispatch2* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IShellDispatch2_GetIDsOfNames(IShellDispatch2* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IShellDispatch2_Invoke(IShellDispatch2* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IShellDispatch methods ***/
static FORCEINLINE HRESULT IShellDispatch2_get_Application(IShellDispatch2* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch2_get_Parent(IShellDispatch2* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch2_NameSpace(IShellDispatch2* This,VARIANT vDir,Folder **ppsdf) {
    return This->lpVtbl->NameSpace(This,vDir,ppsdf);
}
static FORCEINLINE HRESULT IShellDispatch2_BrowseForFolder(IShellDispatch2* This,LONG Hwnd,BSTR Title,LONG Options,VARIANT RootFolder,Folder **ppsdf) {
    return This->lpVtbl->BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf);
}
static FORCEINLINE HRESULT IShellDispatch2_Windows(IShellDispatch2* This,IDispatch **ppid) {
    return This->lpVtbl->Windows(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch2_Open(IShellDispatch2* This,VARIANT vDir) {
    return This->lpVtbl->Open(This,vDir);
}
static FORCEINLINE HRESULT IShellDispatch2_Explore(IShellDispatch2* This,VARIANT vDir) {
    return This->lpVtbl->Explore(This,vDir);
}
static FORCEINLINE HRESULT IShellDispatch2_MinimizeAll(IShellDispatch2* This) {
    return This->lpVtbl->MinimizeAll(This);
}
static FORCEINLINE HRESULT IShellDispatch2_UndoMinimizeALL(IShellDispatch2* This) {
    return This->lpVtbl->UndoMinimizeALL(This);
}
static FORCEINLINE HRESULT IShellDispatch2_FileRun(IShellDispatch2* This) {
    return This->lpVtbl->FileRun(This);
}
static FORCEINLINE HRESULT IShellDispatch2_CascadeWindows(IShellDispatch2* This) {
    return This->lpVtbl->CascadeWindows(This);
}
static FORCEINLINE HRESULT IShellDispatch2_TileVertically(IShellDispatch2* This) {
    return This->lpVtbl->TileVertically(This);
}
static FORCEINLINE HRESULT IShellDispatch2_TileHorizontally(IShellDispatch2* This) {
    return This->lpVtbl->TileHorizontally(This);
}
static FORCEINLINE HRESULT IShellDispatch2_ShutdownWindows(IShellDispatch2* This) {
    return This->lpVtbl->ShutdownWindows(This);
}
static FORCEINLINE HRESULT IShellDispatch2_Suspend(IShellDispatch2* This) {
    return This->lpVtbl->Suspend(This);
}
static FORCEINLINE HRESULT IShellDispatch2_EjectPC(IShellDispatch2* This) {
    return This->lpVtbl->EjectPC(This);
}
static FORCEINLINE HRESULT IShellDispatch2_SetTime(IShellDispatch2* This) {
    return This->lpVtbl->SetTime(This);
}
static FORCEINLINE HRESULT IShellDispatch2_TrayProperties(IShellDispatch2* This) {
    return This->lpVtbl->TrayProperties(This);
}
static FORCEINLINE HRESULT IShellDispatch2_Help(IShellDispatch2* This) {
    return This->lpVtbl->Help(This);
}
static FORCEINLINE HRESULT IShellDispatch2_FindFiles(IShellDispatch2* This) {
    return This->lpVtbl->FindFiles(This);
}
static FORCEINLINE HRESULT IShellDispatch2_FindComputer(IShellDispatch2* This) {
    return This->lpVtbl->FindComputer(This);
}
static FORCEINLINE HRESULT IShellDispatch2_RefreshMenu(IShellDispatch2* This) {
    return This->lpVtbl->RefreshMenu(This);
}
static FORCEINLINE HRESULT IShellDispatch2_ControlPanelItem(IShellDispatch2* This,BSTR bstrDir) {
    return This->lpVtbl->ControlPanelItem(This,bstrDir);
}
/*** IShellDispatch2 methods ***/
static FORCEINLINE HRESULT IShellDispatch2_IsRestricted(IShellDispatch2* This,BSTR Group,BSTR Restriction,LONG *plRestrictValue) {
    return This->lpVtbl->IsRestricted(This,Group,Restriction,plRestrictValue);
}
static FORCEINLINE HRESULT IShellDispatch2_ShellExecute(IShellDispatch2* This,BSTR File,VARIANT vArgs,VARIANT vDir,VARIANT vOperation,VARIANT vShow) {
    return This->lpVtbl->ShellExecute(This,File,vArgs,vDir,vOperation,vShow);
}
static FORCEINLINE HRESULT IShellDispatch2_FindPrinter(IShellDispatch2* This,BSTR name,BSTR location,BSTR model) {
    return This->lpVtbl->FindPrinter(This,name,location,model);
}
static FORCEINLINE HRESULT IShellDispatch2_GetSystemInformation(IShellDispatch2* This,BSTR name,VARIANT *pv) {
    return This->lpVtbl->GetSystemInformation(This,name,pv);
}
static FORCEINLINE HRESULT IShellDispatch2_ServiceStart(IShellDispatch2* This,BSTR ServiceName,VARIANT Persistent,VARIANT *pSuccess) {
    return This->lpVtbl->ServiceStart(This,ServiceName,Persistent,pSuccess);
}
static FORCEINLINE HRESULT IShellDispatch2_ServiceStop(IShellDispatch2* This,BSTR ServiceName,VARIANT Persistent,VARIANT *pSuccess) {
    return This->lpVtbl->ServiceStop(This,ServiceName,Persistent,pSuccess);
}
static FORCEINLINE HRESULT IShellDispatch2_IsServiceRunning(IShellDispatch2* This,BSTR ServiceName,VARIANT *pRunning) {
    return This->lpVtbl->IsServiceRunning(This,ServiceName,pRunning);
}
static FORCEINLINE HRESULT IShellDispatch2_CanStartStopService(IShellDispatch2* This,BSTR ServiceName,VARIANT *pCanStartStop) {
    return This->lpVtbl->CanStartStopService(This,ServiceName,pCanStartStop);
}
static FORCEINLINE HRESULT IShellDispatch2_ShowBrowserBar(IShellDispatch2* This,BSTR bstrClsid,VARIANT bShow,VARIANT *pSuccess) {
    return This->lpVtbl->ShowBrowserBar(This,bstrClsid,bShow,pSuccess);
}
#endif
#endif

#endif


#endif  /* __IShellDispatch2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IShellDispatch3 interface
 */
#ifndef __IShellDispatch3_INTERFACE_DEFINED__
#define __IShellDispatch3_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellDispatch3, 0x177160ca, 0xbb5a, 0x411c, 0x84,0x1d, 0xbd,0x38,0xfa,0xcd,0xea,0xa0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("177160ca-bb5a-411c-841d-bd38facdeaa0")
IShellDispatch3 : public IShellDispatch2
{
    virtual HRESULT STDMETHODCALLTYPE AddToRecent(
        VARIANT varFile,
        BSTR bstrCategory) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellDispatch3, 0x177160ca, 0xbb5a, 0x411c, 0x84,0x1d, 0xbd,0x38,0xfa,0xcd,0xea,0xa0)
#endif
#else
typedef struct IShellDispatch3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellDispatch3 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellDispatch3 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellDispatch3 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IShellDispatch3 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IShellDispatch3 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IShellDispatch3 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IShellDispatch3 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IShellDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Application)(
        IShellDispatch3 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        IShellDispatch3 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *NameSpace)(
        IShellDispatch3 *This,
        VARIANT vDir,
        Folder **ppsdf);

    HRESULT (STDMETHODCALLTYPE *BrowseForFolder)(
        IShellDispatch3 *This,
        LONG Hwnd,
        BSTR Title,
        LONG Options,
        VARIANT RootFolder,
        Folder **ppsdf);

    HRESULT (STDMETHODCALLTYPE *Windows)(
        IShellDispatch3 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *Open)(
        IShellDispatch3 *This,
        VARIANT vDir);

    HRESULT (STDMETHODCALLTYPE *Explore)(
        IShellDispatch3 *This,
        VARIANT vDir);

    HRESULT (STDMETHODCALLTYPE *MinimizeAll)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *UndoMinimizeALL)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *FileRun)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *CascadeWindows)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *TileVertically)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *TileHorizontally)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *ShutdownWindows)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *Suspend)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *EjectPC)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *SetTime)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *TrayProperties)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *Help)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *FindFiles)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *FindComputer)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *RefreshMenu)(
        IShellDispatch3 *This);

    HRESULT (STDMETHODCALLTYPE *ControlPanelItem)(
        IShellDispatch3 *This,
        BSTR bstrDir);

    /*** IShellDispatch2 methods ***/
    HRESULT (STDMETHODCALLTYPE *IsRestricted)(
        IShellDispatch3 *This,
        BSTR Group,
        BSTR Restriction,
        LONG *plRestrictValue);

    HRESULT (STDMETHODCALLTYPE *ShellExecute)(
        IShellDispatch3 *This,
        BSTR File,
        VARIANT vArgs,
        VARIANT vDir,
        VARIANT vOperation,
        VARIANT vShow);

    HRESULT (STDMETHODCALLTYPE *FindPrinter)(
        IShellDispatch3 *This,
        BSTR name,
        BSTR location,
        BSTR model);

    HRESULT (STDMETHODCALLTYPE *GetSystemInformation)(
        IShellDispatch3 *This,
        BSTR name,
        VARIANT *pv);

    HRESULT (STDMETHODCALLTYPE *ServiceStart)(
        IShellDispatch3 *This,
        BSTR ServiceName,
        VARIANT Persistent,
        VARIANT *pSuccess);

    HRESULT (STDMETHODCALLTYPE *ServiceStop)(
        IShellDispatch3 *This,
        BSTR ServiceName,
        VARIANT Persistent,
        VARIANT *pSuccess);

    HRESULT (STDMETHODCALLTYPE *IsServiceRunning)(
        IShellDispatch3 *This,
        BSTR ServiceName,
        VARIANT *pRunning);

    HRESULT (STDMETHODCALLTYPE *CanStartStopService)(
        IShellDispatch3 *This,
        BSTR ServiceName,
        VARIANT *pCanStartStop);

    HRESULT (STDMETHODCALLTYPE *ShowBrowserBar)(
        IShellDispatch3 *This,
        BSTR bstrClsid,
        VARIANT bShow,
        VARIANT *pSuccess);

    /*** IShellDispatch3 methods ***/
    HRESULT (STDMETHODCALLTYPE *AddToRecent)(
        IShellDispatch3 *This,
        VARIANT varFile,
        BSTR bstrCategory);

    END_INTERFACE
} IShellDispatch3Vtbl;

interface IShellDispatch3 {
    CONST_VTBL IShellDispatch3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellDispatch3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellDispatch3_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellDispatch3_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IShellDispatch3_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IShellDispatch3_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IShellDispatch3_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IShellDispatch3_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IShellDispatch methods ***/
#define IShellDispatch3_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define IShellDispatch3_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define IShellDispatch3_NameSpace(This,vDir,ppsdf) (This)->lpVtbl->NameSpace(This,vDir,ppsdf)
#define IShellDispatch3_BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf) (This)->lpVtbl->BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf)
#define IShellDispatch3_Windows(This,ppid) (This)->lpVtbl->Windows(This,ppid)
#define IShellDispatch3_Open(This,vDir) (This)->lpVtbl->Open(This,vDir)
#define IShellDispatch3_Explore(This,vDir) (This)->lpVtbl->Explore(This,vDir)
#define IShellDispatch3_MinimizeAll(This) (This)->lpVtbl->MinimizeAll(This)
#define IShellDispatch3_UndoMinimizeALL(This) (This)->lpVtbl->UndoMinimizeALL(This)
#define IShellDispatch3_FileRun(This) (This)->lpVtbl->FileRun(This)
#define IShellDispatch3_CascadeWindows(This) (This)->lpVtbl->CascadeWindows(This)
#define IShellDispatch3_TileVertically(This) (This)->lpVtbl->TileVertically(This)
#define IShellDispatch3_TileHorizontally(This) (This)->lpVtbl->TileHorizontally(This)
#define IShellDispatch3_ShutdownWindows(This) (This)->lpVtbl->ShutdownWindows(This)
#define IShellDispatch3_Suspend(This) (This)->lpVtbl->Suspend(This)
#define IShellDispatch3_EjectPC(This) (This)->lpVtbl->EjectPC(This)
#define IShellDispatch3_SetTime(This) (This)->lpVtbl->SetTime(This)
#define IShellDispatch3_TrayProperties(This) (This)->lpVtbl->TrayProperties(This)
#define IShellDispatch3_Help(This) (This)->lpVtbl->Help(This)
#define IShellDispatch3_FindFiles(This) (This)->lpVtbl->FindFiles(This)
#define IShellDispatch3_FindComputer(This) (This)->lpVtbl->FindComputer(This)
#define IShellDispatch3_RefreshMenu(This) (This)->lpVtbl->RefreshMenu(This)
#define IShellDispatch3_ControlPanelItem(This,bstrDir) (This)->lpVtbl->ControlPanelItem(This,bstrDir)
/*** IShellDispatch2 methods ***/
#define IShellDispatch3_IsRestricted(This,Group,Restriction,plRestrictValue) (This)->lpVtbl->IsRestricted(This,Group,Restriction,plRestrictValue)
#define IShellDispatch3_ShellExecute(This,File,vArgs,vDir,vOperation,vShow) (This)->lpVtbl->ShellExecute(This,File,vArgs,vDir,vOperation,vShow)
#define IShellDispatch3_FindPrinter(This,name,location,model) (This)->lpVtbl->FindPrinter(This,name,location,model)
#define IShellDispatch3_GetSystemInformation(This,name,pv) (This)->lpVtbl->GetSystemInformation(This,name,pv)
#define IShellDispatch3_ServiceStart(This,ServiceName,Persistent,pSuccess) (This)->lpVtbl->ServiceStart(This,ServiceName,Persistent,pSuccess)
#define IShellDispatch3_ServiceStop(This,ServiceName,Persistent,pSuccess) (This)->lpVtbl->ServiceStop(This,ServiceName,Persistent,pSuccess)
#define IShellDispatch3_IsServiceRunning(This,ServiceName,pRunning) (This)->lpVtbl->IsServiceRunning(This,ServiceName,pRunning)
#define IShellDispatch3_CanStartStopService(This,ServiceName,pCanStartStop) (This)->lpVtbl->CanStartStopService(This,ServiceName,pCanStartStop)
#define IShellDispatch3_ShowBrowserBar(This,bstrClsid,bShow,pSuccess) (This)->lpVtbl->ShowBrowserBar(This,bstrClsid,bShow,pSuccess)
/*** IShellDispatch3 methods ***/
#define IShellDispatch3_AddToRecent(This,varFile,bstrCategory) (This)->lpVtbl->AddToRecent(This,varFile,bstrCategory)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellDispatch3_QueryInterface(IShellDispatch3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellDispatch3_AddRef(IShellDispatch3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellDispatch3_Release(IShellDispatch3* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IShellDispatch3_GetTypeInfoCount(IShellDispatch3* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IShellDispatch3_GetTypeInfo(IShellDispatch3* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IShellDispatch3_GetIDsOfNames(IShellDispatch3* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IShellDispatch3_Invoke(IShellDispatch3* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IShellDispatch methods ***/
static FORCEINLINE HRESULT IShellDispatch3_get_Application(IShellDispatch3* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch3_get_Parent(IShellDispatch3* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch3_NameSpace(IShellDispatch3* This,VARIANT vDir,Folder **ppsdf) {
    return This->lpVtbl->NameSpace(This,vDir,ppsdf);
}
static FORCEINLINE HRESULT IShellDispatch3_BrowseForFolder(IShellDispatch3* This,LONG Hwnd,BSTR Title,LONG Options,VARIANT RootFolder,Folder **ppsdf) {
    return This->lpVtbl->BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf);
}
static FORCEINLINE HRESULT IShellDispatch3_Windows(IShellDispatch3* This,IDispatch **ppid) {
    return This->lpVtbl->Windows(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch3_Open(IShellDispatch3* This,VARIANT vDir) {
    return This->lpVtbl->Open(This,vDir);
}
static FORCEINLINE HRESULT IShellDispatch3_Explore(IShellDispatch3* This,VARIANT vDir) {
    return This->lpVtbl->Explore(This,vDir);
}
static FORCEINLINE HRESULT IShellDispatch3_MinimizeAll(IShellDispatch3* This) {
    return This->lpVtbl->MinimizeAll(This);
}
static FORCEINLINE HRESULT IShellDispatch3_UndoMinimizeALL(IShellDispatch3* This) {
    return This->lpVtbl->UndoMinimizeALL(This);
}
static FORCEINLINE HRESULT IShellDispatch3_FileRun(IShellDispatch3* This) {
    return This->lpVtbl->FileRun(This);
}
static FORCEINLINE HRESULT IShellDispatch3_CascadeWindows(IShellDispatch3* This) {
    return This->lpVtbl->CascadeWindows(This);
}
static FORCEINLINE HRESULT IShellDispatch3_TileVertically(IShellDispatch3* This) {
    return This->lpVtbl->TileVertically(This);
}
static FORCEINLINE HRESULT IShellDispatch3_TileHorizontally(IShellDispatch3* This) {
    return This->lpVtbl->TileHorizontally(This);
}
static FORCEINLINE HRESULT IShellDispatch3_ShutdownWindows(IShellDispatch3* This) {
    return This->lpVtbl->ShutdownWindows(This);
}
static FORCEINLINE HRESULT IShellDispatch3_Suspend(IShellDispatch3* This) {
    return This->lpVtbl->Suspend(This);
}
static FORCEINLINE HRESULT IShellDispatch3_EjectPC(IShellDispatch3* This) {
    return This->lpVtbl->EjectPC(This);
}
static FORCEINLINE HRESULT IShellDispatch3_SetTime(IShellDispatch3* This) {
    return This->lpVtbl->SetTime(This);
}
static FORCEINLINE HRESULT IShellDispatch3_TrayProperties(IShellDispatch3* This) {
    return This->lpVtbl->TrayProperties(This);
}
static FORCEINLINE HRESULT IShellDispatch3_Help(IShellDispatch3* This) {
    return This->lpVtbl->Help(This);
}
static FORCEINLINE HRESULT IShellDispatch3_FindFiles(IShellDispatch3* This) {
    return This->lpVtbl->FindFiles(This);
}
static FORCEINLINE HRESULT IShellDispatch3_FindComputer(IShellDispatch3* This) {
    return This->lpVtbl->FindComputer(This);
}
static FORCEINLINE HRESULT IShellDispatch3_RefreshMenu(IShellDispatch3* This) {
    return This->lpVtbl->RefreshMenu(This);
}
static FORCEINLINE HRESULT IShellDispatch3_ControlPanelItem(IShellDispatch3* This,BSTR bstrDir) {
    return This->lpVtbl->ControlPanelItem(This,bstrDir);
}
/*** IShellDispatch2 methods ***/
static FORCEINLINE HRESULT IShellDispatch3_IsRestricted(IShellDispatch3* This,BSTR Group,BSTR Restriction,LONG *plRestrictValue) {
    return This->lpVtbl->IsRestricted(This,Group,Restriction,plRestrictValue);
}
static FORCEINLINE HRESULT IShellDispatch3_ShellExecute(IShellDispatch3* This,BSTR File,VARIANT vArgs,VARIANT vDir,VARIANT vOperation,VARIANT vShow) {
    return This->lpVtbl->ShellExecute(This,File,vArgs,vDir,vOperation,vShow);
}
static FORCEINLINE HRESULT IShellDispatch3_FindPrinter(IShellDispatch3* This,BSTR name,BSTR location,BSTR model) {
    return This->lpVtbl->FindPrinter(This,name,location,model);
}
static FORCEINLINE HRESULT IShellDispatch3_GetSystemInformation(IShellDispatch3* This,BSTR name,VARIANT *pv) {
    return This->lpVtbl->GetSystemInformation(This,name,pv);
}
static FORCEINLINE HRESULT IShellDispatch3_ServiceStart(IShellDispatch3* This,BSTR ServiceName,VARIANT Persistent,VARIANT *pSuccess) {
    return This->lpVtbl->ServiceStart(This,ServiceName,Persistent,pSuccess);
}
static FORCEINLINE HRESULT IShellDispatch3_ServiceStop(IShellDispatch3* This,BSTR ServiceName,VARIANT Persistent,VARIANT *pSuccess) {
    return This->lpVtbl->ServiceStop(This,ServiceName,Persistent,pSuccess);
}
static FORCEINLINE HRESULT IShellDispatch3_IsServiceRunning(IShellDispatch3* This,BSTR ServiceName,VARIANT *pRunning) {
    return This->lpVtbl->IsServiceRunning(This,ServiceName,pRunning);
}
static FORCEINLINE HRESULT IShellDispatch3_CanStartStopService(IShellDispatch3* This,BSTR ServiceName,VARIANT *pCanStartStop) {
    return This->lpVtbl->CanStartStopService(This,ServiceName,pCanStartStop);
}
static FORCEINLINE HRESULT IShellDispatch3_ShowBrowserBar(IShellDispatch3* This,BSTR bstrClsid,VARIANT bShow,VARIANT *pSuccess) {
    return This->lpVtbl->ShowBrowserBar(This,bstrClsid,bShow,pSuccess);
}
/*** IShellDispatch3 methods ***/
static FORCEINLINE HRESULT IShellDispatch3_AddToRecent(IShellDispatch3* This,VARIANT varFile,BSTR bstrCategory) {
    return This->lpVtbl->AddToRecent(This,varFile,bstrCategory);
}
#endif
#endif

#endif


#endif  /* __IShellDispatch3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IShellDispatch4 interface
 */
#ifndef __IShellDispatch4_INTERFACE_DEFINED__
#define __IShellDispatch4_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellDispatch4, 0xefd84b2d, 0x4bcf, 0x4298, 0xbe,0x25, 0xeb,0x54,0x2a,0x59,0xfb,0xda);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("efd84b2d-4bcf-4298-be25-eb542a59fbda")
IShellDispatch4 : public IShellDispatch3
{
    virtual HRESULT STDMETHODCALLTYPE WindowsSecurity(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ToggleDesktop(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExplorerPolicy(
        BSTR bstrPolicyName,
        VARIANT *pValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSetting(
        LONG lSetting,
        VARIANT_BOOL *pResult) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellDispatch4, 0xefd84b2d, 0x4bcf, 0x4298, 0xbe,0x25, 0xeb,0x54,0x2a,0x59,0xfb,0xda)
#endif
#else
typedef struct IShellDispatch4Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellDispatch4 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellDispatch4 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellDispatch4 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IShellDispatch4 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IShellDispatch4 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IShellDispatch4 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IShellDispatch4 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IShellDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Application)(
        IShellDispatch4 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        IShellDispatch4 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *NameSpace)(
        IShellDispatch4 *This,
        VARIANT vDir,
        Folder **ppsdf);

    HRESULT (STDMETHODCALLTYPE *BrowseForFolder)(
        IShellDispatch4 *This,
        LONG Hwnd,
        BSTR Title,
        LONG Options,
        VARIANT RootFolder,
        Folder **ppsdf);

    HRESULT (STDMETHODCALLTYPE *Windows)(
        IShellDispatch4 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *Open)(
        IShellDispatch4 *This,
        VARIANT vDir);

    HRESULT (STDMETHODCALLTYPE *Explore)(
        IShellDispatch4 *This,
        VARIANT vDir);

    HRESULT (STDMETHODCALLTYPE *MinimizeAll)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *UndoMinimizeALL)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *FileRun)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *CascadeWindows)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *TileVertically)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *TileHorizontally)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *ShutdownWindows)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *Suspend)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *EjectPC)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *SetTime)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *TrayProperties)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *Help)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *FindFiles)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *FindComputer)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *RefreshMenu)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *ControlPanelItem)(
        IShellDispatch4 *This,
        BSTR bstrDir);

    /*** IShellDispatch2 methods ***/
    HRESULT (STDMETHODCALLTYPE *IsRestricted)(
        IShellDispatch4 *This,
        BSTR Group,
        BSTR Restriction,
        LONG *plRestrictValue);

    HRESULT (STDMETHODCALLTYPE *ShellExecute)(
        IShellDispatch4 *This,
        BSTR File,
        VARIANT vArgs,
        VARIANT vDir,
        VARIANT vOperation,
        VARIANT vShow);

    HRESULT (STDMETHODCALLTYPE *FindPrinter)(
        IShellDispatch4 *This,
        BSTR name,
        BSTR location,
        BSTR model);

    HRESULT (STDMETHODCALLTYPE *GetSystemInformation)(
        IShellDispatch4 *This,
        BSTR name,
        VARIANT *pv);

    HRESULT (STDMETHODCALLTYPE *ServiceStart)(
        IShellDispatch4 *This,
        BSTR ServiceName,
        VARIANT Persistent,
        VARIANT *pSuccess);

    HRESULT (STDMETHODCALLTYPE *ServiceStop)(
        IShellDispatch4 *This,
        BSTR ServiceName,
        VARIANT Persistent,
        VARIANT *pSuccess);

    HRESULT (STDMETHODCALLTYPE *IsServiceRunning)(
        IShellDispatch4 *This,
        BSTR ServiceName,
        VARIANT *pRunning);

    HRESULT (STDMETHODCALLTYPE *CanStartStopService)(
        IShellDispatch4 *This,
        BSTR ServiceName,
        VARIANT *pCanStartStop);

    HRESULT (STDMETHODCALLTYPE *ShowBrowserBar)(
        IShellDispatch4 *This,
        BSTR bstrClsid,
        VARIANT bShow,
        VARIANT *pSuccess);

    /*** IShellDispatch3 methods ***/
    HRESULT (STDMETHODCALLTYPE *AddToRecent)(
        IShellDispatch4 *This,
        VARIANT varFile,
        BSTR bstrCategory);

    /*** IShellDispatch4 methods ***/
    HRESULT (STDMETHODCALLTYPE *WindowsSecurity)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *ToggleDesktop)(
        IShellDispatch4 *This);

    HRESULT (STDMETHODCALLTYPE *ExplorerPolicy)(
        IShellDispatch4 *This,
        BSTR bstrPolicyName,
        VARIANT *pValue);

    HRESULT (STDMETHODCALLTYPE *GetSetting)(
        IShellDispatch4 *This,
        LONG lSetting,
        VARIANT_BOOL *pResult);

    END_INTERFACE
} IShellDispatch4Vtbl;

interface IShellDispatch4 {
    CONST_VTBL IShellDispatch4Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellDispatch4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellDispatch4_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellDispatch4_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IShellDispatch4_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IShellDispatch4_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IShellDispatch4_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IShellDispatch4_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IShellDispatch methods ***/
#define IShellDispatch4_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define IShellDispatch4_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define IShellDispatch4_NameSpace(This,vDir,ppsdf) (This)->lpVtbl->NameSpace(This,vDir,ppsdf)
#define IShellDispatch4_BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf) (This)->lpVtbl->BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf)
#define IShellDispatch4_Windows(This,ppid) (This)->lpVtbl->Windows(This,ppid)
#define IShellDispatch4_Open(This,vDir) (This)->lpVtbl->Open(This,vDir)
#define IShellDispatch4_Explore(This,vDir) (This)->lpVtbl->Explore(This,vDir)
#define IShellDispatch4_MinimizeAll(This) (This)->lpVtbl->MinimizeAll(This)
#define IShellDispatch4_UndoMinimizeALL(This) (This)->lpVtbl->UndoMinimizeALL(This)
#define IShellDispatch4_FileRun(This) (This)->lpVtbl->FileRun(This)
#define IShellDispatch4_CascadeWindows(This) (This)->lpVtbl->CascadeWindows(This)
#define IShellDispatch4_TileVertically(This) (This)->lpVtbl->TileVertically(This)
#define IShellDispatch4_TileHorizontally(This) (This)->lpVtbl->TileHorizontally(This)
#define IShellDispatch4_ShutdownWindows(This) (This)->lpVtbl->ShutdownWindows(This)
#define IShellDispatch4_Suspend(This) (This)->lpVtbl->Suspend(This)
#define IShellDispatch4_EjectPC(This) (This)->lpVtbl->EjectPC(This)
#define IShellDispatch4_SetTime(This) (This)->lpVtbl->SetTime(This)
#define IShellDispatch4_TrayProperties(This) (This)->lpVtbl->TrayProperties(This)
#define IShellDispatch4_Help(This) (This)->lpVtbl->Help(This)
#define IShellDispatch4_FindFiles(This) (This)->lpVtbl->FindFiles(This)
#define IShellDispatch4_FindComputer(This) (This)->lpVtbl->FindComputer(This)
#define IShellDispatch4_RefreshMenu(This) (This)->lpVtbl->RefreshMenu(This)
#define IShellDispatch4_ControlPanelItem(This,bstrDir) (This)->lpVtbl->ControlPanelItem(This,bstrDir)
/*** IShellDispatch2 methods ***/
#define IShellDispatch4_IsRestricted(This,Group,Restriction,plRestrictValue) (This)->lpVtbl->IsRestricted(This,Group,Restriction,plRestrictValue)
#define IShellDispatch4_ShellExecute(This,File,vArgs,vDir,vOperation,vShow) (This)->lpVtbl->ShellExecute(This,File,vArgs,vDir,vOperation,vShow)
#define IShellDispatch4_FindPrinter(This,name,location,model) (This)->lpVtbl->FindPrinter(This,name,location,model)
#define IShellDispatch4_GetSystemInformation(This,name,pv) (This)->lpVtbl->GetSystemInformation(This,name,pv)
#define IShellDispatch4_ServiceStart(This,ServiceName,Persistent,pSuccess) (This)->lpVtbl->ServiceStart(This,ServiceName,Persistent,pSuccess)
#define IShellDispatch4_ServiceStop(This,ServiceName,Persistent,pSuccess) (This)->lpVtbl->ServiceStop(This,ServiceName,Persistent,pSuccess)
#define IShellDispatch4_IsServiceRunning(This,ServiceName,pRunning) (This)->lpVtbl->IsServiceRunning(This,ServiceName,pRunning)
#define IShellDispatch4_CanStartStopService(This,ServiceName,pCanStartStop) (This)->lpVtbl->CanStartStopService(This,ServiceName,pCanStartStop)
#define IShellDispatch4_ShowBrowserBar(This,bstrClsid,bShow,pSuccess) (This)->lpVtbl->ShowBrowserBar(This,bstrClsid,bShow,pSuccess)
/*** IShellDispatch3 methods ***/
#define IShellDispatch4_AddToRecent(This,varFile,bstrCategory) (This)->lpVtbl->AddToRecent(This,varFile,bstrCategory)
/*** IShellDispatch4 methods ***/
#define IShellDispatch4_WindowsSecurity(This) (This)->lpVtbl->WindowsSecurity(This)
#define IShellDispatch4_ToggleDesktop(This) (This)->lpVtbl->ToggleDesktop(This)
#define IShellDispatch4_ExplorerPolicy(This,bstrPolicyName,pValue) (This)->lpVtbl->ExplorerPolicy(This,bstrPolicyName,pValue)
#define IShellDispatch4_GetSetting(This,lSetting,pResult) (This)->lpVtbl->GetSetting(This,lSetting,pResult)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellDispatch4_QueryInterface(IShellDispatch4* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellDispatch4_AddRef(IShellDispatch4* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellDispatch4_Release(IShellDispatch4* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IShellDispatch4_GetTypeInfoCount(IShellDispatch4* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IShellDispatch4_GetTypeInfo(IShellDispatch4* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IShellDispatch4_GetIDsOfNames(IShellDispatch4* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IShellDispatch4_Invoke(IShellDispatch4* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IShellDispatch methods ***/
static FORCEINLINE HRESULT IShellDispatch4_get_Application(IShellDispatch4* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch4_get_Parent(IShellDispatch4* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch4_NameSpace(IShellDispatch4* This,VARIANT vDir,Folder **ppsdf) {
    return This->lpVtbl->NameSpace(This,vDir,ppsdf);
}
static FORCEINLINE HRESULT IShellDispatch4_BrowseForFolder(IShellDispatch4* This,LONG Hwnd,BSTR Title,LONG Options,VARIANT RootFolder,Folder **ppsdf) {
    return This->lpVtbl->BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf);
}
static FORCEINLINE HRESULT IShellDispatch4_Windows(IShellDispatch4* This,IDispatch **ppid) {
    return This->lpVtbl->Windows(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch4_Open(IShellDispatch4* This,VARIANT vDir) {
    return This->lpVtbl->Open(This,vDir);
}
static FORCEINLINE HRESULT IShellDispatch4_Explore(IShellDispatch4* This,VARIANT vDir) {
    return This->lpVtbl->Explore(This,vDir);
}
static FORCEINLINE HRESULT IShellDispatch4_MinimizeAll(IShellDispatch4* This) {
    return This->lpVtbl->MinimizeAll(This);
}
static FORCEINLINE HRESULT IShellDispatch4_UndoMinimizeALL(IShellDispatch4* This) {
    return This->lpVtbl->UndoMinimizeALL(This);
}
static FORCEINLINE HRESULT IShellDispatch4_FileRun(IShellDispatch4* This) {
    return This->lpVtbl->FileRun(This);
}
static FORCEINLINE HRESULT IShellDispatch4_CascadeWindows(IShellDispatch4* This) {
    return This->lpVtbl->CascadeWindows(This);
}
static FORCEINLINE HRESULT IShellDispatch4_TileVertically(IShellDispatch4* This) {
    return This->lpVtbl->TileVertically(This);
}
static FORCEINLINE HRESULT IShellDispatch4_TileHorizontally(IShellDispatch4* This) {
    return This->lpVtbl->TileHorizontally(This);
}
static FORCEINLINE HRESULT IShellDispatch4_ShutdownWindows(IShellDispatch4* This) {
    return This->lpVtbl->ShutdownWindows(This);
}
static FORCEINLINE HRESULT IShellDispatch4_Suspend(IShellDispatch4* This) {
    return This->lpVtbl->Suspend(This);
}
static FORCEINLINE HRESULT IShellDispatch4_EjectPC(IShellDispatch4* This) {
    return This->lpVtbl->EjectPC(This);
}
static FORCEINLINE HRESULT IShellDispatch4_SetTime(IShellDispatch4* This) {
    return This->lpVtbl->SetTime(This);
}
static FORCEINLINE HRESULT IShellDispatch4_TrayProperties(IShellDispatch4* This) {
    return This->lpVtbl->TrayProperties(This);
}
static FORCEINLINE HRESULT IShellDispatch4_Help(IShellDispatch4* This) {
    return This->lpVtbl->Help(This);
}
static FORCEINLINE HRESULT IShellDispatch4_FindFiles(IShellDispatch4* This) {
    return This->lpVtbl->FindFiles(This);
}
static FORCEINLINE HRESULT IShellDispatch4_FindComputer(IShellDispatch4* This) {
    return This->lpVtbl->FindComputer(This);
}
static FORCEINLINE HRESULT IShellDispatch4_RefreshMenu(IShellDispatch4* This) {
    return This->lpVtbl->RefreshMenu(This);
}
static FORCEINLINE HRESULT IShellDispatch4_ControlPanelItem(IShellDispatch4* This,BSTR bstrDir) {
    return This->lpVtbl->ControlPanelItem(This,bstrDir);
}
/*** IShellDispatch2 methods ***/
static FORCEINLINE HRESULT IShellDispatch4_IsRestricted(IShellDispatch4* This,BSTR Group,BSTR Restriction,LONG *plRestrictValue) {
    return This->lpVtbl->IsRestricted(This,Group,Restriction,plRestrictValue);
}
static FORCEINLINE HRESULT IShellDispatch4_ShellExecute(IShellDispatch4* This,BSTR File,VARIANT vArgs,VARIANT vDir,VARIANT vOperation,VARIANT vShow) {
    return This->lpVtbl->ShellExecute(This,File,vArgs,vDir,vOperation,vShow);
}
static FORCEINLINE HRESULT IShellDispatch4_FindPrinter(IShellDispatch4* This,BSTR name,BSTR location,BSTR model) {
    return This->lpVtbl->FindPrinter(This,name,location,model);
}
static FORCEINLINE HRESULT IShellDispatch4_GetSystemInformation(IShellDispatch4* This,BSTR name,VARIANT *pv) {
    return This->lpVtbl->GetSystemInformation(This,name,pv);
}
static FORCEINLINE HRESULT IShellDispatch4_ServiceStart(IShellDispatch4* This,BSTR ServiceName,VARIANT Persistent,VARIANT *pSuccess) {
    return This->lpVtbl->ServiceStart(This,ServiceName,Persistent,pSuccess);
}
static FORCEINLINE HRESULT IShellDispatch4_ServiceStop(IShellDispatch4* This,BSTR ServiceName,VARIANT Persistent,VARIANT *pSuccess) {
    return This->lpVtbl->ServiceStop(This,ServiceName,Persistent,pSuccess);
}
static FORCEINLINE HRESULT IShellDispatch4_IsServiceRunning(IShellDispatch4* This,BSTR ServiceName,VARIANT *pRunning) {
    return This->lpVtbl->IsServiceRunning(This,ServiceName,pRunning);
}
static FORCEINLINE HRESULT IShellDispatch4_CanStartStopService(IShellDispatch4* This,BSTR ServiceName,VARIANT *pCanStartStop) {
    return This->lpVtbl->CanStartStopService(This,ServiceName,pCanStartStop);
}
static FORCEINLINE HRESULT IShellDispatch4_ShowBrowserBar(IShellDispatch4* This,BSTR bstrClsid,VARIANT bShow,VARIANT *pSuccess) {
    return This->lpVtbl->ShowBrowserBar(This,bstrClsid,bShow,pSuccess);
}
/*** IShellDispatch3 methods ***/
static FORCEINLINE HRESULT IShellDispatch4_AddToRecent(IShellDispatch4* This,VARIANT varFile,BSTR bstrCategory) {
    return This->lpVtbl->AddToRecent(This,varFile,bstrCategory);
}
/*** IShellDispatch4 methods ***/
static FORCEINLINE HRESULT IShellDispatch4_WindowsSecurity(IShellDispatch4* This) {
    return This->lpVtbl->WindowsSecurity(This);
}
static FORCEINLINE HRESULT IShellDispatch4_ToggleDesktop(IShellDispatch4* This) {
    return This->lpVtbl->ToggleDesktop(This);
}
static FORCEINLINE HRESULT IShellDispatch4_ExplorerPolicy(IShellDispatch4* This,BSTR bstrPolicyName,VARIANT *pValue) {
    return This->lpVtbl->ExplorerPolicy(This,bstrPolicyName,pValue);
}
static FORCEINLINE HRESULT IShellDispatch4_GetSetting(IShellDispatch4* This,LONG lSetting,VARIANT_BOOL *pResult) {
    return This->lpVtbl->GetSetting(This,lSetting,pResult);
}
#endif
#endif

#endif


#endif  /* __IShellDispatch4_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IShellDispatch5 interface
 */
#ifndef __IShellDispatch5_INTERFACE_DEFINED__
#define __IShellDispatch5_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellDispatch5, 0x866738b9, 0x6cf2, 0x4de8, 0x87,0x67, 0xf7,0x94,0xeb,0xe7,0x4f,0x4e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("866738b9-6cf2-4de8-8767-f794ebe74f4e")
IShellDispatch5 : public IShellDispatch4
{
    virtual HRESULT STDMETHODCALLTYPE WindowSwitcher(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellDispatch5, 0x866738b9, 0x6cf2, 0x4de8, 0x87,0x67, 0xf7,0x94,0xeb,0xe7,0x4f,0x4e)
#endif
#else
typedef struct IShellDispatch5Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellDispatch5 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellDispatch5 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellDispatch5 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IShellDispatch5 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IShellDispatch5 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IShellDispatch5 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IShellDispatch5 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IShellDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Application)(
        IShellDispatch5 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        IShellDispatch5 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *NameSpace)(
        IShellDispatch5 *This,
        VARIANT vDir,
        Folder **ppsdf);

    HRESULT (STDMETHODCALLTYPE *BrowseForFolder)(
        IShellDispatch5 *This,
        LONG Hwnd,
        BSTR Title,
        LONG Options,
        VARIANT RootFolder,
        Folder **ppsdf);

    HRESULT (STDMETHODCALLTYPE *Windows)(
        IShellDispatch5 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *Open)(
        IShellDispatch5 *This,
        VARIANT vDir);

    HRESULT (STDMETHODCALLTYPE *Explore)(
        IShellDispatch5 *This,
        VARIANT vDir);

    HRESULT (STDMETHODCALLTYPE *MinimizeAll)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *UndoMinimizeALL)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *FileRun)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *CascadeWindows)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *TileVertically)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *TileHorizontally)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *ShutdownWindows)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *Suspend)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *EjectPC)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *SetTime)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *TrayProperties)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *Help)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *FindFiles)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *FindComputer)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *RefreshMenu)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *ControlPanelItem)(
        IShellDispatch5 *This,
        BSTR bstrDir);

    /*** IShellDispatch2 methods ***/
    HRESULT (STDMETHODCALLTYPE *IsRestricted)(
        IShellDispatch5 *This,
        BSTR Group,
        BSTR Restriction,
        LONG *plRestrictValue);

    HRESULT (STDMETHODCALLTYPE *ShellExecute)(
        IShellDispatch5 *This,
        BSTR File,
        VARIANT vArgs,
        VARIANT vDir,
        VARIANT vOperation,
        VARIANT vShow);

    HRESULT (STDMETHODCALLTYPE *FindPrinter)(
        IShellDispatch5 *This,
        BSTR name,
        BSTR location,
        BSTR model);

    HRESULT (STDMETHODCALLTYPE *GetSystemInformation)(
        IShellDispatch5 *This,
        BSTR name,
        VARIANT *pv);

    HRESULT (STDMETHODCALLTYPE *ServiceStart)(
        IShellDispatch5 *This,
        BSTR ServiceName,
        VARIANT Persistent,
        VARIANT *pSuccess);

    HRESULT (STDMETHODCALLTYPE *ServiceStop)(
        IShellDispatch5 *This,
        BSTR ServiceName,
        VARIANT Persistent,
        VARIANT *pSuccess);

    HRESULT (STDMETHODCALLTYPE *IsServiceRunning)(
        IShellDispatch5 *This,
        BSTR ServiceName,
        VARIANT *pRunning);

    HRESULT (STDMETHODCALLTYPE *CanStartStopService)(
        IShellDispatch5 *This,
        BSTR ServiceName,
        VARIANT *pCanStartStop);

    HRESULT (STDMETHODCALLTYPE *ShowBrowserBar)(
        IShellDispatch5 *This,
        BSTR bstrClsid,
        VARIANT bShow,
        VARIANT *pSuccess);

    /*** IShellDispatch3 methods ***/
    HRESULT (STDMETHODCALLTYPE *AddToRecent)(
        IShellDispatch5 *This,
        VARIANT varFile,
        BSTR bstrCategory);

    /*** IShellDispatch4 methods ***/
    HRESULT (STDMETHODCALLTYPE *WindowsSecurity)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *ToggleDesktop)(
        IShellDispatch5 *This);

    HRESULT (STDMETHODCALLTYPE *ExplorerPolicy)(
        IShellDispatch5 *This,
        BSTR bstrPolicyName,
        VARIANT *pValue);

    HRESULT (STDMETHODCALLTYPE *GetSetting)(
        IShellDispatch5 *This,
        LONG lSetting,
        VARIANT_BOOL *pResult);

    /*** IShellDispatch5 methods ***/
    HRESULT (STDMETHODCALLTYPE *WindowSwitcher)(
        IShellDispatch5 *This);

    END_INTERFACE
} IShellDispatch5Vtbl;

interface IShellDispatch5 {
    CONST_VTBL IShellDispatch5Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellDispatch5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellDispatch5_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellDispatch5_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IShellDispatch5_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IShellDispatch5_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IShellDispatch5_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IShellDispatch5_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IShellDispatch methods ***/
#define IShellDispatch5_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define IShellDispatch5_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define IShellDispatch5_NameSpace(This,vDir,ppsdf) (This)->lpVtbl->NameSpace(This,vDir,ppsdf)
#define IShellDispatch5_BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf) (This)->lpVtbl->BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf)
#define IShellDispatch5_Windows(This,ppid) (This)->lpVtbl->Windows(This,ppid)
#define IShellDispatch5_Open(This,vDir) (This)->lpVtbl->Open(This,vDir)
#define IShellDispatch5_Explore(This,vDir) (This)->lpVtbl->Explore(This,vDir)
#define IShellDispatch5_MinimizeAll(This) (This)->lpVtbl->MinimizeAll(This)
#define IShellDispatch5_UndoMinimizeALL(This) (This)->lpVtbl->UndoMinimizeALL(This)
#define IShellDispatch5_FileRun(This) (This)->lpVtbl->FileRun(This)
#define IShellDispatch5_CascadeWindows(This) (This)->lpVtbl->CascadeWindows(This)
#define IShellDispatch5_TileVertically(This) (This)->lpVtbl->TileVertically(This)
#define IShellDispatch5_TileHorizontally(This) (This)->lpVtbl->TileHorizontally(This)
#define IShellDispatch5_ShutdownWindows(This) (This)->lpVtbl->ShutdownWindows(This)
#define IShellDispatch5_Suspend(This) (This)->lpVtbl->Suspend(This)
#define IShellDispatch5_EjectPC(This) (This)->lpVtbl->EjectPC(This)
#define IShellDispatch5_SetTime(This) (This)->lpVtbl->SetTime(This)
#define IShellDispatch5_TrayProperties(This) (This)->lpVtbl->TrayProperties(This)
#define IShellDispatch5_Help(This) (This)->lpVtbl->Help(This)
#define IShellDispatch5_FindFiles(This) (This)->lpVtbl->FindFiles(This)
#define IShellDispatch5_FindComputer(This) (This)->lpVtbl->FindComputer(This)
#define IShellDispatch5_RefreshMenu(This) (This)->lpVtbl->RefreshMenu(This)
#define IShellDispatch5_ControlPanelItem(This,bstrDir) (This)->lpVtbl->ControlPanelItem(This,bstrDir)
/*** IShellDispatch2 methods ***/
#define IShellDispatch5_IsRestricted(This,Group,Restriction,plRestrictValue) (This)->lpVtbl->IsRestricted(This,Group,Restriction,plRestrictValue)
#define IShellDispatch5_ShellExecute(This,File,vArgs,vDir,vOperation,vShow) (This)->lpVtbl->ShellExecute(This,File,vArgs,vDir,vOperation,vShow)
#define IShellDispatch5_FindPrinter(This,name,location,model) (This)->lpVtbl->FindPrinter(This,name,location,model)
#define IShellDispatch5_GetSystemInformation(This,name,pv) (This)->lpVtbl->GetSystemInformation(This,name,pv)
#define IShellDispatch5_ServiceStart(This,ServiceName,Persistent,pSuccess) (This)->lpVtbl->ServiceStart(This,ServiceName,Persistent,pSuccess)
#define IShellDispatch5_ServiceStop(This,ServiceName,Persistent,pSuccess) (This)->lpVtbl->ServiceStop(This,ServiceName,Persistent,pSuccess)
#define IShellDispatch5_IsServiceRunning(This,ServiceName,pRunning) (This)->lpVtbl->IsServiceRunning(This,ServiceName,pRunning)
#define IShellDispatch5_CanStartStopService(This,ServiceName,pCanStartStop) (This)->lpVtbl->CanStartStopService(This,ServiceName,pCanStartStop)
#define IShellDispatch5_ShowBrowserBar(This,bstrClsid,bShow,pSuccess) (This)->lpVtbl->ShowBrowserBar(This,bstrClsid,bShow,pSuccess)
/*** IShellDispatch3 methods ***/
#define IShellDispatch5_AddToRecent(This,varFile,bstrCategory) (This)->lpVtbl->AddToRecent(This,varFile,bstrCategory)
/*** IShellDispatch4 methods ***/
#define IShellDispatch5_WindowsSecurity(This) (This)->lpVtbl->WindowsSecurity(This)
#define IShellDispatch5_ToggleDesktop(This) (This)->lpVtbl->ToggleDesktop(This)
#define IShellDispatch5_ExplorerPolicy(This,bstrPolicyName,pValue) (This)->lpVtbl->ExplorerPolicy(This,bstrPolicyName,pValue)
#define IShellDispatch5_GetSetting(This,lSetting,pResult) (This)->lpVtbl->GetSetting(This,lSetting,pResult)
/*** IShellDispatch5 methods ***/
#define IShellDispatch5_WindowSwitcher(This) (This)->lpVtbl->WindowSwitcher(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellDispatch5_QueryInterface(IShellDispatch5* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellDispatch5_AddRef(IShellDispatch5* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellDispatch5_Release(IShellDispatch5* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IShellDispatch5_GetTypeInfoCount(IShellDispatch5* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IShellDispatch5_GetTypeInfo(IShellDispatch5* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IShellDispatch5_GetIDsOfNames(IShellDispatch5* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IShellDispatch5_Invoke(IShellDispatch5* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IShellDispatch methods ***/
static FORCEINLINE HRESULT IShellDispatch5_get_Application(IShellDispatch5* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch5_get_Parent(IShellDispatch5* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch5_NameSpace(IShellDispatch5* This,VARIANT vDir,Folder **ppsdf) {
    return This->lpVtbl->NameSpace(This,vDir,ppsdf);
}
static FORCEINLINE HRESULT IShellDispatch5_BrowseForFolder(IShellDispatch5* This,LONG Hwnd,BSTR Title,LONG Options,VARIANT RootFolder,Folder **ppsdf) {
    return This->lpVtbl->BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf);
}
static FORCEINLINE HRESULT IShellDispatch5_Windows(IShellDispatch5* This,IDispatch **ppid) {
    return This->lpVtbl->Windows(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch5_Open(IShellDispatch5* This,VARIANT vDir) {
    return This->lpVtbl->Open(This,vDir);
}
static FORCEINLINE HRESULT IShellDispatch5_Explore(IShellDispatch5* This,VARIANT vDir) {
    return This->lpVtbl->Explore(This,vDir);
}
static FORCEINLINE HRESULT IShellDispatch5_MinimizeAll(IShellDispatch5* This) {
    return This->lpVtbl->MinimizeAll(This);
}
static FORCEINLINE HRESULT IShellDispatch5_UndoMinimizeALL(IShellDispatch5* This) {
    return This->lpVtbl->UndoMinimizeALL(This);
}
static FORCEINLINE HRESULT IShellDispatch5_FileRun(IShellDispatch5* This) {
    return This->lpVtbl->FileRun(This);
}
static FORCEINLINE HRESULT IShellDispatch5_CascadeWindows(IShellDispatch5* This) {
    return This->lpVtbl->CascadeWindows(This);
}
static FORCEINLINE HRESULT IShellDispatch5_TileVertically(IShellDispatch5* This) {
    return This->lpVtbl->TileVertically(This);
}
static FORCEINLINE HRESULT IShellDispatch5_TileHorizontally(IShellDispatch5* This) {
    return This->lpVtbl->TileHorizontally(This);
}
static FORCEINLINE HRESULT IShellDispatch5_ShutdownWindows(IShellDispatch5* This) {
    return This->lpVtbl->ShutdownWindows(This);
}
static FORCEINLINE HRESULT IShellDispatch5_Suspend(IShellDispatch5* This) {
    return This->lpVtbl->Suspend(This);
}
static FORCEINLINE HRESULT IShellDispatch5_EjectPC(IShellDispatch5* This) {
    return This->lpVtbl->EjectPC(This);
}
static FORCEINLINE HRESULT IShellDispatch5_SetTime(IShellDispatch5* This) {
    return This->lpVtbl->SetTime(This);
}
static FORCEINLINE HRESULT IShellDispatch5_TrayProperties(IShellDispatch5* This) {
    return This->lpVtbl->TrayProperties(This);
}
static FORCEINLINE HRESULT IShellDispatch5_Help(IShellDispatch5* This) {
    return This->lpVtbl->Help(This);
}
static FORCEINLINE HRESULT IShellDispatch5_FindFiles(IShellDispatch5* This) {
    return This->lpVtbl->FindFiles(This);
}
static FORCEINLINE HRESULT IShellDispatch5_FindComputer(IShellDispatch5* This) {
    return This->lpVtbl->FindComputer(This);
}
static FORCEINLINE HRESULT IShellDispatch5_RefreshMenu(IShellDispatch5* This) {
    return This->lpVtbl->RefreshMenu(This);
}
static FORCEINLINE HRESULT IShellDispatch5_ControlPanelItem(IShellDispatch5* This,BSTR bstrDir) {
    return This->lpVtbl->ControlPanelItem(This,bstrDir);
}
/*** IShellDispatch2 methods ***/
static FORCEINLINE HRESULT IShellDispatch5_IsRestricted(IShellDispatch5* This,BSTR Group,BSTR Restriction,LONG *plRestrictValue) {
    return This->lpVtbl->IsRestricted(This,Group,Restriction,plRestrictValue);
}
static FORCEINLINE HRESULT IShellDispatch5_ShellExecute(IShellDispatch5* This,BSTR File,VARIANT vArgs,VARIANT vDir,VARIANT vOperation,VARIANT vShow) {
    return This->lpVtbl->ShellExecute(This,File,vArgs,vDir,vOperation,vShow);
}
static FORCEINLINE HRESULT IShellDispatch5_FindPrinter(IShellDispatch5* This,BSTR name,BSTR location,BSTR model) {
    return This->lpVtbl->FindPrinter(This,name,location,model);
}
static FORCEINLINE HRESULT IShellDispatch5_GetSystemInformation(IShellDispatch5* This,BSTR name,VARIANT *pv) {
    return This->lpVtbl->GetSystemInformation(This,name,pv);
}
static FORCEINLINE HRESULT IShellDispatch5_ServiceStart(IShellDispatch5* This,BSTR ServiceName,VARIANT Persistent,VARIANT *pSuccess) {
    return This->lpVtbl->ServiceStart(This,ServiceName,Persistent,pSuccess);
}
static FORCEINLINE HRESULT IShellDispatch5_ServiceStop(IShellDispatch5* This,BSTR ServiceName,VARIANT Persistent,VARIANT *pSuccess) {
    return This->lpVtbl->ServiceStop(This,ServiceName,Persistent,pSuccess);
}
static FORCEINLINE HRESULT IShellDispatch5_IsServiceRunning(IShellDispatch5* This,BSTR ServiceName,VARIANT *pRunning) {
    return This->lpVtbl->IsServiceRunning(This,ServiceName,pRunning);
}
static FORCEINLINE HRESULT IShellDispatch5_CanStartStopService(IShellDispatch5* This,BSTR ServiceName,VARIANT *pCanStartStop) {
    return This->lpVtbl->CanStartStopService(This,ServiceName,pCanStartStop);
}
static FORCEINLINE HRESULT IShellDispatch5_ShowBrowserBar(IShellDispatch5* This,BSTR bstrClsid,VARIANT bShow,VARIANT *pSuccess) {
    return This->lpVtbl->ShowBrowserBar(This,bstrClsid,bShow,pSuccess);
}
/*** IShellDispatch3 methods ***/
static FORCEINLINE HRESULT IShellDispatch5_AddToRecent(IShellDispatch5* This,VARIANT varFile,BSTR bstrCategory) {
    return This->lpVtbl->AddToRecent(This,varFile,bstrCategory);
}
/*** IShellDispatch4 methods ***/
static FORCEINLINE HRESULT IShellDispatch5_WindowsSecurity(IShellDispatch5* This) {
    return This->lpVtbl->WindowsSecurity(This);
}
static FORCEINLINE HRESULT IShellDispatch5_ToggleDesktop(IShellDispatch5* This) {
    return This->lpVtbl->ToggleDesktop(This);
}
static FORCEINLINE HRESULT IShellDispatch5_ExplorerPolicy(IShellDispatch5* This,BSTR bstrPolicyName,VARIANT *pValue) {
    return This->lpVtbl->ExplorerPolicy(This,bstrPolicyName,pValue);
}
static FORCEINLINE HRESULT IShellDispatch5_GetSetting(IShellDispatch5* This,LONG lSetting,VARIANT_BOOL *pResult) {
    return This->lpVtbl->GetSetting(This,lSetting,pResult);
}
/*** IShellDispatch5 methods ***/
static FORCEINLINE HRESULT IShellDispatch5_WindowSwitcher(IShellDispatch5* This) {
    return This->lpVtbl->WindowSwitcher(This);
}
#endif
#endif

#endif


#endif  /* __IShellDispatch5_INTERFACE_DEFINED__ */

#if NTDDI_VERSION >= NTDDI_WIN8
/*****************************************************************************
 * IShellDispatch6 interface
 */
#ifndef __IShellDispatch6_INTERFACE_DEFINED__
#define __IShellDispatch6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IShellDispatch6, 0x286e6f1b, 0x7113, 0x4355, 0x95,0x62, 0x96,0xb7,0xe9,0xd6,0x4c,0x54);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("286e6f1b-7113-4355-9562-96b7e9d64c54")
IShellDispatch6 : public IShellDispatch5
{
    virtual HRESULT STDMETHODCALLTYPE SearchCommand(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IShellDispatch6, 0x286e6f1b, 0x7113, 0x4355, 0x95,0x62, 0x96,0xb7,0xe9,0xd6,0x4c,0x54)
#endif
#else
typedef struct IShellDispatch6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IShellDispatch6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IShellDispatch6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IShellDispatch6 *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IShellDispatch6 *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IShellDispatch6 *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IShellDispatch6 *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IShellDispatch6 *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IShellDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *get_Application)(
        IShellDispatch6 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *get_Parent)(
        IShellDispatch6 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *NameSpace)(
        IShellDispatch6 *This,
        VARIANT vDir,
        Folder **ppsdf);

    HRESULT (STDMETHODCALLTYPE *BrowseForFolder)(
        IShellDispatch6 *This,
        LONG Hwnd,
        BSTR Title,
        LONG Options,
        VARIANT RootFolder,
        Folder **ppsdf);

    HRESULT (STDMETHODCALLTYPE *Windows)(
        IShellDispatch6 *This,
        IDispatch **ppid);

    HRESULT (STDMETHODCALLTYPE *Open)(
        IShellDispatch6 *This,
        VARIANT vDir);

    HRESULT (STDMETHODCALLTYPE *Explore)(
        IShellDispatch6 *This,
        VARIANT vDir);

    HRESULT (STDMETHODCALLTYPE *MinimizeAll)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *UndoMinimizeALL)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *FileRun)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *CascadeWindows)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *TileVertically)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *TileHorizontally)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *ShutdownWindows)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *Suspend)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *EjectPC)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *SetTime)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *TrayProperties)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *Help)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *FindFiles)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *FindComputer)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *RefreshMenu)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *ControlPanelItem)(
        IShellDispatch6 *This,
        BSTR bstrDir);

    /*** IShellDispatch2 methods ***/
    HRESULT (STDMETHODCALLTYPE *IsRestricted)(
        IShellDispatch6 *This,
        BSTR Group,
        BSTR Restriction,
        LONG *plRestrictValue);

    HRESULT (STDMETHODCALLTYPE *ShellExecute)(
        IShellDispatch6 *This,
        BSTR File,
        VARIANT vArgs,
        VARIANT vDir,
        VARIANT vOperation,
        VARIANT vShow);

    HRESULT (STDMETHODCALLTYPE *FindPrinter)(
        IShellDispatch6 *This,
        BSTR name,
        BSTR location,
        BSTR model);

    HRESULT (STDMETHODCALLTYPE *GetSystemInformation)(
        IShellDispatch6 *This,
        BSTR name,
        VARIANT *pv);

    HRESULT (STDMETHODCALLTYPE *ServiceStart)(
        IShellDispatch6 *This,
        BSTR ServiceName,
        VARIANT Persistent,
        VARIANT *pSuccess);

    HRESULT (STDMETHODCALLTYPE *ServiceStop)(
        IShellDispatch6 *This,
        BSTR ServiceName,
        VARIANT Persistent,
        VARIANT *pSuccess);

    HRESULT (STDMETHODCALLTYPE *IsServiceRunning)(
        IShellDispatch6 *This,
        BSTR ServiceName,
        VARIANT *pRunning);

    HRESULT (STDMETHODCALLTYPE *CanStartStopService)(
        IShellDispatch6 *This,
        BSTR ServiceName,
        VARIANT *pCanStartStop);

    HRESULT (STDMETHODCALLTYPE *ShowBrowserBar)(
        IShellDispatch6 *This,
        BSTR bstrClsid,
        VARIANT bShow,
        VARIANT *pSuccess);

    /*** IShellDispatch3 methods ***/
    HRESULT (STDMETHODCALLTYPE *AddToRecent)(
        IShellDispatch6 *This,
        VARIANT varFile,
        BSTR bstrCategory);

    /*** IShellDispatch4 methods ***/
    HRESULT (STDMETHODCALLTYPE *WindowsSecurity)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *ToggleDesktop)(
        IShellDispatch6 *This);

    HRESULT (STDMETHODCALLTYPE *ExplorerPolicy)(
        IShellDispatch6 *This,
        BSTR bstrPolicyName,
        VARIANT *pValue);

    HRESULT (STDMETHODCALLTYPE *GetSetting)(
        IShellDispatch6 *This,
        LONG lSetting,
        VARIANT_BOOL *pResult);

    /*** IShellDispatch5 methods ***/
    HRESULT (STDMETHODCALLTYPE *WindowSwitcher)(
        IShellDispatch6 *This);

    /*** IShellDispatch6 methods ***/
    HRESULT (STDMETHODCALLTYPE *SearchCommand)(
        IShellDispatch6 *This);

    END_INTERFACE
} IShellDispatch6Vtbl;

interface IShellDispatch6 {
    CONST_VTBL IShellDispatch6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IShellDispatch6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IShellDispatch6_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IShellDispatch6_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IShellDispatch6_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IShellDispatch6_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IShellDispatch6_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IShellDispatch6_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IShellDispatch methods ***/
#define IShellDispatch6_get_Application(This,ppid) (This)->lpVtbl->get_Application(This,ppid)
#define IShellDispatch6_get_Parent(This,ppid) (This)->lpVtbl->get_Parent(This,ppid)
#define IShellDispatch6_NameSpace(This,vDir,ppsdf) (This)->lpVtbl->NameSpace(This,vDir,ppsdf)
#define IShellDispatch6_BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf) (This)->lpVtbl->BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf)
#define IShellDispatch6_Windows(This,ppid) (This)->lpVtbl->Windows(This,ppid)
#define IShellDispatch6_Open(This,vDir) (This)->lpVtbl->Open(This,vDir)
#define IShellDispatch6_Explore(This,vDir) (This)->lpVtbl->Explore(This,vDir)
#define IShellDispatch6_MinimizeAll(This) (This)->lpVtbl->MinimizeAll(This)
#define IShellDispatch6_UndoMinimizeALL(This) (This)->lpVtbl->UndoMinimizeALL(This)
#define IShellDispatch6_FileRun(This) (This)->lpVtbl->FileRun(This)
#define IShellDispatch6_CascadeWindows(This) (This)->lpVtbl->CascadeWindows(This)
#define IShellDispatch6_TileVertically(This) (This)->lpVtbl->TileVertically(This)
#define IShellDispatch6_TileHorizontally(This) (This)->lpVtbl->TileHorizontally(This)
#define IShellDispatch6_ShutdownWindows(This) (This)->lpVtbl->ShutdownWindows(This)
#define IShellDispatch6_Suspend(This) (This)->lpVtbl->Suspend(This)
#define IShellDispatch6_EjectPC(This) (This)->lpVtbl->EjectPC(This)
#define IShellDispatch6_SetTime(This) (This)->lpVtbl->SetTime(This)
#define IShellDispatch6_TrayProperties(This) (This)->lpVtbl->TrayProperties(This)
#define IShellDispatch6_Help(This) (This)->lpVtbl->Help(This)
#define IShellDispatch6_FindFiles(This) (This)->lpVtbl->FindFiles(This)
#define IShellDispatch6_FindComputer(This) (This)->lpVtbl->FindComputer(This)
#define IShellDispatch6_RefreshMenu(This) (This)->lpVtbl->RefreshMenu(This)
#define IShellDispatch6_ControlPanelItem(This,bstrDir) (This)->lpVtbl->ControlPanelItem(This,bstrDir)
/*** IShellDispatch2 methods ***/
#define IShellDispatch6_IsRestricted(This,Group,Restriction,plRestrictValue) (This)->lpVtbl->IsRestricted(This,Group,Restriction,plRestrictValue)
#define IShellDispatch6_ShellExecute(This,File,vArgs,vDir,vOperation,vShow) (This)->lpVtbl->ShellExecute(This,File,vArgs,vDir,vOperation,vShow)
#define IShellDispatch6_FindPrinter(This,name,location,model) (This)->lpVtbl->FindPrinter(This,name,location,model)
#define IShellDispatch6_GetSystemInformation(This,name,pv) (This)->lpVtbl->GetSystemInformation(This,name,pv)
#define IShellDispatch6_ServiceStart(This,ServiceName,Persistent,pSuccess) (This)->lpVtbl->ServiceStart(This,ServiceName,Persistent,pSuccess)
#define IShellDispatch6_ServiceStop(This,ServiceName,Persistent,pSuccess) (This)->lpVtbl->ServiceStop(This,ServiceName,Persistent,pSuccess)
#define IShellDispatch6_IsServiceRunning(This,ServiceName,pRunning) (This)->lpVtbl->IsServiceRunning(This,ServiceName,pRunning)
#define IShellDispatch6_CanStartStopService(This,ServiceName,pCanStartStop) (This)->lpVtbl->CanStartStopService(This,ServiceName,pCanStartStop)
#define IShellDispatch6_ShowBrowserBar(This,bstrClsid,bShow,pSuccess) (This)->lpVtbl->ShowBrowserBar(This,bstrClsid,bShow,pSuccess)
/*** IShellDispatch3 methods ***/
#define IShellDispatch6_AddToRecent(This,varFile,bstrCategory) (This)->lpVtbl->AddToRecent(This,varFile,bstrCategory)
/*** IShellDispatch4 methods ***/
#define IShellDispatch6_WindowsSecurity(This) (This)->lpVtbl->WindowsSecurity(This)
#define IShellDispatch6_ToggleDesktop(This) (This)->lpVtbl->ToggleDesktop(This)
#define IShellDispatch6_ExplorerPolicy(This,bstrPolicyName,pValue) (This)->lpVtbl->ExplorerPolicy(This,bstrPolicyName,pValue)
#define IShellDispatch6_GetSetting(This,lSetting,pResult) (This)->lpVtbl->GetSetting(This,lSetting,pResult)
/*** IShellDispatch5 methods ***/
#define IShellDispatch6_WindowSwitcher(This) (This)->lpVtbl->WindowSwitcher(This)
/*** IShellDispatch6 methods ***/
#define IShellDispatch6_SearchCommand(This) (This)->lpVtbl->SearchCommand(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IShellDispatch6_QueryInterface(IShellDispatch6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IShellDispatch6_AddRef(IShellDispatch6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IShellDispatch6_Release(IShellDispatch6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IShellDispatch6_GetTypeInfoCount(IShellDispatch6* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IShellDispatch6_GetTypeInfo(IShellDispatch6* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IShellDispatch6_GetIDsOfNames(IShellDispatch6* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IShellDispatch6_Invoke(IShellDispatch6* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IShellDispatch methods ***/
static FORCEINLINE HRESULT IShellDispatch6_get_Application(IShellDispatch6* This,IDispatch **ppid) {
    return This->lpVtbl->get_Application(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch6_get_Parent(IShellDispatch6* This,IDispatch **ppid) {
    return This->lpVtbl->get_Parent(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch6_NameSpace(IShellDispatch6* This,VARIANT vDir,Folder **ppsdf) {
    return This->lpVtbl->NameSpace(This,vDir,ppsdf);
}
static FORCEINLINE HRESULT IShellDispatch6_BrowseForFolder(IShellDispatch6* This,LONG Hwnd,BSTR Title,LONG Options,VARIANT RootFolder,Folder **ppsdf) {
    return This->lpVtbl->BrowseForFolder(This,Hwnd,Title,Options,RootFolder,ppsdf);
}
static FORCEINLINE HRESULT IShellDispatch6_Windows(IShellDispatch6* This,IDispatch **ppid) {
    return This->lpVtbl->Windows(This,ppid);
}
static FORCEINLINE HRESULT IShellDispatch6_Open(IShellDispatch6* This,VARIANT vDir) {
    return This->lpVtbl->Open(This,vDir);
}
static FORCEINLINE HRESULT IShellDispatch6_Explore(IShellDispatch6* This,VARIANT vDir) {
    return This->lpVtbl->Explore(This,vDir);
}
static FORCEINLINE HRESULT IShellDispatch6_MinimizeAll(IShellDispatch6* This) {
    return This->lpVtbl->MinimizeAll(This);
}
static FORCEINLINE HRESULT IShellDispatch6_UndoMinimizeALL(IShellDispatch6* This) {
    return This->lpVtbl->UndoMinimizeALL(This);
}
static FORCEINLINE HRESULT IShellDispatch6_FileRun(IShellDispatch6* This) {
    return This->lpVtbl->FileRun(This);
}
static FORCEINLINE HRESULT IShellDispatch6_CascadeWindows(IShellDispatch6* This) {
    return This->lpVtbl->CascadeWindows(This);
}
static FORCEINLINE HRESULT IShellDispatch6_TileVertically(IShellDispatch6* This) {
    return This->lpVtbl->TileVertically(This);
}
static FORCEINLINE HRESULT IShellDispatch6_TileHorizontally(IShellDispatch6* This) {
    return This->lpVtbl->TileHorizontally(This);
}
static FORCEINLINE HRESULT IShellDispatch6_ShutdownWindows(IShellDispatch6* This) {
    return This->lpVtbl->ShutdownWindows(This);
}
static FORCEINLINE HRESULT IShellDispatch6_Suspend(IShellDispatch6* This) {
    return This->lpVtbl->Suspend(This);
}
static FORCEINLINE HRESULT IShellDispatch6_EjectPC(IShellDispatch6* This) {
    return This->lpVtbl->EjectPC(This);
}
static FORCEINLINE HRESULT IShellDispatch6_SetTime(IShellDispatch6* This) {
    return This->lpVtbl->SetTime(This);
}
static FORCEINLINE HRESULT IShellDispatch6_TrayProperties(IShellDispatch6* This) {
    return This->lpVtbl->TrayProperties(This);
}
static FORCEINLINE HRESULT IShellDispatch6_Help(IShellDispatch6* This) {
    return This->lpVtbl->Help(This);
}
static FORCEINLINE HRESULT IShellDispatch6_FindFiles(IShellDispatch6* This) {
    return This->lpVtbl->FindFiles(This);
}
static FORCEINLINE HRESULT IShellDispatch6_FindComputer(IShellDispatch6* This) {
    return This->lpVtbl->FindComputer(This);
}
static FORCEINLINE HRESULT IShellDispatch6_RefreshMenu(IShellDispatch6* This) {
    return This->lpVtbl->RefreshMenu(This);
}
static FORCEINLINE HRESULT IShellDispatch6_ControlPanelItem(IShellDispatch6* This,BSTR bstrDir) {
    return This->lpVtbl->ControlPanelItem(This,bstrDir);
}
/*** IShellDispatch2 methods ***/
static FORCEINLINE HRESULT IShellDispatch6_IsRestricted(IShellDispatch6* This,BSTR Group,BSTR Restriction,LONG *plRestrictValue) {
    return This->lpVtbl->IsRestricted(This,Group,Restriction,plRestrictValue);
}
static FORCEINLINE HRESULT IShellDispatch6_ShellExecute(IShellDispatch6* This,BSTR File,VARIANT vArgs,VARIANT vDir,VARIANT vOperation,VARIANT vShow) {
    return This->lpVtbl->ShellExecute(This,File,vArgs,vDir,vOperation,vShow);
}
static FORCEINLINE HRESULT IShellDispatch6_FindPrinter(IShellDispatch6* This,BSTR name,BSTR location,BSTR model) {
    return This->lpVtbl->FindPrinter(This,name,location,model);
}
static FORCEINLINE HRESULT IShellDispatch6_GetSystemInformation(IShellDispatch6* This,BSTR name,VARIANT *pv) {
    return This->lpVtbl->GetSystemInformation(This,name,pv);
}
static FORCEINLINE HRESULT IShellDispatch6_ServiceStart(IShellDispatch6* This,BSTR ServiceName,VARIANT Persistent,VARIANT *pSuccess) {
    return This->lpVtbl->ServiceStart(This,ServiceName,Persistent,pSuccess);
}
static FORCEINLINE HRESULT IShellDispatch6_ServiceStop(IShellDispatch6* This,BSTR ServiceName,VARIANT Persistent,VARIANT *pSuccess) {
    return This->lpVtbl->ServiceStop(This,ServiceName,Persistent,pSuccess);
}
static FORCEINLINE HRESULT IShellDispatch6_IsServiceRunning(IShellDispatch6* This,BSTR ServiceName,VARIANT *pRunning) {
    return This->lpVtbl->IsServiceRunning(This,ServiceName,pRunning);
}
static FORCEINLINE HRESULT IShellDispatch6_CanStartStopService(IShellDispatch6* This,BSTR ServiceName,VARIANT *pCanStartStop) {
    return This->lpVtbl->CanStartStopService(This,ServiceName,pCanStartStop);
}
static FORCEINLINE HRESULT IShellDispatch6_ShowBrowserBar(IShellDispatch6* This,BSTR bstrClsid,VARIANT bShow,VARIANT *pSuccess) {
    return This->lpVtbl->ShowBrowserBar(This,bstrClsid,bShow,pSuccess);
}
/*** IShellDispatch3 methods ***/
static FORCEINLINE HRESULT IShellDispatch6_AddToRecent(IShellDispatch6* This,VARIANT varFile,BSTR bstrCategory) {
    return This->lpVtbl->AddToRecent(This,varFile,bstrCategory);
}
/*** IShellDispatch4 methods ***/
static FORCEINLINE HRESULT IShellDispatch6_WindowsSecurity(IShellDispatch6* This) {
    return This->lpVtbl->WindowsSecurity(This);
}
static FORCEINLINE HRESULT IShellDispatch6_ToggleDesktop(IShellDispatch6* This) {
    return This->lpVtbl->ToggleDesktop(This);
}
static FORCEINLINE HRESULT IShellDispatch6_ExplorerPolicy(IShellDispatch6* This,BSTR bstrPolicyName,VARIANT *pValue) {
    return This->lpVtbl->ExplorerPolicy(This,bstrPolicyName,pValue);
}
static FORCEINLINE HRESULT IShellDispatch6_GetSetting(IShellDispatch6* This,LONG lSetting,VARIANT_BOOL *pResult) {
    return This->lpVtbl->GetSetting(This,lSetting,pResult);
}
/*** IShellDispatch5 methods ***/
static FORCEINLINE HRESULT IShellDispatch6_WindowSwitcher(IShellDispatch6* This) {
    return This->lpVtbl->WindowSwitcher(This);
}
/*** IShellDispatch6 methods ***/
static FORCEINLINE HRESULT IShellDispatch6_SearchCommand(IShellDispatch6* This) {
    return This->lpVtbl->SearchCommand(This);
}
#endif
#endif

#endif


#endif  /* __IShellDispatch6_INTERFACE_DEFINED__ */

#endif
/*****************************************************************************
 * Shell coclass
 */

DEFINE_GUID(CLSID_Shell, 0x13709620, 0xc279, 0x11ce, 0xa4,0x9e, 0x44,0x45,0x53,0x54,0x00,0x00);

#ifdef __cplusplus
class DECLSPEC_UUID("13709620-c279-11ce-a49e-444553540000") Shell;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(Shell, 0x13709620, 0xc279, 0x11ce, 0xa4,0x9e, 0x44,0x45,0x53,0x54,0x00,0x00)
#endif
#endif

/*****************************************************************************
 * ShellDispatchInproc coclass
 */

DEFINE_GUID(CLSID_ShellDispatchInproc, 0x0a89a860, 0xd7b1, 0x11ce, 0x83,0x50, 0x44,0x45,0x53,0x54,0x00,0x00);

#ifdef __cplusplus
class DECLSPEC_UUID("0a89a860-d7b1-11ce-8350-444553540000") ShellDispatchInproc;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ShellDispatchInproc, 0x0a89a860, 0xd7b1, 0x11ce, 0x83,0x50, 0x44,0x45,0x53,0x54,0x00,0x00)
#endif
#endif

typedef enum ShellSpecialFolderConstants {
    ssfDESKTOP = 0x0,
    ssfPROGRAMS = 0x2,
    ssfCONTROLS = 0x3,
    ssfPRINTERS = 0x4,
    ssfPERSONAL = 0x5,
    ssfFAVORITES = 0x6,
    ssfSTARTUP = 0x7,
    ssfRECENT = 0x8,
    ssfSENDTO = 0x9,
    ssfBITBUCKET = 0xa,
    ssfSTARTMENU = 0xb,
    ssfDESKTOPDIRECTORY = 0x10,
    ssfDRIVES = 0x11,
    ssfNETWORK = 0x12,
    ssfNETHOOD = 0x13,
    ssfFONTS = 0x14,
    ssfTEMPLATES = 0x15,
    ssfCOMMONSTARTMENU = 0x16,
    ssfCOMMONPROGRAMS = 0x17,
    ssfCOMMONSTARTUP = 0x18,
    ssfCOMMONDESKTOPDIR = 0x19,
    ssfAPPDATA = 0x1a,
    ssfPRINTHOOD = 0x1b,
    ssfLOCALAPPDATA = 0x1c,
    ssfALTSTARTUP = 0x1d,
    ssfCOMMONALTSTARTUP = 0x1e,
    ssfCOMMONFAVORITES = 0x1f,
    ssfINTERNETCACHE = 0x20,
    ssfCOOKIES = 0x21,
    ssfHISTORY = 0x22,
    ssfCOMMONAPPDATA = 0x23,
    ssfWINDOWS = 0x24,
    ssfSYSTEM = 0x25,
    ssfPROGRAMFILES = 0x26,
    ssfMYPICTURES = 0x27,
    ssfPROFILE = 0x28,
    ssfSYSTEMx86 = 0x29,
    ssfPROGRAMFILESx86 = 0x30
} ShellSpecialFolderConstants;
/*****************************************************************************
 * IFileSearchBand interface
 */
#ifndef __IFileSearchBand_INTERFACE_DEFINED__
#define __IFileSearchBand_INTERFACE_DEFINED__

DEFINE_GUID(IID_IFileSearchBand, 0x2d91eea1, 0x9932, 0x11d2, 0xbe,0x86, 0x00,0xa0,0xc9,0xa8,0x3d,0xa1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2d91eea1-9932-11d2-be86-00a0c9a83da1")
IFileSearchBand : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE SetFocus(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetSearchParameters(
        BSTR *pbstrSearchID,
        VARIANT_BOOL bNavToResults,
        VARIANT *pvarScope,
        VARIANT *pvarQueryFile) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_SearchID(
        BSTR *pbstrSearchID) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Scope(
        VARIANT *pvarScope) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_QueryFile(
        VARIANT *pvarFile) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IFileSearchBand, 0x2d91eea1, 0x9932, 0x11d2, 0xbe,0x86, 0x00,0xa0,0xc9,0xa8,0x3d,0xa1)
#endif
#else
typedef struct IFileSearchBandVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IFileSearchBand *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IFileSearchBand *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IFileSearchBand *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IFileSearchBand *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IFileSearchBand *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IFileSearchBand *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IFileSearchBand *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IFileSearchBand methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFocus)(
        IFileSearchBand *This);

    HRESULT (STDMETHODCALLTYPE *SetSearchParameters)(
        IFileSearchBand *This,
        BSTR *pbstrSearchID,
        VARIANT_BOOL bNavToResults,
        VARIANT *pvarScope,
        VARIANT *pvarQueryFile);

    HRESULT (STDMETHODCALLTYPE *get_SearchID)(
        IFileSearchBand *This,
        BSTR *pbstrSearchID);

    HRESULT (STDMETHODCALLTYPE *get_Scope)(
        IFileSearchBand *This,
        VARIANT *pvarScope);

    HRESULT (STDMETHODCALLTYPE *get_QueryFile)(
        IFileSearchBand *This,
        VARIANT *pvarFile);

    END_INTERFACE
} IFileSearchBandVtbl;

interface IFileSearchBand {
    CONST_VTBL IFileSearchBandVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IFileSearchBand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IFileSearchBand_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IFileSearchBand_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IFileSearchBand_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IFileSearchBand_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IFileSearchBand_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IFileSearchBand_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IFileSearchBand methods ***/
#define IFileSearchBand_SetFocus(This) (This)->lpVtbl->SetFocus(This)
#define IFileSearchBand_SetSearchParameters(This,pbstrSearchID,bNavToResults,pvarScope,pvarQueryFile) (This)->lpVtbl->SetSearchParameters(This,pbstrSearchID,bNavToResults,pvarScope,pvarQueryFile)
#define IFileSearchBand_get_SearchID(This,pbstrSearchID) (This)->lpVtbl->get_SearchID(This,pbstrSearchID)
#define IFileSearchBand_get_Scope(This,pvarScope) (This)->lpVtbl->get_Scope(This,pvarScope)
#define IFileSearchBand_get_QueryFile(This,pvarFile) (This)->lpVtbl->get_QueryFile(This,pvarFile)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IFileSearchBand_QueryInterface(IFileSearchBand* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IFileSearchBand_AddRef(IFileSearchBand* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IFileSearchBand_Release(IFileSearchBand* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IFileSearchBand_GetTypeInfoCount(IFileSearchBand* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IFileSearchBand_GetTypeInfo(IFileSearchBand* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IFileSearchBand_GetIDsOfNames(IFileSearchBand* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IFileSearchBand_Invoke(IFileSearchBand* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IFileSearchBand methods ***/
static FORCEINLINE HRESULT IFileSearchBand_SetFocus(IFileSearchBand* This) {
    return This->lpVtbl->SetFocus(This);
}
static FORCEINLINE HRESULT IFileSearchBand_SetSearchParameters(IFileSearchBand* This,BSTR *pbstrSearchID,VARIANT_BOOL bNavToResults,VARIANT *pvarScope,VARIANT *pvarQueryFile) {
    return This->lpVtbl->SetSearchParameters(This,pbstrSearchID,bNavToResults,pvarScope,pvarQueryFile);
}
static FORCEINLINE HRESULT IFileSearchBand_get_SearchID(IFileSearchBand* This,BSTR *pbstrSearchID) {
    return This->lpVtbl->get_SearchID(This,pbstrSearchID);
}
static FORCEINLINE HRESULT IFileSearchBand_get_Scope(IFileSearchBand* This,VARIANT *pvarScope) {
    return This->lpVtbl->get_Scope(This,pvarScope);
}
static FORCEINLINE HRESULT IFileSearchBand_get_QueryFile(IFileSearchBand* This,VARIANT *pvarFile) {
    return This->lpVtbl->get_QueryFile(This,pvarFile);
}
#endif
#endif

#endif


#endif  /* __IFileSearchBand_INTERFACE_DEFINED__ */

/*****************************************************************************
 * FileSearchBand coclass
 */

DEFINE_GUID(CLSID_FileSearchBand, 0xc4ee31f3, 0x4768, 0x11d2, 0xbe,0x5c, 0x00,0xa0,0xc9,0xa8,0x3d,0xa1);

#ifdef __cplusplus
class DECLSPEC_UUID("c4ee31f3-4768-11d2-be5c-00a0c9a83da1") FileSearchBand;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(FileSearchBand, 0xc4ee31f3, 0x4768, 0x11d2, 0xbe,0x5c, 0x00,0xa0,0xc9,0xa8,0x3d,0xa1)
#endif
#endif

/*****************************************************************************
 * IWebWizardHost interface
 */
#ifndef __IWebWizardHost_INTERFACE_DEFINED__
#define __IWebWizardHost_INTERFACE_DEFINED__

DEFINE_GUID(IID_IWebWizardHost, 0x18bcc359, 0x4990, 0x4bfb, 0xb9,0x51, 0x3c,0x83,0x70,0x2b,0xe5,0xf9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("18bcc359-4990-4bfb-b951-3c83702be5f9")
IWebWizardHost : public IDispatch
{
    virtual HRESULT STDMETHODCALLTYPE FinalBack(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE FinalNext(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Cancel(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Caption(
        BSTR bstrCaption) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Caption(
        BSTR *pbstrCaption) = 0;

    virtual HRESULT STDMETHODCALLTYPE put_Property(
        BSTR bstrPropertyName,
        VARIANT *pvProperty) = 0;

    virtual HRESULT STDMETHODCALLTYPE get_Property(
        BSTR bstrPropertyName,
        VARIANT *pvProperty) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetWizardButtons(
        VARIANT_BOOL vfEnableBack,
        VARIANT_BOOL vfEnableNext,
        VARIANT_BOOL vfLastPage) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetHeaderText(
        BSTR bstrHeaderTitle,
        BSTR bstrHeaderSubtitle) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IWebWizardHost, 0x18bcc359, 0x4990, 0x4bfb, 0xb9,0x51, 0x3c,0x83,0x70,0x2b,0xe5,0xf9)
#endif
#else
typedef struct IWebWizardHostVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IWebWizardHost *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IWebWizardHost *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IWebWizardHost *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        IWebWizardHost *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        IWebWizardHost *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        IWebWizardHost *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        IWebWizardHost *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IWebWizardHost methods ***/
    HRESULT (STDMETHODCALLTYPE *FinalBack)(
        IWebWizardHost *This);

    HRESULT (STDMETHODCALLTYPE *FinalNext)(
        IWebWizardHost *This);

    HRESULT (STDMETHODCALLTYPE *Cancel)(
        IWebWizardHost *This);

    HRESULT (STDMETHODCALLTYPE *put_Caption)(
        IWebWizardHost *This,
        BSTR bstrCaption);

    HRESULT (STDMETHODCALLTYPE *get_Caption)(
        IWebWizardHost *This,
        BSTR *pbstrCaption);

    HRESULT (STDMETHODCALLTYPE *put_Property)(
        IWebWizardHost *This,
        BSTR bstrPropertyName,
        VARIANT *pvProperty);

    HRESULT (STDMETHODCALLTYPE *get_Property)(
        IWebWizardHost *This,
        BSTR bstrPropertyName,
        VARIANT *pvProperty);

    HRESULT (STDMETHODCALLTYPE *SetWizardButtons)(
        IWebWizardHost *This,
        VARIANT_BOOL vfEnableBack,
        VARIANT_BOOL vfEnableNext,
        VARIANT_BOOL vfLastPage);

    HRESULT (STDMETHODCALLTYPE *SetHeaderText)(
        IWebWizardHost *This,
        BSTR bstrHeaderTitle,
        BSTR bstrHeaderSubtitle);

    END_INTERFACE
} IWebWizardHostVtbl;

interface IWebWizardHost {
    CONST_VTBL IWebWizardHostVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IWebWizardHost_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IWebWizardHost_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IWebWizardHost_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define IWebWizardHost_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define IWebWizardHost_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define IWebWizardHost_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define IWebWizardHost_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IWebWizardHost methods ***/
#define IWebWizardHost_FinalBack(This) (This)->lpVtbl->FinalBack(This)
#define IWebWizardHost_FinalNext(This) (This)->lpVtbl->FinalNext(This)
#define IWebWizardHost_Cancel(This) (This)->lpVtbl->Cancel(This)
#define IWebWizardHost_put_Caption(This,bstrCaption) (This)->lpVtbl->put_Caption(This,bstrCaption)
#define IWebWizardHost_get_Caption(This,pbstrCaption) (This)->lpVtbl->get_Caption(This,pbstrCaption)
#define IWebWizardHost_put_Property(This,bstrPropertyName,pvProperty) (This)->lpVtbl->put_Property(This,bstrPropertyName,pvProperty)
#define IWebWizardHost_get_Property(This,bstrPropertyName,pvProperty) (This)->lpVtbl->get_Property(This,bstrPropertyName,pvProperty)
#define IWebWizardHost_SetWizardButtons(This,vfEnableBack,vfEnableNext,vfLastPage) (This)->lpVtbl->SetWizardButtons(This,vfEnableBack,vfEnableNext,vfLastPage)
#define IWebWizardHost_SetHeaderText(This,bstrHeaderTitle,bstrHeaderSubtitle) (This)->lpVtbl->SetHeaderText(This,bstrHeaderTitle,bstrHeaderSubtitle)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IWebWizardHost_QueryInterface(IWebWizardHost* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IWebWizardHost_AddRef(IWebWizardHost* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IWebWizardHost_Release(IWebWizardHost* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT IWebWizardHost_GetTypeInfoCount(IWebWizardHost* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT IWebWizardHost_GetTypeInfo(IWebWizardHost* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT IWebWizardHost_GetIDsOfNames(IWebWizardHost* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT IWebWizardHost_Invoke(IWebWizardHost* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IWebWizardHost methods ***/
static FORCEINLINE HRESULT IWebWizardHost_FinalBack(IWebWizardHost* This) {
    return This->lpVtbl->FinalBack(This);
}
static FORCEINLINE HRESULT IWebWizardHost_FinalNext(IWebWizardHost* This) {
    return This->lpVtbl->FinalNext(This);
}
static FORCEINLINE HRESULT IWebWizardHost_Cancel(IWebWizardHost* This) {
    return This->lpVtbl->Cancel(This);
}
static FORCEINLINE HRESULT IWebWizardHost_put_Caption(IWebWizardHost* This,BSTR bstrCaption) {
    return This->lpVtbl->put_Caption(This,bstrCaption);
}
static FORCEINLINE HRESULT IWebWizardHost_get_Caption(IWebWizardHost* This,BSTR *pbstrCaption) {
    return This->lpVtbl->get_Caption(This,pbstrCaption);
}
static FORCEINLINE HRESULT IWebWizardHost_put_Property(IWebWizardHost* This,BSTR bstrPropertyName,VARIANT *pvProperty) {
    return This->lpVtbl->put_Property(This,bstrPropertyName,pvProperty);
}
static FORCEINLINE HRESULT IWebWizardHost_get_Property(IWebWizardHost* This,BSTR bstrPropertyName,VARIANT *pvProperty) {
    return This->lpVtbl->get_Property(This,bstrPropertyName,pvProperty);
}
static FORCEINLINE HRESULT IWebWizardHost_SetWizardButtons(IWebWizardHost* This,VARIANT_BOOL vfEnableBack,VARIANT_BOOL vfEnableNext,VARIANT_BOOL vfLastPage) {
    return This->lpVtbl->SetWizardButtons(This,vfEnableBack,vfEnableNext,vfLastPage);
}
static FORCEINLINE HRESULT IWebWizardHost_SetHeaderText(IWebWizardHost* This,BSTR bstrHeaderTitle,BSTR bstrHeaderSubtitle) {
    return This->lpVtbl->SetHeaderText(This,bstrHeaderTitle,bstrHeaderSubtitle);
}
#endif
#endif

#endif


#endif  /* __IWebWizardHost_INTERFACE_DEFINED__ */

/*****************************************************************************
 * INewWDEvents interface
 */
#ifndef __INewWDEvents_INTERFACE_DEFINED__
#define __INewWDEvents_INTERFACE_DEFINED__

DEFINE_GUID(IID_INewWDEvents, 0x0751c551, 0x7568, 0x41c9, 0x8e,0x5b, 0xe2,0x2e,0x38,0x91,0x92,0x36);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0751c551-7568-41c9-8e5b-e22e38919236")
INewWDEvents : public IWebWizardHost
{
    virtual HRESULT STDMETHODCALLTYPE PassportAuthenticate(
        BSTR bstrSignInUrl,
        VARIANT_BOOL *pvfAuthenitcated) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(INewWDEvents, 0x0751c551, 0x7568, 0x41c9, 0x8e,0x5b, 0xe2,0x2e,0x38,0x91,0x92,0x36)
#endif
#else
typedef struct INewWDEventsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        INewWDEvents *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        INewWDEvents *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        INewWDEvents *This);

    /*** IDispatch methods ***/
    HRESULT (STDMETHODCALLTYPE *GetTypeInfoCount)(
        INewWDEvents *This,
        UINT *pctinfo);

    HRESULT (STDMETHODCALLTYPE *GetTypeInfo)(
        INewWDEvents *This,
        UINT iTInfo,
        LCID lcid,
        ITypeInfo **ppTInfo);

    HRESULT (STDMETHODCALLTYPE *GetIDsOfNames)(
        INewWDEvents *This,
        REFIID riid,
        LPOLESTR *rgszNames,
        UINT cNames,
        LCID lcid,
        DISPID *rgDispId);

    HRESULT (STDMETHODCALLTYPE *Invoke)(
        INewWDEvents *This,
        DISPID dispIdMember,
        REFIID riid,
        LCID lcid,
        WORD wFlags,
        DISPPARAMS *pDispParams,
        VARIANT *pVarResult,
        EXCEPINFO *pExcepInfo,
        UINT *puArgErr);

    /*** IWebWizardHost methods ***/
    HRESULT (STDMETHODCALLTYPE *FinalBack)(
        INewWDEvents *This);

    HRESULT (STDMETHODCALLTYPE *FinalNext)(
        INewWDEvents *This);

    HRESULT (STDMETHODCALLTYPE *Cancel)(
        INewWDEvents *This);

    HRESULT (STDMETHODCALLTYPE *put_Caption)(
        INewWDEvents *This,
        BSTR bstrCaption);

    HRESULT (STDMETHODCALLTYPE *get_Caption)(
        INewWDEvents *This,
        BSTR *pbstrCaption);

    HRESULT (STDMETHODCALLTYPE *put_Property)(
        INewWDEvents *This,
        BSTR bstrPropertyName,
        VARIANT *pvProperty);

    HRESULT (STDMETHODCALLTYPE *get_Property)(
        INewWDEvents *This,
        BSTR bstrPropertyName,
        VARIANT *pvProperty);

    HRESULT (STDMETHODCALLTYPE *SetWizardButtons)(
        INewWDEvents *This,
        VARIANT_BOOL vfEnableBack,
        VARIANT_BOOL vfEnableNext,
        VARIANT_BOOL vfLastPage);

    HRESULT (STDMETHODCALLTYPE *SetHeaderText)(
        INewWDEvents *This,
        BSTR bstrHeaderTitle,
        BSTR bstrHeaderSubtitle);

    /*** INewWDEvents methods ***/
    HRESULT (STDMETHODCALLTYPE *PassportAuthenticate)(
        INewWDEvents *This,
        BSTR bstrSignInUrl,
        VARIANT_BOOL *pvfAuthenitcated);

    END_INTERFACE
} INewWDEventsVtbl;

interface INewWDEvents {
    CONST_VTBL INewWDEventsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define INewWDEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define INewWDEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
#define INewWDEvents_Release(This) (This)->lpVtbl->Release(This)
/*** IDispatch methods ***/
#define INewWDEvents_GetTypeInfoCount(This,pctinfo) (This)->lpVtbl->GetTypeInfoCount(This,pctinfo)
#define INewWDEvents_GetTypeInfo(This,iTInfo,lcid,ppTInfo) (This)->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo)
#define INewWDEvents_GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId) (This)->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId)
#define INewWDEvents_Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr) (This)->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr)
/*** IWebWizardHost methods ***/
#define INewWDEvents_FinalBack(This) (This)->lpVtbl->FinalBack(This)
#define INewWDEvents_FinalNext(This) (This)->lpVtbl->FinalNext(This)
#define INewWDEvents_Cancel(This) (This)->lpVtbl->Cancel(This)
#define INewWDEvents_put_Caption(This,bstrCaption) (This)->lpVtbl->put_Caption(This,bstrCaption)
#define INewWDEvents_get_Caption(This,pbstrCaption) (This)->lpVtbl->get_Caption(This,pbstrCaption)
#define INewWDEvents_put_Property(This,bstrPropertyName,pvProperty) (This)->lpVtbl->put_Property(This,bstrPropertyName,pvProperty)
#define INewWDEvents_get_Property(This,bstrPropertyName,pvProperty) (This)->lpVtbl->get_Property(This,bstrPropertyName,pvProperty)
#define INewWDEvents_SetWizardButtons(This,vfEnableBack,vfEnableNext,vfLastPage) (This)->lpVtbl->SetWizardButtons(This,vfEnableBack,vfEnableNext,vfLastPage)
#define INewWDEvents_SetHeaderText(This,bstrHeaderTitle,bstrHeaderSubtitle) (This)->lpVtbl->SetHeaderText(This,bstrHeaderTitle,bstrHeaderSubtitle)
/*** INewWDEvents methods ***/
#define INewWDEvents_PassportAuthenticate(This,bstrSignInUrl,pvfAuthenitcated) (This)->lpVtbl->PassportAuthenticate(This,bstrSignInUrl,pvfAuthenitcated)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT INewWDEvents_QueryInterface(INewWDEvents* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG INewWDEvents_AddRef(INewWDEvents* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG INewWDEvents_Release(INewWDEvents* This) {
    return This->lpVtbl->Release(This);
}
/*** IDispatch methods ***/
static FORCEINLINE HRESULT INewWDEvents_GetTypeInfoCount(INewWDEvents* This,UINT *pctinfo) {
    return This->lpVtbl->GetTypeInfoCount(This,pctinfo);
}
static FORCEINLINE HRESULT INewWDEvents_GetTypeInfo(INewWDEvents* This,UINT iTInfo,LCID lcid,ITypeInfo **ppTInfo) {
    return This->lpVtbl->GetTypeInfo(This,iTInfo,lcid,ppTInfo);
}
static FORCEINLINE HRESULT INewWDEvents_GetIDsOfNames(INewWDEvents* This,REFIID riid,LPOLESTR *rgszNames,UINT cNames,LCID lcid,DISPID *rgDispId) {
    return This->lpVtbl->GetIDsOfNames(This,riid,rgszNames,cNames,lcid,rgDispId);
}
static FORCEINLINE HRESULT INewWDEvents_Invoke(INewWDEvents* This,DISPID dispIdMember,REFIID riid,LCID lcid,WORD wFlags,DISPPARAMS *pDispParams,VARIANT *pVarResult,EXCEPINFO *pExcepInfo,UINT *puArgErr) {
    return This->lpVtbl->Invoke(This,dispIdMember,riid,lcid,wFlags,pDispParams,pVarResult,pExcepInfo,puArgErr);
}
/*** IWebWizardHost methods ***/
static FORCEINLINE HRESULT INewWDEvents_FinalBack(INewWDEvents* This) {
    return This->lpVtbl->FinalBack(This);
}
static FORCEINLINE HRESULT INewWDEvents_FinalNext(INewWDEvents* This) {
    return This->lpVtbl->FinalNext(This);
}
static FORCEINLINE HRESULT INewWDEvents_Cancel(INewWDEvents* This) {
    return This->lpVtbl->Cancel(This);
}
static FORCEINLINE HRESULT INewWDEvents_put_Caption(INewWDEvents* This,BSTR bstrCaption) {
    return This->lpVtbl->put_Caption(This,bstrCaption);
}
static FORCEINLINE HRESULT INewWDEvents_get_Caption(INewWDEvents* This,BSTR *pbstrCaption) {
    return This->lpVtbl->get_Caption(This,pbstrCaption);
}
static FORCEINLINE HRESULT INewWDEvents_put_Property(INewWDEvents* This,BSTR bstrPropertyName,VARIANT *pvProperty) {
    return This->lpVtbl->put_Property(This,bstrPropertyName,pvProperty);
}
static FORCEINLINE HRESULT INewWDEvents_get_Property(INewWDEvents* This,BSTR bstrPropertyName,VARIANT *pvProperty) {
    return This->lpVtbl->get_Property(This,bstrPropertyName,pvProperty);
}
static FORCEINLINE HRESULT INewWDEvents_SetWizardButtons(INewWDEvents* This,VARIANT_BOOL vfEnableBack,VARIANT_BOOL vfEnableNext,VARIANT_BOOL vfLastPage) {
    return This->lpVtbl->SetWizardButtons(This,vfEnableBack,vfEnableNext,vfLastPage);
}
static FORCEINLINE HRESULT INewWDEvents_SetHeaderText(INewWDEvents* This,BSTR bstrHeaderTitle,BSTR bstrHeaderSubtitle) {
    return This->lpVtbl->SetHeaderText(This,bstrHeaderTitle,bstrHeaderSubtitle);
}
/*** INewWDEvents methods ***/
static FORCEINLINE HRESULT INewWDEvents_PassportAuthenticate(INewWDEvents* This,BSTR bstrSignInUrl,VARIANT_BOOL *pvfAuthenitcated) {
    return This->lpVtbl->PassportAuthenticate(This,bstrSignInUrl,pvfAuthenitcated);
}
#endif
#endif

#endif


#endif  /* __INewWDEvents_INTERFACE_DEFINED__ */

#endif /* __Shell32_LIBRARY_DEFINED__ */
/*****************************************************************************
 * IAutoComplete interface
 */
#ifndef __IAutoComplete_INTERFACE_DEFINED__
#define __IAutoComplete_INTERFACE_DEFINED__

typedef IAutoComplete *LPAUTOCOMPLETE;
DEFINE_GUID(IID_IAutoComplete, 0x00bb2762, 0x6a77, 0x11d0, 0xa5,0x35, 0x00,0xc0,0x4f,0xd7,0xd0,0x62);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("00bb2762-6a77-11d0-a535-00c04fd7d062")
IAutoComplete : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Init(
        HWND hwndEdit,
        IUnknown *punkACL,
        LPCWSTR pwszRegKeyPath,
        LPCWSTR pwszQuickComplete) = 0;

    virtual HRESULT STDMETHODCALLTYPE Enable(
        WINBOOL fEnable) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAutoComplete, 0x00bb2762, 0x6a77, 0x11d0, 0xa5,0x35, 0x00,0xc0,0x4f,0xd7,0xd0,0x62)
#endif
#else
typedef struct IAutoCompleteVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IAutoComplete *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IAutoComplete *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IAutoComplete *This);

    /*** IAutoComplete methods ***/
    HRESULT (STDMETHODCALLTYPE *Init)(
        IAutoComplete *This,
        HWND hwndEdit,
        IUnknown *punkACL,
        LPCWSTR pwszRegKeyPath,
        LPCWSTR pwszQuickComplete);

    HRESULT (STDMETHODCALLTYPE *Enable)(
        IAutoComplete *This,
        WINBOOL fEnable);

    END_INTERFACE
} IAutoCompleteVtbl;

interface IAutoComplete {
    CONST_VTBL IAutoCompleteVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAutoComplete_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAutoComplete_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAutoComplete_Release(This) (This)->lpVtbl->Release(This)
/*** IAutoComplete methods ***/
#define IAutoComplete_Init(This,hwndEdit,punkACL,pwszRegKeyPath,pwszQuickComplete) (This)->lpVtbl->Init(This,hwndEdit,punkACL,pwszRegKeyPath,pwszQuickComplete)
#define IAutoComplete_Enable(This,fEnable) (This)->lpVtbl->Enable(This,fEnable)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IAutoComplete_QueryInterface(IAutoComplete* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IAutoComplete_AddRef(IAutoComplete* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IAutoComplete_Release(IAutoComplete* This) {
    return This->lpVtbl->Release(This);
}
/*** IAutoComplete methods ***/
static FORCEINLINE HRESULT IAutoComplete_Init(IAutoComplete* This,HWND hwndEdit,IUnknown *punkACL,LPCWSTR pwszRegKeyPath,LPCWSTR pwszQuickComplete) {
    return This->lpVtbl->Init(This,hwndEdit,punkACL,pwszRegKeyPath,pwszQuickComplete);
}
static FORCEINLINE HRESULT IAutoComplete_Enable(IAutoComplete* This,WINBOOL fEnable) {
    return This->lpVtbl->Enable(This,fEnable);
}
#endif
#endif

#endif


#endif  /* __IAutoComplete_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IAutoComplete2 interface
 */
#ifndef __IAutoComplete2_INTERFACE_DEFINED__
#define __IAutoComplete2_INTERFACE_DEFINED__

typedef IAutoComplete2 *LPAUTOCOMPLETE2;
typedef enum _tagAUTOCOMPLETEOPTIONS {
    ACO_NONE = 0x0,
    ACO_AUTOSUGGEST = 0x1,
    ACO_AUTOAPPEND = 0x2,
    ACO_SEARCH = 0x4,
    ACO_FILTERPREFIXES = 0x8,
    ACO_USETAB = 0x10,
    ACO_UPDOWNKEYDROPSLIST = 0x20,
    ACO_RTLREADING = 0x40,
    ACO_WORD_FILTER = 0x80,
    ACO_NOPREFIXFILTERING = 0x100
} AUTOCOMPLETEOPTIONS;
DEFINE_GUID(IID_IAutoComplete2, 0xeac04bc0, 0x3791, 0x11d2, 0xbb,0x95, 0x00,0x60,0x97,0x7b,0x46,0x4c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("eac04bc0-3791-11d2-bb95-0060977b464c")
IAutoComplete2 : public IAutoComplete
{
    virtual HRESULT STDMETHODCALLTYPE SetOptions(
        DWORD dwFlag) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOptions(
        DWORD *pdwFlag) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IAutoComplete2, 0xeac04bc0, 0x3791, 0x11d2, 0xbb,0x95, 0x00,0x60,0x97,0x7b,0x46,0x4c)
#endif
#else
typedef struct IAutoComplete2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IAutoComplete2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IAutoComplete2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IAutoComplete2 *This);

    /*** IAutoComplete methods ***/
    HRESULT (STDMETHODCALLTYPE *Init)(
        IAutoComplete2 *This,
        HWND hwndEdit,
        IUnknown *punkACL,
        LPCWSTR pwszRegKeyPath,
        LPCWSTR pwszQuickComplete);

    HRESULT (STDMETHODCALLTYPE *Enable)(
        IAutoComplete2 *This,
        WINBOOL fEnable);

    /*** IAutoComplete2 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetOptions)(
        IAutoComplete2 *This,
        DWORD dwFlag);

    HRESULT (STDMETHODCALLTYPE *GetOptions)(
        IAutoComplete2 *This,
        DWORD *pdwFlag);

    END_INTERFACE
} IAutoComplete2Vtbl;

interface IAutoComplete2 {
    CONST_VTBL IAutoComplete2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IAutoComplete2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IAutoComplete2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IAutoComplete2_Release(This) (This)->lpVtbl->Release(This)
/*** IAutoComplete methods ***/
#define IAutoComplete2_Init(This,hwndEdit,punkACL,pwszRegKeyPath,pwszQuickComplete) (This)->lpVtbl->Init(This,hwndEdit,punkACL,pwszRegKeyPath,pwszQuickComplete)
#define IAutoComplete2_Enable(This,fEnable) (This)->lpVtbl->Enable(This,fEnable)
/*** IAutoComplete2 methods ***/
#define IAutoComplete2_SetOptions(This,dwFlag) (This)->lpVtbl->SetOptions(This,dwFlag)
#define IAutoComplete2_GetOptions(This,pdwFlag) (This)->lpVtbl->GetOptions(This,pdwFlag)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IAutoComplete2_QueryInterface(IAutoComplete2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IAutoComplete2_AddRef(IAutoComplete2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IAutoComplete2_Release(IAutoComplete2* This) {
    return This->lpVtbl->Release(This);
}
/*** IAutoComplete methods ***/
static FORCEINLINE HRESULT IAutoComplete2_Init(IAutoComplete2* This,HWND hwndEdit,IUnknown *punkACL,LPCWSTR pwszRegKeyPath,LPCWSTR pwszQuickComplete) {
    return This->lpVtbl->Init(This,hwndEdit,punkACL,pwszRegKeyPath,pwszQuickComplete);
}
static FORCEINLINE HRESULT IAutoComplete2_Enable(IAutoComplete2* This,WINBOOL fEnable) {
    return This->lpVtbl->Enable(This,fEnable);
}
/*** IAutoComplete2 methods ***/
static FORCEINLINE HRESULT IAutoComplete2_SetOptions(IAutoComplete2* This,DWORD dwFlag) {
    return This->lpVtbl->SetOptions(This,dwFlag);
}
static FORCEINLINE HRESULT IAutoComplete2_GetOptions(IAutoComplete2* This,DWORD *pdwFlag) {
    return This->lpVtbl->GetOptions(This,pdwFlag);
}
#endif
#endif

#endif


#endif  /* __IAutoComplete2_INTERFACE_DEFINED__ */


/*****************************************************************************
 * IEnumACString interface
 */
#ifndef __IEnumACString_INTERFACE_DEFINED__
#define __IEnumACString_INTERFACE_DEFINED__

typedef IEnumACString *PENUMACSTRING;
typedef IEnumACString *LPENUMACSTRING;
typedef enum _tagACENUMOPTION {
    ACEO_NONE = 0x0,
    ACEO_MOSTRECENTFIRST = 0x1,
    ACEO_FIRSTUNUSED = 0x10000
} ACENUMOPTION;
DEFINE_GUID(IID_IEnumACString, 0x8e74c210, 0xcf9d, 0x4eaf, 0xa4,0x03, 0x73,0x56,0x42,0x8f,0x0a,0x5a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8e74c210-cf9d-4eaf-a403-7356428f0a5a")
IEnumACString : public IEnumString
{
    virtual HRESULT STDMETHODCALLTYPE NextItem(
        LPWSTR pszUrl,
        ULONG cchMax,
        ULONG *pulSortIndex) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetEnumOptions(
        DWORD dwOptions) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEnumOptions(
        DWORD *pdwOptions) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IEnumACString, 0x8e74c210, 0xcf9d, 0x4eaf, 0xa4,0x03, 0x73,0x56,0x42,0x8f,0x0a,0x5a)
#endif
#else
typedef struct IEnumACStringVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IEnumACString *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IEnumACString *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IEnumACString *This);

    /*** IEnumString methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IEnumACString *This,
        ULONG celt,
        LPOLESTR *rgelt,
        ULONG *pceltFetched);

    HRESULT (STDMETHODCALLTYPE *Skip)(
        IEnumACString *This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        IEnumACString *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        IEnumACString *This,
        IEnumString **ppenum);

    /*** IEnumACString methods ***/
    HRESULT (STDMETHODCALLTYPE *NextItem)(
        IEnumACString *This,
        LPWSTR pszUrl,
        ULONG cchMax,
        ULONG *pulSortIndex);

    HRESULT (STDMETHODCALLTYPE *SetEnumOptions)(
        IEnumACString *This,
        DWORD dwOptions);

    HRESULT (STDMETHODCALLTYPE *GetEnumOptions)(
        IEnumACString *This,
        DWORD *pdwOptions);

    END_INTERFACE
} IEnumACStringVtbl;

interface IEnumACString {
    CONST_VTBL IEnumACStringVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IEnumACString_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IEnumACString_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IEnumACString_Release(This) (This)->lpVtbl->Release(This)
/*** IEnumString methods ***/
#define IEnumACString_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
#define IEnumACString_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define IEnumACString_Reset(This) (This)->lpVtbl->Reset(This)
#define IEnumACString_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
/*** IEnumACString methods ***/
#define IEnumACString_NextItem(This,pszUrl,cchMax,pulSortIndex) (This)->lpVtbl->NextItem(This,pszUrl,cchMax,pulSortIndex)
#define IEnumACString_SetEnumOptions(This,dwOptions) (This)->lpVtbl->SetEnumOptions(This,dwOptions)
#define IEnumACString_GetEnumOptions(This,pdwOptions) (This)->lpVtbl->GetEnumOptions(This,pdwOptions)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IEnumACString_QueryInterface(IEnumACString* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IEnumACString_AddRef(IEnumACString* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IEnumACString_Release(IEnumACString* This) {
    return This->lpVtbl->Release(This);
}
/*** IEnumString methods ***/
static FORCEINLINE HRESULT IEnumACString_Next(IEnumACString* This,ULONG celt,LPOLESTR *rgelt,ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,rgelt,pceltFetched);
}
static FORCEINLINE HRESULT IEnumACString_Skip(IEnumACString* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT IEnumACString_Reset(IEnumACString* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT IEnumACString_Clone(IEnumACString* This,IEnumString **ppenum) {
    return This->lpVtbl->Clone(This,ppenum);
}
/*** IEnumACString methods ***/
static FORCEINLINE HRESULT IEnumACString_NextItem(IEnumACString* This,LPWSTR pszUrl,ULONG cchMax,ULONG *pulSortIndex) {
    return This->lpVtbl->NextItem(This,pszUrl,cchMax,pulSortIndex);
}
static FORCEINLINE HRESULT IEnumACString_SetEnumOptions(IEnumACString* This,DWORD dwOptions) {
    return This->lpVtbl->SetEnumOptions(This,dwOptions);
}
static FORCEINLINE HRESULT IEnumACString_GetEnumOptions(IEnumACString* This,DWORD *pdwOptions) {
    return This->lpVtbl->GetEnumOptions(This,pdwOptions);
}
#endif
#endif

#endif


#endif  /* __IEnumACString_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDataObjectAsyncCapability interface
 */
#ifndef __IDataObjectAsyncCapability_INTERFACE_DEFINED__
#define __IDataObjectAsyncCapability_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDataObjectAsyncCapability, 0x3d8b0590, 0xf691, 0x11d2, 0x8e,0xa9, 0x00,0x60,0x97,0xdf,0x5b,0xd4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3d8b0590-f691-11d2-8ea9-006097df5bd4")
IDataObjectAsyncCapability : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetAsyncMode(
        WINBOOL fDoOpAsync) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAsyncMode(
        WINBOOL *pfIsOpAsync) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartOperation(
        IBindCtx *pbcReserved) = 0;

    virtual HRESULT STDMETHODCALLTYPE InOperation(
        WINBOOL *pfInAsyncOp) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndOperation(
        HRESULT hResult,
        IBindCtx *pbcReserved,
        DWORD dwEffects) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDataObjectAsyncCapability, 0x3d8b0590, 0xf691, 0x11d2, 0x8e,0xa9, 0x00,0x60,0x97,0xdf,0x5b,0xd4)
#endif
#else
typedef struct IDataObjectAsyncCapabilityVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDataObjectAsyncCapability *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDataObjectAsyncCapability *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDataObjectAsyncCapability *This);

    /*** IDataObjectAsyncCapability methods ***/
    HRESULT (STDMETHODCALLTYPE *SetAsyncMode)(
        IDataObjectAsyncCapability *This,
        WINBOOL fDoOpAsync);

    HRESULT (STDMETHODCALLTYPE *GetAsyncMode)(
        IDataObjectAsyncCapability *This,
        WINBOOL *pfIsOpAsync);

    HRESULT (STDMETHODCALLTYPE *StartOperation)(
        IDataObjectAsyncCapability *This,
        IBindCtx *pbcReserved);

    HRESULT (STDMETHODCALLTYPE *InOperation)(
        IDataObjectAsyncCapability *This,
        WINBOOL *pfInAsyncOp);

    HRESULT (STDMETHODCALLTYPE *EndOperation)(
        IDataObjectAsyncCapability *This,
        HRESULT hResult,
        IBindCtx *pbcReserved,
        DWORD dwEffects);

    END_INTERFACE
} IDataObjectAsyncCapabilityVtbl;

interface IDataObjectAsyncCapability {
    CONST_VTBL IDataObjectAsyncCapabilityVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDataObjectAsyncCapability_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDataObjectAsyncCapability_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDataObjectAsyncCapability_Release(This) (This)->lpVtbl->Release(This)
/*** IDataObjectAsyncCapability methods ***/
#define IDataObjectAsyncCapability_SetAsyncMode(This,fDoOpAsync) (This)->lpVtbl->SetAsyncMode(This,fDoOpAsync)
#define IDataObjectAsyncCapability_GetAsyncMode(This,pfIsOpAsync) (This)->lpVtbl->GetAsyncMode(This,pfIsOpAsync)
#define IDataObjectAsyncCapability_StartOperation(This,pbcReserved) (This)->lpVtbl->StartOperation(This,pbcReserved)
#define IDataObjectAsyncCapability_InOperation(This,pfInAsyncOp) (This)->lpVtbl->InOperation(This,pfInAsyncOp)
#define IDataObjectAsyncCapability_EndOperation(This,hResult,pbcReserved,dwEffects) (This)->lpVtbl->EndOperation(This,hResult,pbcReserved,dwEffects)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDataObjectAsyncCapability_QueryInterface(IDataObjectAsyncCapability* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDataObjectAsyncCapability_AddRef(IDataObjectAsyncCapability* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDataObjectAsyncCapability_Release(IDataObjectAsyncCapability* This) {
    return This->lpVtbl->Release(This);
}
/*** IDataObjectAsyncCapability methods ***/
static FORCEINLINE HRESULT IDataObjectAsyncCapability_SetAsyncMode(IDataObjectAsyncCapability* This,WINBOOL fDoOpAsync) {
    return This->lpVtbl->SetAsyncMode(This,fDoOpAsync);
}
static FORCEINLINE HRESULT IDataObjectAsyncCapability_GetAsyncMode(IDataObjectAsyncCapability* This,WINBOOL *pfIsOpAsync) {
    return This->lpVtbl->GetAsyncMode(This,pfIsOpAsync);
}
static FORCEINLINE HRESULT IDataObjectAsyncCapability_StartOperation(IDataObjectAsyncCapability* This,IBindCtx *pbcReserved) {
    return This->lpVtbl->StartOperation(This,pbcReserved);
}
static FORCEINLINE HRESULT IDataObjectAsyncCapability_InOperation(IDataObjectAsyncCapability* This,WINBOOL *pfInAsyncOp) {
    return This->lpVtbl->InOperation(This,pfInAsyncOp);
}
static FORCEINLINE HRESULT IDataObjectAsyncCapability_EndOperation(IDataObjectAsyncCapability* This,HRESULT hResult,IBindCtx *pbcReserved,DWORD dwEffects) {
    return This->lpVtbl->EndOperation(This,hResult,pbcReserved,dwEffects);
}
#endif
#endif

#endif


#endif  /* __IDataObjectAsyncCapability_INTERFACE_DEFINED__ */

#endif
/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);
ULONG           __RPC_USER VARIANT_UserSize     (ULONG *, ULONG, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserMarshal  (ULONG *, unsigned char *, VARIANT *);
unsigned char * __RPC_USER VARIANT_UserUnmarshal(ULONG *, unsigned char *, VARIANT *);
void            __RPC_USER VARIANT_UserFree     (ULONG *, VARIANT *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __shldisp_h__ */
