[pkg-wine-party] [SCM] Debian Wine Gecko packaging branch, master, updated. debian/1.4+dfsg1-3-7-ge0758d0

Stephen Kitt steve at sk2.org
Tue Jun 4 23:03:28 UTC 2013


The following commit has been merged in the master branch:
commit 7e8f8059f46d01bce586638ae3fff86ecd7120de
Author: Stephen Kitt <steve at sk2.org>
Date:   Wed Jun 5 00:56:19 2013 +0200

    Update header files for mingw-w64 2.0.8 building wine-gecko 1.5.

diff --git a/debian/include/_mingw.h b/debian/include/_mingw.h
new file mode 100644
index 0000000..5ced9ec
--- /dev/null
+++ b/debian/include/_mingw.h
@@ -0,0 +1,691 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _INC__MINGW_H
+#define _INC__MINGW_H
+
+#include "_mingw_mac.h"
+
+/* C/C++ specific language defines.  */
+#ifdef _WIN64
+#ifdef __stdcall
+#undef __stdcall
+#endif
+#define __stdcall
+#endif
+
+#ifndef __GNUC__
+# ifndef __MINGW_IMPORT
+#  define __MINGW_IMPORT  __declspec(dllimport)
+# endif
+# ifndef _CRTIMP
+#  define _CRTIMP  __declspec(dllimport)
+# endif
+# define __DECLSPEC_SUPPORTED
+# define __attribute__(x) /* nothing */
+#else /* __GNUC__ */
+# ifdef __declspec
+#  ifndef __MINGW_IMPORT
+/* Note the extern. This is needed to work around GCC's
+limitations in handling dllimport attribute.  */
+#   define __MINGW_IMPORT  extern __attribute__ ((__dllimport__))
+#  endif
+#  ifndef _CRTIMP
+#    undef __USE_CRTIMP
+#    if !defined (_CRTBLD) && !defined (_SYSCRT)
+#      define __USE_CRTIMP 1
+#    endif
+#    ifdef __USE_CRTIMP
+#      define _CRTIMP  __attribute__ ((__dllimport__))
+#    else
+#      define _CRTIMP
+#    endif
+#  endif
+#  define __DECLSPEC_SUPPORTED
+# else /* __declspec */
+#  undef __DECLSPEC_SUPPORTED
+#  undef __MINGW_IMPORT
+#  ifndef _CRTIMP
+#   define _CRTIMP
+#  endif
+# endif /* __declspec */
+#endif /* __GNUC__ */
+
+#if __GNUC__
+#define __MINGW_GCC_VERSION	(__GNUC__	* 10000	+ \
+				 __GNUC_MINOR__	* 100	+ \
+				 __GNUC_PATCHLEVEL__)
+#else
+#define __MINGW_GCC_VERSION				0
+#endif
+
+#if defined (__GNUC__) && defined (__GNUC_MINOR__)
+#define __MINGW_GNUC_PREREQ(major, minor) \
+  (__GNUC__ > (major) \
+   || (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
+#else
+#define __MINGW_GNUC_PREREQ(major, minor)  0
+#endif
+
+#if defined (_MSC_VER)
+#define __MINGW_MSC_PREREQ(major, minor) \
+  (_MSC_VER >= (major * 100 + minor * 10))
+#else
+#define __MINGW_MSC_PREREQ(major, minor)   0
+#endif
+
+#ifdef _MSC_VER
+#define USE___UUIDOF	1
+#else
+#define USE___UUIDOF	0
+#endif
+
+#ifdef __cplusplus
+# define __CRT_INLINE inline
+#elif defined(_MSC_VER)
+# define __CRT_INLINE __inline
+#else
+# if ( __MINGW_GNUC_PREREQ(4, 3)  &&  __STDC_VERSION__ >= 199901L) \
+     || (defined (__clang__))
+#  define __CRT_INLINE extern inline __attribute__((__gnu_inline__))
+# else
+#  define __CRT_INLINE extern __inline__
+# endif
+#endif
+
+#if !defined(__MINGW_INTRIN_INLINE) && defined(__GNUC__)
+#define __MINGW_INTRIN_INLINE extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
+#endif
+
+#ifdef __NO_INLINE__
+#undef __CRT__NO_INLINE
+#define __CRT__NO_INLINE 1
+#endif
+
+#ifdef __cplusplus
+# define __UNUSED_PARAM(x)
+#else
+# ifdef __GNUC__
+#  define __UNUSED_PARAM(x) x __attribute__ ((__unused__))
+# else
+#  define __UNUSED_PARAM(x) x
+# endif
+#endif
+
+#ifndef __GNUC__
+# ifdef _MSC_VER
+#  define __restrict__  __restrict
+# else
+#  define __restrict__	/* nothing */
+# endif
+#endif /* !__GNUC__ */
+
+#if __MINGW_GNUC_PREREQ (3,1) && !defined __GNUG__
+# define __restrict_arr __restrict
+#elif defined(_MSC_VER)
+# define __restrict_arr __restrict
+#else
+# ifdef __GNUC__
+#  define __restrict_arr        /* Not supported in old GCC.  */
+# else
+#  if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
+#   define __restrict_arr       restrict
+#  else
+#   define __restrict_arr       /* Not supported.  */
+#  endif
+# endif
+#endif
+
+#ifdef __GNUC__
+#define __MINGW_ATTRIB_NORETURN __attribute__ ((__noreturn__))
+#define __MINGW_ATTRIB_CONST __attribute__ ((__const__))
+#elif __MINGW_MSC_PREREQ(12, 0)
+#define __MINGW_ATTRIB_NORETURN __declspec(noreturn)
+#define __MINGW_ATTRIB_CONST
+#else
+#define __MINGW_ATTRIB_NORETURN
+#define __MINGW_ATTRIB_CONST
+#endif
+
+#if __MINGW_GNUC_PREREQ (3, 0)
+#define __MINGW_ATTRIB_MALLOC __attribute__ ((__malloc__))
+#define __MINGW_ATTRIB_PURE __attribute__ ((__pure__))
+#elif __MINGW_MSC_PREREQ(14, 0)
+#define __MINGW_ATTRIB_MALLOC __declspec(noalias) __declspec(restrict)
+#define __MINGW_ATTRIB_PURE
+#else
+#define __MINGW_ATTRIB_MALLOC
+#define __MINGW_ATTRIB_PURE
+#endif
+
+/* Attribute `nonnull' was valid as of gcc 3.3.  We don't use GCC's
+   variadiac macro facility, because variadic macros cause syntax
+   errors with  --traditional-cpp.  */
+#if  __MINGW_GNUC_PREREQ (3, 3)
+#define __MINGW_ATTRIB_NONNULL(arg) __attribute__ ((__nonnull__ (arg)))
+#else
+#define __MINGW_ATTRIB_NONNULL(arg)
+#endif /* GNUC >= 3.3 */
+
+#ifdef __GNUC__
+#define __MINGW_ATTRIB_UNUSED __attribute__ ((__unused__))
+#else
+#define __MINGW_ATTRIB_UNUSED
+#endif /* ATTRIBUTE_UNUSED */
+
+#if  __MINGW_GNUC_PREREQ (3, 1)
+#define __MINGW_ATTRIB_USED __attribute__ ((__used__))
+#define __MINGW_ATTRIB_DEPRECATED __attribute__ ((__deprecated__))
+#elif __MINGW_MSC_PREREQ(12, 0)
+#define __MINGW_ATTRIB_USED
+#define __MINGW_ATTRIB_DEPRECATED __declspec(deprecated)
+#else
+#define __MINGW_ATTRIB_USED __MINGW_ATTRIB_UNUSED
+#define __MINGW_ATTRIB_DEPRECATED
+#endif /* GNUC >= 3.1 */
+
+#if  __MINGW_GNUC_PREREQ (3, 3)
+#define __MINGW_NOTHROW __attribute__ ((__nothrow__))
+#elif __MINGW_MSC_PREREQ(12, 0) && defined (__cplusplus)
+#define __MINGW_NOTHROW __declspec(nothrow)
+#else
+#define __MINGW_NOTHROW
+#endif
+
+#if __MINGW_GNUC_PREREQ (4, 4)
+#define __MINGW_ATTRIB_NO_OPTIMIZE __attribute__((__optimize__ ("0")))
+#else
+#define __MINGW_ATTRIB_NO_OPTIMIZE
+#endif
+
+#if __MINGW_GNUC_PREREQ (4, 4)
+#define __MINGW_PRAGMA_PARAM(x) _Pragma (#x)
+#elif __MINGW_MSC_PREREQ (13, 1)
+#define __MINGW_PRAGMA_PARAM(x) __pragma (x)
+#else
+#define __MINGW_PRAGMA_PARAM(x)
+#endif
+
+#define __MINGW_BROKEN_INTERFACE(x) \
+  __MINGW_PRAGMA_PARAM(message ("Interface " _CRT_STRINGIZE(x) \
+  " has unverified layout."))
+
+#ifdef __MINGW_MSVC_COMPAT_WARNINGS
+# if __MINGW_GNUC_PREREQ (4, 5)
+#  define __MINGW_ATTRIB_DEPRECATED_STR(X) __attribute__ ((__deprecated__ (X)))
+# else
+#  define __MINGW_ATTRIB_DEPRECATED_STR(X) __MINGW_ATTRIB_DEPRECATED
+# endif
+#else
+# define __MINGW_ATTRIB_DEPRECATED_STR(X)
+#endif
+
+#define __MINGW_SEC_WARN_STR "This function or variable may be unsafe, use _CRT_SECURE_NO_WARNINGS to disable deprecation"
+#define __MINGW_MSVC2005_DEPREC_STR "This POSIX function is deprecated beginning in Visual C++ 2005, use _CRT_NONSTDC_NO_DEPRECATE to disable deprecation"
+
+#if !defined (_CRT_NONSTDC_NO_DEPRECATE)
+# define __MINGW_ATTRIB_DEPRECATED_MSVC2005 __MINGW_ATTRIB_DEPRECATED_STR (__MINGW_MSVC2005_DEPREC_STR)
+#else
+# define __MINGW_ATTRIB_DEPRECATED_MSVC2005
+#endif
+
+#if !defined (_CRT_SECURE_NO_WARNINGS)
+# define __MINGW_ATTRIB_DEPRECATED_SEC_WARN __MINGW_ATTRIB_DEPRECATED_STR (__MINGW_SEC_WARN_STR)
+#else
+# define __MINGW_ATTRIB_DEPRECATED_SEC_WARN
+#endif
+
+#ifndef __MSVCRT_VERSION__
+/*  High byte is the major version, low byte is the minor. */
+# define __MSVCRT_VERSION__ 0x0700
+#endif
+
+
+#ifndef WINVER
+#define WINVER 0x0502
+#endif
+
+#ifndef _WIN32_WINNT
+#define _WIN32_WINNT 0x502
+#endif
+
+#ifndef _INT128_DEFINED
+#define _INT128_DEFINED
+#ifdef __GNUC__
+#define __int8 char
+#define __int16 short
+#define __int32 int
+#define __int64 long long
+#ifdef _WIN64
+#if (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 1)) && \
+    !defined(__SIZEOF_INT128__) /* clang >= 3.1 has __int128 but no size macro */
+#define __SIZEOF_INT128__ 16
+#endif
+#ifndef __SIZEOF_INT128__
+typedef int __int128 __attribute__ ((__mode__ (TI)));
+#endif
+#endif
+#endif /* __GNUC__ */
+#endif /* _INT128_DEFINED */
+
+#ifdef __GNUC__
+#define __ptr32
+#define __ptr64
+#ifndef __unaligned
+#define __unaligned
+#endif
+#ifndef __w64
+#define __w64
+#endif
+#ifdef __cplusplus
+#define __forceinline inline __attribute__((__always_inline__))
+#else
+#define __forceinline extern __inline__ __attribute__((__always_inline__,__gnu_inline__))
+#endif /* __cplusplus */
+#endif /* __GNUC__ */
+
+#ifndef _WIN32
+#error Only Win32 target is supported!
+#endif
+
+#ifndef __nothrow
+#ifdef __cplusplus
+#define __nothrow __declspec(nothrow)
+#else
+#define __nothrow
+#endif
+#endif /* __nothrow */
+
+#undef _CRT_PACKING
+#define _CRT_PACKING 8
+
+#include <vadefs.h>	/* other headers depend on this include */
+
+#pragma pack(push,_CRT_PACKING)
+
+#ifndef _CRT_STRINGIZE
+#define __CRT_STRINGIZE(_Value) #_Value
+#define _CRT_STRINGIZE(_Value) __CRT_STRINGIZE(_Value)
+#endif /* _CRT_STRINGIZE */
+
+#ifndef _CRT_WIDE
+#define __CRT_WIDE(_String) L ## _String
+#define _CRT_WIDE(_String) __CRT_WIDE(_String)
+#endif /* _CRT_WIDE */
+
+#ifndef _W64
+#define _W64
+#endif
+
+#ifndef _CRTIMP_NOIA64
+#ifdef __ia64__
+#define _CRTIMP_NOIA64
+#else
+#define _CRTIMP_NOIA64 _CRTIMP
+#endif
+#endif /* _CRTIMP_NOIA64 */
+
+#ifndef _CRTIMP2
+#define _CRTIMP2 _CRTIMP
+#endif
+
+#ifndef _CRTIMP_ALTERNATIVE
+#define _CRTIMP_ALTERNATIVE _CRTIMP
+#define _CRT_ALTERNATIVE_IMPORTED
+#endif /* _CRTIMP_ALTERNATIVE */
+
+#ifndef _MRTIMP2
+#define _MRTIMP2  _CRTIMP
+#endif
+
+/* We have to define _DLL for gcc based mingw version. This define is set
+   by VC, when DLL-based runtime is used. So, gcc based runtime just have
+   DLL-base runtime, therefore this define has to be set.
+   As our headers are possibly used by windows compiler having a static
+   C-runtime, we make this definition gnu compiler specific here.  */
+#if !defined (_DLL) && defined (__GNUC__)
+#define _DLL
+#endif
+
+#ifndef _MT
+#define _MT
+#endif
+
+#ifndef _MCRTIMP
+#define _MCRTIMP _CRTIMP
+#endif
+
+#ifndef _CRTIMP_PURE
+#define _CRTIMP_PURE _CRTIMP
+#endif
+
+#ifndef _PGLOBAL
+#define _PGLOBAL
+#endif
+
+#ifndef _AGLOBAL
+#define _AGLOBAL
+#endif
+
+#define _SECURECRT_FILL_BUFFER_PATTERN 0xFD
+#define _CRT_DEPRECATE_TEXT(_Text) __declspec(deprecated)
+
+#ifndef _CRT_INSECURE_DEPRECATE_MEMORY
+#define _CRT_INSECURE_DEPRECATE_MEMORY(_Replacement)
+#endif
+
+#ifndef _CRT_INSECURE_DEPRECATE_GLOBALS
+#define _CRT_INSECURE_DEPRECATE_GLOBALS(_Replacement)
+#endif
+
+#ifndef _CRT_MANAGED_HEAP_DEPRECATE
+#define _CRT_MANAGED_HEAP_DEPRECATE
+#endif
+
+#ifndef _CRT_OBSOLETE
+#define _CRT_OBSOLETE(_NewItem)
+#endif
+
+#ifndef _SIZE_T_DEFINED
+#define _SIZE_T_DEFINED
+#undef size_t
+#ifdef _WIN64
+__MINGW_EXTENSION typedef unsigned __int64 size_t;
+#else
+typedef unsigned int size_t;
+#endif /* _WIN64 */
+#endif /* _SIZE_T_DEFINED */
+
+#ifndef _SSIZE_T_DEFINED
+#define _SSIZE_T_DEFINED
+#undef ssize_t
+#ifdef _WIN64
+__MINGW_EXTENSION typedef __int64 ssize_t;
+#else
+typedef int ssize_t;
+#endif /* _WIN64 */
+#endif /* _SSIZE_T_DEFINED */
+
+#ifndef _INTPTR_T_DEFINED
+#define _INTPTR_T_DEFINED
+#ifndef __intptr_t_defined
+#define __intptr_t_defined
+#undef intptr_t
+#ifdef _WIN64
+__MINGW_EXTENSION typedef __int64 intptr_t;
+#else
+typedef int intptr_t;
+#endif /* _WIN64 */
+#endif /* __intptr_t_defined */
+#endif /* _INTPTR_T_DEFINED */
+
+#ifndef _UINTPTR_T_DEFINED
+#define _UINTPTR_T_DEFINED
+#ifndef __uintptr_t_defined
+#define __uintptr_t_defined
+#undef uintptr_t
+#ifdef _WIN64
+__MINGW_EXTENSION typedef unsigned __int64 uintptr_t;
+#else
+typedef unsigned int uintptr_t;
+#endif /* _WIN64 */
+#endif /* __uintptr_t_defined */
+#endif /* _UINTPTR_T_DEFINED */
+
+#ifndef _PTRDIFF_T_DEFINED
+#define _PTRDIFF_T_DEFINED
+#ifndef _PTRDIFF_T_
+#define _PTRDIFF_T_
+#undef ptrdiff_t
+#ifdef _WIN64
+__MINGW_EXTENSION typedef __int64 ptrdiff_t;
+#else
+typedef int ptrdiff_t;
+#endif /* _WIN64 */
+#endif /* _PTRDIFF_T_ */
+#endif /* _PTRDIFF_T_DEFINED */
+
+#ifndef _WCHAR_T_DEFINED
+#define _WCHAR_T_DEFINED
+#ifndef __cplusplus
+typedef unsigned short wchar_t;
+#endif /* C++ */
+#endif /* _WCHAR_T_DEFINED */
+
+#ifndef _WCTYPE_T_DEFINED
+#define _WCTYPE_T_DEFINED
+#ifndef _WINT_T
+#define _WINT_T
+typedef unsigned short wint_t;
+typedef unsigned short wctype_t;
+#endif /* _WINT_T */
+#endif /* _WCTYPE_T_DEFINED */
+
+#if defined (_WIN32) && !defined (_WIN64) && !defined (__MINGW_USE_VC2005_COMPAT)/* && !(defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64)*/
+#ifndef _USE_32BIT_TIME_T
+#define _USE_32BIT_TIME_T
+#endif
+#endif
+
+#ifdef _USE_32BIT_TIME_T
+#ifdef _WIN64
+#error You cannot use 32-bit time_t (_USE_32BIT_TIME_T) with _WIN64
+#undef _USE_32BIT_TIME_T
+#endif
+#endif /* _USE_32BIT_TIME_T */
+
+#ifndef _ERRCODE_DEFINED
+#define _ERRCODE_DEFINED
+typedef int errno_t;
+#endif
+
+#ifndef _TIME32_T_DEFINED
+#define _TIME32_T_DEFINED
+typedef long __time32_t;
+#endif
+
+#ifndef _TIME64_T_DEFINED
+#define _TIME64_T_DEFINED
+__MINGW_EXTENSION typedef __int64 __time64_t;
+#endif /* _TIME64_T_DEFINED */
+
+#ifndef _TIME_T_DEFINED
+#define _TIME_T_DEFINED
+#ifdef _USE_32BIT_TIME_T
+typedef __time32_t time_t;
+#else
+typedef __time64_t time_t;
+#endif
+#endif /* _TIME_T_DEFINED */
+
+#ifndef _CONST_RETURN
+#define _CONST_RETURN
+#endif
+
+#ifndef UNALIGNED
+#if defined(_M_IA64) || defined(_M_AMD64)
+#define UNALIGNED __unaligned
+#else
+#define UNALIGNED
+#endif
+#endif /* UNALIGNED */
+
+#ifndef _CRT_ALIGN
+#ifdef  _MSC_VER
+#define _CRT_ALIGN(x) __declspec(align(x))
+#else /* __GNUC__ */
+#define _CRT_ALIGN(x) __attribute__ ((__aligned__ (x)))
+#endif
+#endif /* _CRT_ALIGN */
+
+#ifndef __CRTDECL
+#define __CRTDECL __cdecl
+#endif
+
+#define _ARGMAX 100
+
+#ifndef _TRUNCATE
+#define _TRUNCATE ((size_t)-1)
+#endif
+
+#ifndef _CRT_UNUSED
+#define _CRT_UNUSED(x) (void)x
+#endif
+
+#if defined(_POSIX) && !defined(__USE_MINGW_ANSI_STDIO)
+/* Enable __USE_MINGW_ANSI_STDIO if _POSIX defined
+ * and If user did _not_ specify it explicitly... */
+#  define __USE_MINGW_ANSI_STDIO			1
+#endif
+
+/* _dowildcard is an int that controls the globbing of the command line.
+ * The MinGW32 (mingw.org) runtime calls it _CRT_glob, so we are adding
+ * a compatibility definition here:  you can use either of _CRT_glob or
+ * _dowildcard .
+ * If _dowildcard is non-zero, the command line will be globbed:  *.*
+ * will be expanded to be all files in the startup directory.
+ * In the mingw-w64 library a _dowildcard variable is defined as being
+ * 0, therefore command line globbing is DISABLED by default. To turn it
+ * on and to leave wildcard command line processing MS's globbing code,
+ * include a line in one of your source modules defining _dowildcard and
+ * setting it to -1, like so:
+ * int _dowildcard = -1;
+ */
+#undef  _CRT_glob
+#define _CRT_glob _dowildcard
+
+
+#if defined(_MSC_VER) && !defined(_MSC_EXTENSIONS)
+#define NONAMELESSUNION		1
+#endif
+#if defined(NONAMELESSSTRUCT) && \
+   !defined(NONAMELESSUNION)
+#define NONAMELESSUNION		1
+#endif
+#if defined(NONAMELESSUNION)  && \
+   !defined(NONAMELESSSTRUCT)
+#define NONAMELESSSTRUCT	1
+#endif
+
+#ifndef __ANONYMOUS_DEFINED
+#define __ANONYMOUS_DEFINED
+#define _ANONYMOUS_UNION  __MINGW_EXTENSION
+#define _ANONYMOUS_STRUCT __MINGW_EXTENSION
+#ifndef NONAMELESSUNION
+#define _UNION_NAME(x)
+#define _STRUCT_NAME(x)
+#else /* NONAMELESSUNION */
+#define _UNION_NAME(x)  x
+#define _STRUCT_NAME(x) x
+#endif
+#endif	/* __ANONYMOUS_DEFINED */
+
+#ifndef DUMMYUNIONNAME
+# ifdef NONAMELESSUNION
+#  define DUMMYUNIONNAME  u
+#  define DUMMYUNIONNAME1 u1	/* Wine uses this variant */
+#  define DUMMYUNIONNAME2 u2
+#  define DUMMYUNIONNAME3 u3
+#  define DUMMYUNIONNAME4 u4
+#  define DUMMYUNIONNAME5 u5
+#  define DUMMYUNIONNAME6 u6
+#  define DUMMYUNIONNAME7 u7
+#  define DUMMYUNIONNAME8 u8
+#  define DUMMYUNIONNAME9 u9
+# else /* NONAMELESSUNION */
+#  define DUMMYUNIONNAME
+#  define DUMMYUNIONNAME1	/* Wine uses this variant */
+#  define DUMMYUNIONNAME2
+#  define DUMMYUNIONNAME3
+#  define DUMMYUNIONNAME4
+#  define DUMMYUNIONNAME5
+#  define DUMMYUNIONNAME6
+#  define DUMMYUNIONNAME7
+#  define DUMMYUNIONNAME8
+#  define DUMMYUNIONNAME9
+# endif
+#endif	/* DUMMYUNIONNAME */
+
+#ifndef DUMMYSTRUCTNAME
+# ifdef NONAMELESSUNION
+#  define DUMMYSTRUCTNAME  s
+#  define DUMMYSTRUCTNAME1 s1	/* Wine uses this variant */
+#  define DUMMYSTRUCTNAME2 s2
+#  define DUMMYSTRUCTNAME3 s3
+#  define DUMMYSTRUCTNAME4 s4
+#  define DUMMYSTRUCTNAME5 s5
+# else
+#  define DUMMYSTRUCTNAME
+#  define DUMMYSTRUCTNAME1	/* Wine uses this variant */
+#  define DUMMYSTRUCTNAME2
+#  define DUMMYSTRUCTNAME3
+#  define DUMMYSTRUCTNAME4
+#  define DUMMYSTRUCTNAME5
+# endif
+#endif /* DUMMYSTRUCTNAME */
+
+
+/* Macros for __uuidof template-based emulation */
+#if defined(__cplusplus) && (USE___UUIDOF == 0)
+
+#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)           \
+    extern "C++" {                                                      \
+    template<> inline const GUID &__mingw_uuidof<type>() {              \
+        static const IID __uuid_inst = {l,w1,w2, {b1,b2,b3,b4,b5,b6,b7,b8}}; \
+        return __uuid_inst;                                             \
+    }                                                                   \
+    template<> inline const GUID &__mingw_uuidof<type*>() {             \
+        return __mingw_uuidof<type>();                                  \
+    }                                                                   \
+    }
+
+#define __uuidof(type) __mingw_uuidof<typeof(type)>()
+
+#else
+
+#define __CRT_UUID_DECL(type,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
+
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifdef __MINGW_INTRIN_INLINE
+#if !defined (__clang__)
+void __cdecl __debugbreak(void);
+__MINGW_INTRIN_INLINE void __cdecl __debugbreak(void)
+{
+  __asm__ __volatile__("int $3");
+}
+#endif
+#endif
+
+/* mingw-w64 specific functions: */
+const char *__mingw_get_crt_info (void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#pragma pack(pop)
+
+#endif /* _INC__MINGW_H */
+
+#ifndef MINGW_SDK_INIT
+#define MINGW_SDK_INIT
+
+#define MINGW_HAS_SECURE_API 1
+
+#ifdef MINGW_HAS_SECURE_API
+#define __STDC_SECURE_LIB__ 200411L
+#define __GOT_SECURE_LIB__ __STDC_SECURE_LIB__
+#endif
+
+#include "sdks/_mingw_directx.h"
+#include "sdks/_mingw_ddk.h"
+
+#endif /* MINGW_SDK_INIT */
diff --git a/debian/include/_mingw_mac.h b/debian/include/_mingw_mac.h
new file mode 100644
index 0000000..7242bc1
--- /dev/null
+++ b/debian/include/_mingw_mac.h
@@ -0,0 +1,254 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+
+#ifndef _INC_CRTDEFS_MACRO
+#define _INC_CRTDEFS_MACRO
+
+#define __STRINGIFY(x) #x
+#define __MINGW64_STRINGIFY(x) __STRINGIFY(x)
+
+#define __MINGW64_VERSION_MAJOR	3
+#define __MINGW64_VERSION_MINOR	0
+
+/* This macro holds an monotonic increasing value, which indicates
+   a specific fix/patch is present on trunk.  This value isn't related to
+   minor/major version-macros.  It is increased on demand, if a big
+   fix was applied to trunk.  This macro gets just increased on trunk.  For
+   other branches its value won't be modified.  */
+
+#define __MINGW64_VERSION_RC    1
+
+#define __MINGW64_VERSION_STR	__MINGW64_STRINGIFY(__MINGW64_VERSION_MAJOR) "." __MINGW64_STRINGIFY(__MINGW64_VERSION_MINOR)
+#define __MINGW64_VERSION_STATE	"alpha"
+
+/* mingw.org's version macros: these make gcc to define
+   MINGW32_SUPPORTS_MT_EH and to use the _CRT_MT global
+   and the __mingwthr_key_dtor() function from the MinGW
+   CRT in its private gthr-win32.h header. */
+#define __MINGW32_MAJOR_VERSION 3
+#define __MINGW32_MINOR_VERSION 11
+
+#ifdef _WIN64
+/* MS does not prefix symbols by underscores for 64-bit.  */
+#ifndef __MINGW_USE_UNDERSCORE_PREFIX
+/* As we have to support older gcc version, which are using underscores
+   as symbol prefix for x64, we have to check here for the user label
+   prefix defined by gcc.  */
+#ifdef __USER_LABEL_PREFIX__
+#pragma push_macro ("_")
+#undef _
+#define _ 1
+#if (__USER_LABEL_PREFIX__ + 0) != 0
+#define __MINGW_USE_UNDERSCORE_PREFIX 1
+#else
+#define __MINGW_USE_UNDERSCORE_PREFIX 0
+#endif
+#undef _
+#pragma pop_macro ("_")
+#else
+#define __MINGW_USE_UNDERSCORE_PREFIX 0
+#endif
+#endif
+#else
+/* For 32-bits we have always to prefix by underscore.  */
+#undef __MINGW_USE_UNDERSCORE_PREFIX
+#define __MINGW_USE_UNDERSCORE_PREFIX 1
+#endif
+
+#if __MINGW_USE_UNDERSCORE_PREFIX == 0
+#define __MINGW_IMP_SYMBOL(sym)	__imp_##sym
+#define __MINGW_IMP_LSYMBOL(sym) __imp_##sym
+#define __MINGW_USYMBOL(sym) sym
+#define __MINGW_LSYMBOL(sym) _##sym
+#else
+#define __MINGW_IMP_SYMBOL(sym)	_imp__##sym
+#define __MINGW_IMP_LSYMBOL(sym) __imp__##sym
+#define __MINGW_USYMBOL(sym) _##sym
+#define __MINGW_LSYMBOL(sym) sym
+#endif
+
+/* Use alias for msvcr80 export of get/set_output_format.  */
+#ifndef __USE_MINGW_OUTPUT_FORMAT_EMU
+#define __USE_MINGW_OUTPUT_FORMAT_EMU 1
+#endif
+
+/* Set VC specific compiler target macros.  */
+#if defined(__x86_64) && defined(_X86_)
+#undef _X86_	/* _X86_ is not for __x86_64 */
+#endif
+
+#if defined(_X86_) && !defined(_M_IX86) && !defined(_M_IA64) \
+   && !defined(_M_AMD64) && !defined(__x86_64)
+#if defined(__i486__)
+#define _M_IX86 400
+#elif defined(__i586__)
+#define _M_IX86 500
+#else
+/* This gives wrong (600 instead of 300) value if -march=i386 is specified
+   but we cannot check for__i386__ as it is defined for all 32-bit CPUs. */
+#define _M_IX86 600
+#endif
+#endif
+
+#if defined(__x86_64) && !defined(_M_IX86) && !defined(_M_IA64) \
+   && !defined(_M_AMD64)
+#define _M_AMD64 100
+#define _M_X64 100
+#endif
+
+#if defined(__ia64__) && !defined(_M_IX86) && !defined(_M_IA64) \
+   && !defined(_M_AMD64) && !defined(_X86_) && !defined(__x86_64)
+#define _M_IA64 100
+#endif
+
+#if defined(__arm__) && !defined(_M_ARM)
+#define _M_ARM 100
+#ifndef _ARM_
+#define _ARM_ 1
+#endif
+#endif
+
+#ifndef __PTRDIFF_TYPE__
+#ifdef _WIN64
+#define __PTRDIFF_TYPE__ long long int
+#else
+#define __PTRDIFF_TYPE__ long int
+#endif
+#endif
+
+#ifndef __SIZE_TYPE__
+#ifdef _WIN64
+#define __SIZE_TYPE__ long long unsigned int
+#else
+#define __SIZE_TYPE__ long unsigned int
+#endif
+#endif
+
+#ifndef __WCHAR_TYPE__
+#define __WCHAR_TYPE__ unsigned short
+#endif
+#ifndef __WINT_TYPE__
+#define __WINT_TYPE__  unsigned short
+#endif
+
+#undef __MINGW_EXTENSION
+#if defined(__GNUC__) || defined(__GNUG__)
+#define __MINGW_EXTENSION	__extension__
+#else
+#define __MINGW_EXTENSION
+#endif
+
+/* Special case nameless struct/union.  */
+#ifndef __C89_NAMELESS
+#define __C89_NAMELESS __MINGW_EXTENSION
+
+#define __C89_NAMELESSSTRUCTNAME
+#define __C89_NAMELESSSTRUCTNAME1
+#define __C89_NAMELESSSTRUCTNAME2
+#define __C89_NAMELESSSTRUCTNAME3
+#define __C89_NAMELESSSTRUCTNAME4
+#define __C89_NAMELESSSTRUCTNAME5
+#define __C89_NAMELESSUNIONNAME
+#define __C89_NAMELESSUNIONNAME1
+#define __C89_NAMELESSUNIONNAME2
+#define __C89_NAMELESSUNIONNAME3
+#define __C89_NAMELESSUNIONNAME4
+#define __C89_NAMELESSUNIONNAME5
+#define __C89_NAMELESSUNIONNAME6
+#define __C89_NAMELESSUNIONNAME7
+#define __C89_NAMELESSUNIONNAME8
+#endif
+
+#ifndef __GNU_EXTENSION
+#define __GNU_EXTENSION		__MINGW_EXTENSION
+#endif
+
+/* MinGW-w64 has some additional C99 printf/scanf feature support.
+   So we add some helper macros to ease recognition of them.  */
+#define __MINGW_HAVE_ANSI_C99_PRINTF 1
+#define __MINGW_HAVE_WIDE_C99_PRINTF 1
+#define __MINGW_HAVE_ANSI_C99_SCANF 1
+#define __MINGW_HAVE_WIDE_C99_SCANF 1
+
+#ifdef __MINGW_USE_BROKEN_INTERFACE
+#define __MINGW_POISON_NAME(__IFACE) __IFACE
+#else
+#define __MINGW_POISON_NAME(__IFACE)\
+  __IFACE##_layout_has_not_been_verified_and_its_declaration_is_most_likely_incorrect
+#endif
+
+#ifndef __MSABI_LONG
+#ifndef __LP64__
+#define __MSABI_LONG(x)  x ## l
+#else
+#define __MSABI_LONG(x)  x
+#endif
+#endif
+
+#if __GNUC__
+#define __MINGW_GCC_VERSION	(__GNUC__	* 10000	+ \
+				 __GNUC_MINOR__	* 100	+ \
+				 __GNUC_PATCHLEVEL__)
+#else
+#define __MINGW_GCC_VERSION				0
+#endif
+
+#if defined (__GNUC__) && defined (__GNUC_MINOR__)
+#define __MINGW_GNUC_PREREQ(major, minor) \
+  (__GNUC__ > (major) \
+   || (__GNUC__ == (major) && __GNUC_MINOR__ >= (minor)))
+#else
+#define __MINGW_GNUC_PREREQ(major, minor)  0
+#endif
+
+#if defined (_MSC_VER)
+#define __MINGW_MSC_PREREQ(major, minor) \
+  (_MSC_VER >= (major * 100 + minor * 10))
+#else
+#define __MINGW_MSC_PREREQ(major, minor)   0
+#endif
+
+#ifdef __MINGW_MSVC_COMPAT_WARNINGS
+# if __MINGW_GNUC_PREREQ (4, 5)
+#  define __MINGW_ATTRIB_DEPRECATED_STR(X) __attribute__ ((__deprecated__ (X)))
+# else
+#  define __MINGW_ATTRIB_DEPRECATED_STR(X) __MINGW_ATTRIB_DEPRECATED
+# endif
+#else
+# define __MINGW_ATTRIB_DEPRECATED_STR(X)
+#endif
+
+#define __MINGW_SEC_WARN_STR "This function or variable may be unsafe, use _CRT_SECURE_NO_WARNINGS to disable deprecation"
+#define __MINGW_MSVC2005_DEPREC_STR "This POSIX function is deprecated beginning in Visual C++ 2005, use _CRT_NONSTDC_NO_DEPRECATE to disable deprecation"
+
+#if !defined (_CRT_NONSTDC_NO_DEPRECATE)
+# define __MINGW_ATTRIB_DEPRECATED_MSVC2005 __MINGW_ATTRIB_DEPRECATED_STR (__MINGW_MSVC2005_DEPREC_STR)
+#else
+# define __MINGW_ATTRIB_DEPRECATED_MSVC2005
+#endif
+
+#if !defined (_CRT_SECURE_NO_WARNINGS) || (_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES == 0)
+# define __MINGW_ATTRIB_DEPRECATED_SEC_WARN __MINGW_ATTRIB_DEPRECATED_STR (__MINGW_SEC_WARN_STR)
+#else
+# define __MINGW_ATTRIB_DEPRECATED_SEC_WARN
+#endif
+
+#define __MINGW_MS_PRINTF(__format,__args)  __attribute__((__format__(ms_printf, __format,__args)))
+#define __MINGW_MS_SCANF(__format,__args)   __attribute__((__format__(ms_scanf,  __format,__args)))
+#define __MINGW_GNU_PRINTF(__format,__args) __attribute__((__format__(gnu_printf,__format,__args)))
+#define __MINGW_GNU_SCANF(__format,__args)  __attribute__((__format__(gnu_scanf, __format,__args)))
+
+#undef __mingw_ovr
+#ifdef __cplusplus
+#define __mingw_ovr  inline __cdecl
+#elif defined (__GNUC__)
+#define __mingw_ovr static __attribute__ ((__unused__)) __inline__ __cdecl
+#else
+#define __mingw_ovr static __cdecl
+#endif
+
+#endif	/* _INC_CRTDEFS_MACRO */
+
diff --git a/debian/include/apisetcconv.h b/debian/include/apisetcconv.h
new file mode 100644
index 0000000..bf0045d
--- /dev/null
+++ b/debian/include/apisetcconv.h
@@ -0,0 +1,97 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+
+#ifndef _APISETCCONV_
+#define _APISETCCONV_
+
+#ifndef CMAPI
+#ifndef _CFGMGR32_
+#define CMAPI DECLSPEC_IMPORT
+#else
+#define CMAPI
+#endif
+#endif
+
+#ifndef CREDUIAPI
+#ifndef _CREDUI_
+#define CREDUIAPI DECLSPEC_IMPORT
+#else
+#define CREDUIAPI
+#endif
+#endif
+
+#ifndef WINABLEAPI
+#ifndef _USER32_
+#define WINABLEAPI DECLSPEC_IMPORT
+#else
+#define WINABLEAPI
+#endif
+#endif
+
+#ifndef WINADVAPI
+#ifndef _ADVAPI32_
+#define WINADVAPI DECLSPEC_IMPORT
+#else
+#define WINADVAPI
+#endif
+#endif
+
+#ifndef WINBASEAPI
+#ifndef _KERNEL32_
+#define WINBASEAPI DECLSPEC_IMPORT
+#else
+#define WINBASEAPI
+#endif
+#endif
+
+#ifndef WINUSERAPI
+#ifndef _USER32_
+#define WINUSERAPI DECLSPEC_IMPORT
+#else
+#define WINUSERAPI
+#endif
+#endif
+
+#ifndef ZAWPROXYAPI
+#ifndef _ZAWPROXY_
+#define ZAWPROXYAPI DECLSPEC_IMPORT
+#else
+#define ZAWPROXYAPI
+#endif
+#endif
+
+#ifndef WINCFGMGR32API
+#ifndef _SETUPAPI_
+#define WINCFGMGR32API DECLSPEC_IMPORT
+#else
+#define WINCFGMGR32API
+#endif
+#endif
+
+#ifndef WINDEVQUERYAPI
+#ifndef _CFGMGR32_
+#define WINDEVQUERYAPI DECLSPEC_IMPORT
+#else
+#define WINDEVQUERYAPI
+#endif
+#endif
+
+#ifndef WINSWDEVICEAPI
+#ifndef _CFGMGR32_
+#define WINSWDEVICEAPI DECLSPEC_IMPORT
+#else
+#define WINSWDEVICEAPI
+#endif
+#endif
+
+#ifndef WINPATHCCHAPI
+#ifndef STATIC_PATHCCH
+#define WINPATHCCHAPI WINBASEAPI 
+#else  
+#define WINPATHCCHAPI
+#endif  
+#endif
+
+#endif
diff --git a/debian/include/knownfolders.h b/debian/include/knownfolders.h
new file mode 100644
index 0000000..bf1466e
--- /dev/null
+++ b/debian/include/knownfolders.h
@@ -0,0 +1,142 @@
+/*
+ * Copyright 2010 Hans Leidekker for CodeWeavers
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#ifdef DEFINE_KNOWN_FOLDER
+#undef DEFINE_KNOWN_FOLDER
+#endif
+
+#ifdef INITGUID
+#ifdef __cplusplus
+#define DEFINE_KNOWN_FOLDER(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+        EXTERN_C const GUID name ; \
+        EXTERN_C const GUID name = \
+    { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
+#else
+#define DEFINE_KNOWN_FOLDER(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+        const GUID name ; \
+        const GUID name = \
+    { l, w1, w2, { b1, b2,  b3,  b4,  b5,  b6,  b7,  b8 } }
+#endif
+#else
+#define DEFINE_KNOWN_FOLDER(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
+    EXTERN_C const GUID name 
+#endif
+
+DEFINE_KNOWN_FOLDER(FOLDERID_AddNewPrograms,        0xde61d971, 0x5ebc, 0x4f02, 0xa3, 0xa9, 0x6c, 0x82, 0x89, 0x5e, 0x5c, 0x04);
+DEFINE_KNOWN_FOLDER(FOLDERID_AdminTools,            0x724ef170, 0xa42d, 0x4fef, 0x9f, 0x26, 0xb6, 0x0e, 0x84, 0x6f, 0xba, 0x4f);
+DEFINE_KNOWN_FOLDER(FOLDERID_AppUpdates,            0xa305ce99, 0xf527, 0x492b, 0x8b, 0x1a, 0x7e, 0x76, 0xfa, 0x98, 0xd6, 0xe4);
+DEFINE_KNOWN_FOLDER(FOLDERID_CDBurning,             0x9e52ab10, 0xf80d, 0x49df, 0xac, 0xb8, 0x43, 0x30, 0xf5, 0x68, 0x78, 0x55);
+DEFINE_KNOWN_FOLDER(FOLDERID_ChangeRemovePrograms,  0xdf7266ac, 0x9274, 0x4867, 0x8d, 0x55, 0x3b, 0xd6, 0x61, 0xde, 0x87, 0x2d);
+DEFINE_KNOWN_FOLDER(FOLDERID_CommonAdminTools,      0xd0384e7d, 0xbac3, 0x4797, 0x8f, 0x14, 0xcb, 0xa2, 0x29, 0xb3, 0x92, 0xb5);
+DEFINE_KNOWN_FOLDER(FOLDERID_CommonOEMLinks,        0xc1bae2d0, 0x10df, 0x4334, 0xbe, 0xdd, 0x7a, 0xa2, 0x0b, 0x22, 0x7a, 0x9d);
+DEFINE_KNOWN_FOLDER(FOLDERID_CommonPrograms,        0x0139d44e, 0x6afe, 0x49f2, 0x86, 0x90, 0x3d, 0xaf, 0xca, 0xe6, 0xff, 0xb8);
+DEFINE_KNOWN_FOLDER(FOLDERID_CommonStartMenu,       0xa4115719, 0xd62e, 0x491d, 0xaa, 0x7c, 0xe7, 0x4b, 0x8b, 0xe3, 0xb0, 0x67);
+DEFINE_KNOWN_FOLDER(FOLDERID_CommonStartup,         0x82a5ea35, 0xd9cd, 0x47c5, 0x96, 0x29, 0xe1, 0x5d, 0x2f, 0x71, 0x4e, 0x6e);
+DEFINE_KNOWN_FOLDER(FOLDERID_CommonTemplates,       0xb94237e7, 0x57ac, 0x4347, 0x91, 0x51, 0xb0, 0x8c, 0x6c, 0x32, 0xd1, 0xf7);
+DEFINE_KNOWN_FOLDER(FOLDERID_ComputerFolder,        0x0ac0837c, 0xbbf8, 0x452a, 0x85, 0x0d, 0x79, 0xd0, 0x8e, 0x66, 0x7c, 0xa7);
+DEFINE_KNOWN_FOLDER(FOLDERID_ConflictFolder,        0x4bfefb45, 0x347d, 0x4006, 0xa5, 0xbe, 0xac, 0x0c, 0xb0, 0x56, 0x71, 0x92);
+DEFINE_KNOWN_FOLDER(FOLDERID_ConnectionsFolder,     0x6f0cd92b, 0x2e97, 0x45d1, 0x88, 0xff, 0xb0, 0xd1, 0x86, 0xb8, 0xde, 0xdd);
+DEFINE_KNOWN_FOLDER(FOLDERID_Contacts,              0x56784854, 0xc6cb, 0x462b, 0x81, 0x69, 0x88, 0xe3, 0x50, 0xac, 0xb8, 0x82);
+DEFINE_KNOWN_FOLDER(FOLDERID_ControlPanelFolder,    0x82a74aeb, 0xaeb4, 0x465c, 0xa0, 0x14, 0xd0, 0x97, 0xee, 0x34, 0x6d, 0x63);
+DEFINE_KNOWN_FOLDER(FOLDERID_Cookies,               0x2b0f765d, 0xc0e9, 0x4171, 0x90, 0x8e, 0x08, 0xa6, 0x11, 0xb8, 0x4f, 0xf6);
+DEFINE_KNOWN_FOLDER(FOLDERID_Desktop,               0xb4bfcc3a, 0xdb2c, 0x424c, 0xb0, 0x29, 0x7f, 0xe9, 0x9a, 0x87, 0xc6, 0x41);
+DEFINE_KNOWN_FOLDER(FOLDERID_DeviceMetadataStore,   0x5ce4a5e9, 0xe4eb, 0x479d, 0xb8, 0x9f, 0x13, 0x0c, 0x02, 0x88, 0x61, 0x55);
+DEFINE_KNOWN_FOLDER(FOLDERID_Documents,             0xfdd39ad0, 0x238f, 0x46af, 0xad, 0xb4, 0x6c, 0x85, 0x48, 0x03, 0x69, 0xc7);
+DEFINE_KNOWN_FOLDER(FOLDERID_DocumentsLibrary,      0x7b0db17d, 0x9cd2, 0x4a93, 0x97, 0x33, 0x46, 0xcc, 0x89, 0x02, 0x2e, 0x7c);
+DEFINE_KNOWN_FOLDER(FOLDERID_Downloads,             0x374de290, 0x123f, 0x4565, 0x91, 0x64, 0x39, 0xc4, 0x92, 0x5e, 0x46, 0x7b);
+DEFINE_KNOWN_FOLDER(FOLDERID_Favorites,             0x1777f761, 0x68ad, 0x4d8a, 0x87, 0xbd, 0x30, 0xb7, 0x59, 0xfa, 0x33, 0xdd);
+DEFINE_KNOWN_FOLDER(FOLDERID_Fonts,                 0xfd228cb7, 0xae11, 0x4ae3, 0x86, 0x4c, 0x16, 0xf3, 0x91, 0x0a, 0xb8, 0xfe);
+DEFINE_KNOWN_FOLDER(FOLDERID_Games,                 0xcac52c1a, 0xb53d, 0x4edc, 0x92, 0xd7, 0x6b, 0x2e, 0x8a, 0xc1, 0x94, 0x34);
+DEFINE_KNOWN_FOLDER(FOLDERID_GameTasks,             0x054fae61, 0x4dd8, 0x4787, 0x80, 0xb6, 0x09, 0x02, 0x20, 0xc4, 0xb7, 0x00);
+DEFINE_KNOWN_FOLDER(FOLDERID_History,               0xd9dc8a3b, 0xb784, 0x432e, 0xa7, 0x81, 0x5a, 0x11, 0x30, 0xa7, 0x59, 0x63);
+DEFINE_KNOWN_FOLDER(FOLDERID_HomeGroup,             0x52528a6b, 0xb9e3, 0x4add, 0xb6, 0x0d, 0x58, 0x8c, 0x2d, 0xba, 0x84, 0x2d);
+DEFINE_KNOWN_FOLDER(FOLDERID_ImplicitAppShortcuts,  0xbcb5256f, 0x79f6, 0x4cee, 0xb7, 0x25, 0xdc, 0x34, 0xe4, 0x02, 0xfd, 0x46);
+DEFINE_KNOWN_FOLDER(FOLDERID_InternetCache,         0x352481e8, 0x33be, 0x4251, 0xba, 0x85, 0x60, 0x07, 0xca, 0xed, 0xcf, 0x9d);
+DEFINE_KNOWN_FOLDER(FOLDERID_InternetFolder,        0x4d9f7874, 0x4e0c, 0x4904, 0x96, 0x7b, 0x40, 0xb0, 0xd2, 0x0c, 0x3e, 0x4b);
+DEFINE_KNOWN_FOLDER(FOLDERID_Libraries,             0x1b3ea5dc, 0xb587, 0x4786, 0xb4, 0xef, 0xbd, 0x1d, 0xc3, 0x32, 0xae, 0xae);
+DEFINE_KNOWN_FOLDER(FOLDERID_Links,                 0xbfb9d5e0, 0xc6a9, 0x404c, 0xb2, 0xb2, 0xae, 0x6d, 0xb6, 0xaf, 0x49, 0x68);
+DEFINE_KNOWN_FOLDER(FOLDERID_LocalAppData,          0xf1b32785, 0x6fba, 0x4fcf, 0x9d, 0x55, 0x7b, 0x8e, 0x7f, 0x15, 0x70, 0x91);
+DEFINE_KNOWN_FOLDER(FOLDERID_LocalAppDataLow,       0xa520a1a4, 0x1780, 0x4ff6, 0xbd, 0x18, 0x16, 0x73, 0x43, 0xc5, 0xaf, 0x16);
+DEFINE_KNOWN_FOLDER(FOLDERID_LocalizedResourcesDir, 0x2a00375e, 0x224c, 0x49de, 0xb8, 0xd1, 0x44, 0x0d, 0xf7, 0xef, 0x3d, 0xdc);
+DEFINE_KNOWN_FOLDER(FOLDERID_Music,                 0x4bd8d571, 0x6d19, 0x48d3, 0xbe, 0x97, 0x42, 0x22, 0x20, 0x08, 0x0e, 0x43);
+DEFINE_KNOWN_FOLDER(FOLDERID_MusicLibrary,          0x2112ab0a, 0xc86a, 0x4ffe, 0xa3, 0x68, 0x0d, 0xe9, 0x6e, 0x47, 0x01, 0x2e);
+DEFINE_KNOWN_FOLDER(FOLDERID_NetHood,               0xc5abbf53, 0xe17f, 0x4121, 0x89, 0x00, 0x86, 0x62, 0x6f, 0xc2, 0xc9, 0x73);
+DEFINE_KNOWN_FOLDER(FOLDERID_NetworkFolder,         0xd20beec4, 0x5ca8, 0x4905, 0xae, 0x3b, 0xbf, 0x25, 0x1e, 0xa0, 0x9b, 0x53);
+DEFINE_KNOWN_FOLDER(FOLDERID_OriginalImages,        0x2c36c0aa, 0x5812, 0x4b87, 0xbf, 0xd0, 0x4c, 0xd0, 0xdf, 0xb1, 0x9b, 0x39);
+DEFINE_KNOWN_FOLDER(FOLDERID_PhotoAlbums,           0x69d2cf90, 0xfc33, 0x4fb7, 0x9a, 0x0c, 0xeb, 0xb0, 0xf0, 0xfc, 0xb4, 0x3c);
+DEFINE_KNOWN_FOLDER(FOLDERID_Pictures,              0x33e28130, 0x4e1e, 0x4676, 0x83, 0x5a, 0x98, 0x39, 0x5c, 0x3b, 0xc3, 0xbb);
+DEFINE_KNOWN_FOLDER(FOLDERID_PicturesLibrary,       0xa990ae9f, 0xa03b, 0x4e80, 0x94, 0xbc, 0x99, 0x12, 0xd7, 0x50, 0x41, 0x04);
+DEFINE_KNOWN_FOLDER(FOLDERID_Playlists,             0xde92c1c7, 0x837f, 0x4f69, 0xa3, 0xbb, 0x86, 0xe6, 0x31, 0x20, 0x4a, 0x23);
+DEFINE_KNOWN_FOLDER(FOLDERID_PrintersFolder,        0x76fc4e2d, 0xd6ad, 0x4519, 0xa6, 0x63, 0x37, 0xbd, 0x56, 0x06, 0x81, 0x85);
+DEFINE_KNOWN_FOLDER(FOLDERID_PrintHood,             0x9274bd8d, 0xcfd1, 0x41c3, 0xb3, 0x5e, 0xb1, 0x3f, 0x55, 0xa7, 0x58, 0xf4);
+DEFINE_KNOWN_FOLDER(FOLDERID_Profile,               0x5e6c858f, 0x0e22, 0x4760, 0x9a, 0xfe, 0xea, 0x33, 0x17, 0xb6, 0x71, 0x73);
+DEFINE_KNOWN_FOLDER(FOLDERID_ProgramData,           0x62ab5d82, 0xfdc1, 0x4dc3, 0xa9, 0xdd, 0x07, 0x0d, 0x1d, 0x49, 0x5d, 0x97);
+DEFINE_KNOWN_FOLDER(FOLDERID_ProgramFiles,          0x905e63b6, 0xc1bf, 0x494e, 0xb2, 0x9c, 0x65, 0xb7, 0x32, 0xd3, 0xd2, 0x1a);
+DEFINE_KNOWN_FOLDER(FOLDERID_ProgramFilesCommon,    0xf7f1ed05, 0x9f6d, 0x47a2, 0xaa, 0xae, 0x29, 0xd3, 0x17, 0xc6, 0xf0, 0x66);
+DEFINE_KNOWN_FOLDER(FOLDERID_ProgramFilesCommonX64, 0x6365d5a7, 0x0f0d, 0x45e5, 0x87, 0xf6, 0x0d, 0xa5, 0x6b, 0x6a, 0x4f, 0x7d);
+DEFINE_KNOWN_FOLDER(FOLDERID_ProgramFilesCommonX86, 0xde974d24, 0xd9c6, 0x4d3e, 0xbf, 0x91, 0xf4, 0x45, 0x51, 0x20, 0xb9, 0x17);
+DEFINE_KNOWN_FOLDER(FOLDERID_ProgramFilesX64,       0x6d809377, 0x6af0, 0x444b, 0x89, 0x57, 0xa3, 0x77, 0x3f, 0x02, 0x20, 0x0e);
+DEFINE_KNOWN_FOLDER(FOLDERID_ProgramFilesX86,       0x7c5a40ef, 0xa0fb, 0x4bfc, 0x87, 0x4a, 0xc0, 0xf2, 0xe0, 0xb9, 0xfa, 0x8e);
+DEFINE_KNOWN_FOLDER(FOLDERID_Programs,              0xa77f5d77, 0x2e2b, 0x44c3, 0xa6, 0xa2, 0xab, 0xa6, 0x01, 0x05, 0x4a, 0x51);
+DEFINE_KNOWN_FOLDER(FOLDERID_Public,                0xdfdf76a2, 0xc82a, 0x4d63, 0x90, 0x6a, 0x56, 0x44, 0xac, 0x45, 0x73, 0x85);
+DEFINE_KNOWN_FOLDER(FOLDERID_PublicDesktop,         0xc4aa340d, 0xf20f, 0x4863, 0xaf, 0xef, 0xf8, 0x7e, 0xf2, 0xe6, 0xba, 0x25);
+DEFINE_KNOWN_FOLDER(FOLDERID_PublicDocuments,       0xed4824af, 0xdce4, 0x45a8, 0x81, 0xe2, 0xfc, 0x79, 0x65, 0x08, 0x36, 0x34);
+DEFINE_KNOWN_FOLDER(FOLDERID_PublicDownloads,       0x3d644c9b, 0x1fb8, 0x4f30, 0x9b, 0x45, 0xf6, 0x70, 0x23, 0x5f, 0x79, 0xc0);
+DEFINE_KNOWN_FOLDER(FOLDERID_PublicGameTasks,       0xdebf2536, 0xe1a8, 0x4c59, 0xb6, 0xa2, 0x41, 0x45, 0x86, 0x47, 0x6a, 0xea);
+DEFINE_KNOWN_FOLDER(FOLDERID_PublicLibraries,       0x48daf80b, 0xe6cf, 0x4f4e, 0xb8, 0x00, 0x0e, 0x69, 0xd8, 0x4e, 0xe3, 0x84);
+DEFINE_KNOWN_FOLDER(FOLDERID_PublicMusic,           0x3214fab5, 0x9757, 0x4298, 0xbb, 0x61, 0x92, 0xa9, 0xde, 0xaa, 0x44, 0xff);
+DEFINE_KNOWN_FOLDER(FOLDERID_PublicPictures,        0xb6ebfb86, 0x6907, 0x413c, 0x9a, 0xf7, 0x4f, 0xc2, 0xab, 0xf0, 0x7c, 0xc5);
+DEFINE_KNOWN_FOLDER(FOLDERID_PublicRingtones,       0xe555ab60, 0x153b, 0x4d17, 0x9f, 0x04, 0xa5, 0xfe, 0x99, 0xfc, 0x15, 0xec);
+DEFINE_KNOWN_FOLDER(FOLDERID_PublicVideos,          0x2400183a, 0x6185, 0x49fb, 0xa2, 0xd8, 0x4a, 0x39, 0x2a, 0x60, 0x2b, 0xa3);
+DEFINE_KNOWN_FOLDER(FOLDERID_QuickLaunch,           0x52a4f021, 0x7b75, 0x48a9, 0x9f, 0x6b, 0x4b, 0x87, 0xa2, 0x10, 0xbc, 0x8f);
+DEFINE_KNOWN_FOLDER(FOLDERID_Recent,                0xae50c081, 0xebd2, 0x438a, 0x86, 0x55, 0x8a, 0x09, 0x2e, 0x34, 0x98, 0x7a);
+DEFINE_KNOWN_FOLDER(FOLDERID_RecordedTV,            0xbd85e001, 0x112e, 0x431e, 0x98, 0x3b, 0x7b, 0x15, 0xac, 0x09, 0xff, 0xf1);
+DEFINE_KNOWN_FOLDER(FOLDERID_RecordedTVLibrary,     0x1a6fdba2, 0xf42d, 0x4358, 0xa7, 0x98, 0xb7, 0x4d, 0x74, 0x59, 0x26, 0xc5);
+DEFINE_KNOWN_FOLDER(FOLDERID_RecycleBinFolder,      0xb7534046, 0x3ecb, 0x4c18, 0xbe, 0x4e, 0x64, 0xcd, 0x4c, 0xb7, 0xd6, 0xac);
+DEFINE_KNOWN_FOLDER(FOLDERID_ResourceDir,           0x8ad10c31, 0x2adb, 0x4296, 0xa8, 0xf7, 0xe4, 0x70, 0x12, 0x32, 0xc9, 0x72);
+DEFINE_KNOWN_FOLDER(FOLDERID_Ringtones,             0xc870044b, 0xf49e, 0x4126, 0xa9, 0xc3, 0xb5, 0x2a, 0x1f, 0xf4, 0x11, 0xe8);
+DEFINE_KNOWN_FOLDER(FOLDERID_RoamingAppData,        0x3eb685db, 0x65f9, 0x4cf6, 0xa0, 0x3a, 0xe3, 0xef, 0x65, 0x72, 0x9f, 0x3d);
+DEFINE_KNOWN_FOLDER(FOLDERID_SampleMusic,           0xb250c668, 0xf57d, 0x4ee1, 0xa6, 0x3c, 0x29, 0x0e, 0xe7, 0xd1, 0xaa, 0x1f);
+DEFINE_KNOWN_FOLDER(FOLDERID_SamplePictures,        0xc4900540, 0x2379, 0x4c75, 0x84, 0x4b, 0x64, 0xe6, 0xfa, 0xf8, 0x71, 0x6b);
+DEFINE_KNOWN_FOLDER(FOLDERID_SamplePlaylists,       0x15ca69b3, 0x30ee, 0x49c1, 0xac, 0xe1, 0x6b, 0x5e, 0xc3, 0x72, 0xaf, 0xb5);
+DEFINE_KNOWN_FOLDER(FOLDERID_SampleVideos,          0x859ead94, 0x2e85, 0x48ad, 0xa7, 0x1a, 0x09, 0x69, 0xcb, 0x56, 0xa6, 0xcd);
+DEFINE_KNOWN_FOLDER(FOLDERID_SavedGames,            0x4c5c32ff, 0xbb9d, 0x43b0, 0xb5, 0xb4, 0x2d, 0x72, 0xe5, 0x4e, 0xaa, 0xa4);
+DEFINE_KNOWN_FOLDER(FOLDERID_SavedSearches,         0x7d1d3a04, 0xdebb, 0x4115, 0x95, 0xcf, 0x2f, 0x29, 0xda, 0x29, 0x20, 0xda);
+DEFINE_KNOWN_FOLDER(FOLDERID_SEARCH_CSC,            0xee32e446, 0x31ca, 0x4aba, 0x81, 0x4f, 0xa5, 0xeb, 0xd2, 0xfd, 0x6d, 0x5e);
+DEFINE_KNOWN_FOLDER(FOLDERID_SearchHome,            0x190337d1, 0xb8ca, 0x4121, 0xa6, 0x39, 0x6d, 0x47, 0x2d, 0x16, 0x97, 0x2a);
+DEFINE_KNOWN_FOLDER(FOLDERID_SEARCH_MAPI,           0x98ec0e18, 0x2098, 0x4d44, 0x86, 0x44, 0x66, 0x97, 0x93, 0x15, 0xa2, 0x81);
+DEFINE_KNOWN_FOLDER(FOLDERID_SendTo,                0x8983036c, 0x27c0, 0x404b, 0x8f, 0x08, 0x10, 0x2d, 0x10, 0xdc, 0xfd, 0x74);
+DEFINE_KNOWN_FOLDER(FOLDERID_SidebarDefaultParts,   0x7b396e54, 0x9ec5, 0x4300, 0xbe, 0x0a, 0x24, 0x82, 0xeb, 0xae, 0x1a, 0x26);
+DEFINE_KNOWN_FOLDER(FOLDERID_SidebarParts,          0xa75d362e, 0x50fc, 0x4fb7, 0xac, 0x2c, 0xa8, 0xbe, 0xaa, 0x31, 0x44, 0x93);
+DEFINE_KNOWN_FOLDER(FOLDERID_StartMenu,             0x625b53c3, 0xab48, 0x4ec1, 0xba, 0x1f, 0xa1, 0xef, 0x41, 0x46, 0xfc, 0x19);
+DEFINE_KNOWN_FOLDER(FOLDERID_Startup,               0xb97d20bb, 0xf46a, 0x4c97, 0xba, 0x10, 0x5e, 0x36, 0x08, 0x43, 0x08, 0x54);
+DEFINE_KNOWN_FOLDER(FOLDERID_SyncManagerFolder,     0x43668bf8, 0xc14e, 0x49b2, 0x97, 0xc9, 0x74, 0x77, 0x84, 0xd7, 0x84, 0xb7);
+DEFINE_KNOWN_FOLDER(FOLDERID_SyncResultsFolder,     0x289a9a43, 0xbe44, 0x4057, 0xa4, 0x1b, 0x58, 0x7a, 0x76, 0xd7, 0xe7, 0xf9);
+DEFINE_KNOWN_FOLDER(FOLDERID_SyncSetupFolder,       0x0f214138, 0xb1d3, 0x4a90, 0xbb, 0xa9, 0x27, 0xcb, 0xc0, 0xc5, 0x38, 0x9a);
+DEFINE_KNOWN_FOLDER(FOLDERID_System,                0x1ac14e77, 0x02e7, 0x4e5d, 0xb7, 0x44, 0x2e, 0xb1, 0xae, 0x51, 0x98, 0xb7);
+DEFINE_KNOWN_FOLDER(FOLDERID_SystemX86,             0xd65231b0, 0xb2f1, 0x4857, 0xa4, 0xce, 0xa8, 0xe7, 0xc6, 0xea, 0x7d, 0x27);
+DEFINE_KNOWN_FOLDER(FOLDERID_Templates,             0xa63293e8, 0x664e, 0x48db, 0xa0, 0x79, 0xdf, 0x75, 0x9e, 0x05, 0x09, 0xf7);
+DEFINE_KNOWN_FOLDER(FOLDERID_UserPinned,            0x9e3995ab, 0x1f9c, 0x4f13, 0xb8, 0x27, 0x48, 0xb2, 0x4b, 0x6c, 0x71, 0x74);
+DEFINE_KNOWN_FOLDER(FOLDERID_UserProfiles,          0x0762d272, 0xc50a, 0x4bb0, 0xa3, 0x82, 0x69, 0x7d, 0xcd, 0x72, 0x9b, 0x80);
+DEFINE_KNOWN_FOLDER(FOLDERID_UserProgramFiles,      0x5cd7aee2, 0x2219, 0x4a67, 0xb8, 0x5d, 0x6c, 0x9c, 0xe1, 0x56, 0x60, 0xcb);
+DEFINE_KNOWN_FOLDER(FOLDERID_UserProgramFilesCommon, 0xbcbd3057, 0xca5c, 0x4622, 0xb4, 0x2d, 0xbc, 0x56, 0xdb, 0x0a, 0xe5, 0x16);
+DEFINE_KNOWN_FOLDER(FOLDERID_UsersFiles,            0xf3ce0f7c, 0x4901, 0x4acc, 0x86, 0x48, 0xd5, 0xd4, 0x4b, 0x04, 0xef, 0x8f);
+DEFINE_KNOWN_FOLDER(FOLDERID_UsersLibraries,        0xa302545d, 0xdeff, 0x464b, 0xab, 0xe8, 0x61, 0xc8, 0x64, 0x8d, 0x93, 0x9b);
+DEFINE_KNOWN_FOLDER(FOLDERID_Videos,                0x18989b1d, 0x99b5, 0x455b, 0x84, 0x1c, 0xab, 0x7c, 0x74, 0xe4, 0xdd, 0xfc);
+DEFINE_KNOWN_FOLDER(FOLDERID_VideosLibrary,         0x491e922f, 0x5643, 0x4af4, 0xa7, 0xeb, 0x4e, 0x7a, 0x13, 0x8d, 0x81, 0x74);
+DEFINE_KNOWN_FOLDER(FOLDERID_Windows,               0xf38bf404, 0x1d43, 0x42f2, 0x93, 0x05, 0x67, 0xde, 0x0b, 0x28, 0xfc, 0x23);
diff --git a/debian/include/propvarutil.h b/debian/include/propvarutil.h
deleted file mode 100644
index 96265a5..0000000
--- a/debian/include/propvarutil.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright 2008 James Hawkins for CodeWeavers
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
- */
-
-#ifndef __WINE_PROPVARUTIL_H
-#define __WINE_PROPVARUTIL_H
-
-#include <shtypes.h>
-#include <shlwapi.h>
-
-enum tagPROPVAR_CHANGE_FLAGS
-{
-    PVCHF_DEFAULT           = 0x00000000,
-    PVCHF_NOVALUEPROP       = 0x00000001,
-    PVCHF_ALPHABOOL         = 0x00000002,
-    PVCHF_NOUSEROVERRIDE    = 0x00000004,
-    PVCHF_LOCALBOOL         = 0x00000008,
-    PVCHF_NOHEXSTRING       = 0x00000010,
-};
-
-typedef int PROPVAR_CHANGE_FLAGS;
-
-HRESULT WINAPI PropVariantChangeType(PROPVARIANT *ppropvarDest, REFPROPVARIANT propvarSrc,
-                                     PROPVAR_CHANGE_FLAGS flags, VARTYPE vt);
-HRESULT WINAPI InitPropVariantFromGUIDAsString(REFGUID guid, PROPVARIANT *ppropvar);
-HRESULT WINAPI InitVariantFromGUIDAsString(REFGUID guid, VARIANT *pvar);
-HRESULT WINAPI InitPropVariantFromBuffer(const VOID *pv, UINT cb, PROPVARIANT *ppropvar);
-HRESULT WINAPI InitVariantFromBuffer(const VOID *pv, UINT cb, VARIANT *pvar);
-HRESULT WINAPI PropVariantToGUID(const PROPVARIANT *ppropvar, GUID *guid);
-HRESULT WINAPI VariantToGUID(const VARIANT *pvar, GUID *guid);
-
-
-#ifdef __cplusplus
-
-HRESULT InitPropVariantFromBoolean(BOOL fVal, PROPVARIANT *ppropvar);
-HRESULT InitPropVariantFromString(PCWSTR psz, PROPVARIANT *ppropvar);
-
-#ifndef NO_PROPVAR_INLINES
-
-inline HRESULT InitPropVariantFromBoolean(BOOL fVal, PROPVARIANT *ppropvar)
-{
-    ppropvar->vt = VT_BOOL;
-    ppropvar->boolVal = fVal ? VARIANT_TRUE : VARIANT_FALSE;
-    return S_OK;
-}
-
-inline HRESULT InitPropVariantFromString(PCWSTR psz, PROPVARIANT *ppropvar)
-{
-    HRESULT hres;
-
-    hres = SHStrDupW(psz, &ppropvar->pwszVal);
-    if(SUCCEEDED(hres))
-        ppropvar->vt = VT_LPWSTR;
-    else
-        PropVariantInit(ppropvar);
-
-    return hres;
-}
-
-#endif
-#endif
-
-#endif /* __WINE_PROPVARUTIL_H */
diff --git a/debian/include/shlguid.h b/debian/include/shlguid.h
new file mode 100644
index 0000000..bf38f45
--- /dev/null
+++ b/debian/include/shlguid.h
@@ -0,0 +1,354 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+#ifndef _SHLGUID_H_
+#define _SHLGUID_H_
+
+#include <_mingw_unicode.h>
+
+#ifndef _WIN32_IE
+#define _WIN32_IE 0x0501
+#endif
+
+#include <knownfolders.h>
+
+#define DEFINE_SHLGUID(name,l,w1,w2) DEFINE_GUID(name,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
+
+DEFINE_SHLGUID(CLSID_ShellDesktop,0x00021400,0,0);
+DEFINE_GUID(CLSID_NetworkPlaces,0x208D2C60,0x3AEA,0x1069,0xA2,0xD7,0x08,0x00,0x2B,0x30,0x30,0x9D);
+DEFINE_GUID(CLSID_NetworkDomain,0x46e06680,0x4bf0,0x11d1,0x83,0xee,0x00,0xa0,0xc9,0x0d,0xc8,0x49);
+DEFINE_GUID(CLSID_NetworkServer,0xc0542a90,0x4bf0,0x11d1,0x83,0xee,0x00,0xa0,0xc9,0x0d,0xc8,0x49);
+DEFINE_GUID(CLSID_NetworkShare,0x54a754c0,0x4bf0,0x11d1,0x83,0xee,0x00,0xa0,0xc9,0x0d,0xc8,0x49);
+DEFINE_GUID(CLSID_MyComputer,0x20D04FE0,0x3AEA,0x1069,0xA2,0xD8,0x08,0x00,0x2B,0x30,0x30,0x9D);
+DEFINE_GUID(CLSID_Internet,0x871C5380,0x42A0,0x1069,0xA2,0xEA,0x08,0x00,0x2B,0x30,0x30,0x9D);
+DEFINE_GUID(CLSID_ShellFSFolder,0xF3364BA0,0x65B9,0x11CE,0xA9,0xBA,0x00,0xAA,0x00,0x4A,0xE8,0x37);
+DEFINE_GUID(CLSID_RecycleBin,0x645FF040,0x5081,0x101B,0x9F,0x08,0x00,0xAA,0x00,0x2F,0x95,0x4E);
+DEFINE_GUID(CLSID_ControlPanel,0x21EC2020,0x3AEA,0x1069,0xA2,0xDD,0x08,0x00,0x2B,0x30,0x30,0x9D);
+DEFINE_GUID(CLSID_Printers,0x2227A280,0x3AEA,0x1069,0xA2,0xDE,0x08,0x00,0x2B,0x30,0x30,0x9D);
+DEFINE_GUID(CLSID_MyDocuments,0x450d8fba,0xad25,0x11d0,0x98,0xa8,0x08,0x00,0x36,0x1b,0x11,0x03);
+
+#define STR_MYDOCS_CLSID "{450D8FBA-AD25-11D0-98A8-0800361B1103}"
+
+DEFINE_SHLGUID(CATID_BrowsableShellExt,0x00021490,0,0);
+DEFINE_SHLGUID(CATID_BrowseInPlace,0x00021491,0,0);
+DEFINE_SHLGUID(CATID_DeskBand,0x00021492,0,0);
+DEFINE_SHLGUID(CATID_InfoBand,0x00021493,0,0);
+DEFINE_SHLGUID(CATID_CommBand,0x00021494,0,0);
+
+#define PSGUID_INTERNETSHORTCUT {0x000214A0,0,0,0xC0,0,0,0,0,0,0,0x46}
+DEFINE_SHLGUID(FMTID_Intshcut,0x000214A0,0,0);
+
+#define PSGUID_INTERNETSITE {0x000214A1,0,0,0xC0,0,0,0,0,0,0,0x46}
+DEFINE_SHLGUID(FMTID_InternetSite,0x000214A1,0,0);
+DEFINE_SHLGUID(CGID_Explorer,0x000214D0,0,0);
+DEFINE_SHLGUID(CGID_ShellDocView,0x000214D1,0,0);
+DEFINE_SHLGUID(CGID_ShellServiceObject,0x000214D2,0,0);
+DEFINE_SHLGUID(CGID_ExplorerBarDoc,0x000214D3,0,0);
+DEFINE_SHLGUID(IID_INewShortcutHookA,0x000214E1,0,0);
+DEFINE_SHLGUID(IID_IShellBrowser,0x000214E2,0,0);
+DEFINE_SHLGUID(IID_IShellView,0x000214E3,0,0);
+DEFINE_SHLGUID(IID_IContextMenu,0x000214E4,0,0);
+DEFINE_SHLGUID(IID_IShellIcon,0x000214E5,0,0);
+DEFINE_SHLGUID(IID_IShellFolder,0x000214E6,0,0);
+DEFINE_SHLGUID(IID_IShellExtInit,0x000214E8,0,0);
+DEFINE_SHLGUID(IID_IShellPropSheetExt,0x000214E9,0,0);
+DEFINE_SHLGUID(IID_IPersistFolder,0x000214EA,0,0);
+DEFINE_SHLGUID(IID_IExtractIconA,0x000214EB,0,0);
+DEFINE_SHLGUID(IID_IShellDetails,0x000214EC,0,0);
+DEFINE_SHLGUID(IID_IDelayedRelease,0x000214ED,0,0);
+DEFINE_SHLGUID(IID_IShellLinkA,0x000214EE,0,0);
+DEFINE_SHLGUID(IID_IShellCopyHookA,0x000214EF,0,0);
+DEFINE_SHLGUID(IID_IFileViewerA,0x000214F0,0,0);
+DEFINE_SHLGUID(IID_ICommDlgBrowser,0x000214F1,0,0);
+DEFINE_SHLGUID(IID_IEnumIDList,0x000214F2,0,0);
+DEFINE_SHLGUID(IID_IFileViewerSite,0x000214F3,0,0);
+DEFINE_SHLGUID(IID_IContextMenu2,0x000214F4,0,0);
+DEFINE_SHLGUID(IID_IShellExecuteHookA,0x000214F5,0,0);
+DEFINE_SHLGUID(IID_IPropSheetPage,0x000214F6,0,0);
+DEFINE_SHLGUID(IID_INewShortcutHookW,0x000214F7,0,0);
+DEFINE_SHLGUID(IID_IFileViewerW,0x000214F8,0,0);
+DEFINE_SHLGUID(IID_IShellLinkW,0x000214F9,0,0);
+DEFINE_SHLGUID(IID_IExtractIconW,0x000214FA,0,0);
+DEFINE_SHLGUID(IID_IShellExecuteHookW,0x000214FB,0,0);
+DEFINE_SHLGUID(IID_IShellCopyHookW,0x000214FC,0,0);
+DEFINE_SHLGUID(IID_IRemoteComputer,0x000214FE,0,0);
+
+#define IID_ICopyHookA IID_IShellCopyHookA
+#define IID_ICopyHookW IID_IShellCopyHookW
+
+#define SID_LinkSite IID_IShellLinkW
+
+DEFINE_SHLGUID(IID_IQueryInfo,0x00021500,0,0);
+DEFINE_GUID(IID_IBriefcaseStg,0x8BCE1FA1,0x0921,0x101B,0xB1,0xFF,0x00,0xDD,0x01,0x0C,0xCC,0x48);
+DEFINE_GUID(IID_IShellView2,0x88E39E80,0x3578,0x11CF,0xAE,0x69,0x08,0x00,0x2B,0x2E,0x12,0x62);
+DEFINE_GUID(IID_IShellLinkDataList,0x45e2b4ae,0xb1c3,0x11d0,0xb9,0x2f,0x0,0xa0,0xc9,0x3,0x12,0xe1);
+DEFINE_GUID(IID_IResolveShellLink,0x5cd52983,0x9449,0x11d2,0x96,0x3a,0x00,0xc0,0x4f,0x79,0xad,0xf0);
+DEFINE_GUID(IID_IURLSearchHook,0xAC60F6A0,0x0FD9,0x11D0,0x99,0xCB,0x00,0xC0,0x4F,0xD6,0x44,0x97);
+DEFINE_GUID(IID_ISearchContext,0x09F656A2,0x41AF,0x480C,0x88,0xF7,0x16,0xCC,0x0D,0x16,0x46,0x15);
+DEFINE_GUID(IID_IURLSearchHook2,0x5ee44da4,0x6d32,0x46e3,0x86,0xbc,0x07,0x54,0x0d,0xed,0xd0,0xe0);
+DEFINE_GUID(IID_IDefViewID,0x985F64F0,0xD410,0x4E02,0xBE,0x22,0xDA,0x07,0xF2,0xB5,0xC5,0xE1);
+DEFINE_GUID(CLSID_ShellTaskScheduler,0x603d3800,0xbd81,0x11d0,0xa3,0xa5,0x00,0xc0,0x4f,0xd7,0x06,0xec);
+DEFINE_GUID(IID_IShellTaskScheduler,0x6ccb7be0,0x6807,0x11d0,0xb8,0x10,0x00,0xc0,0x4f,0xd7,0x06,0xec);
+#define IDefViewID IUnknown
+DEFINE_GUID(CLSID_FolderShortcut,0x0AFACED1,0xE828,0x11D1,0x91,0x87,0xB5,0x32,0xF1,0xE9,0x57,0x5D);
+DEFINE_GUID(CLSID_StgFolder,0xE773F1AF,0x3A65,0x4866,0x85,0x7D,0x84,0x6F,0xC9,0xC4,0x59,0x8A);
+DEFINE_GUID(IID_IInputObject,0x68284faa,0x6a48,0x11d0,0x8c,0x78,0x0,0xc0,0x4f,0xd9,0x18,0xb4);
+DEFINE_GUID(IID_IInputObjectSite,0xf1db8392,0x7331,0x11d0,0x8c,0x99,0x0,0xa0,0xc9,0x2d,0xbf,0xe8);
+DEFINE_GUID(IID_IDockingWindowSite,0x2a342fc2,0x7b26,0x11d0,0x8c,0xa9,0x0,0xa0,0xc9,0x2d,0xbf,0xe8);
+DEFINE_GUID(IID_IDockingWindowFrame,0x47d2657a,0x7b27,0x11d0,0x8c,0xa9,0x0,0xa0,0xc9,0x2d,0xbf,0xe8);
+DEFINE_GUID(IID_IShellIconOverlay,0x7D688A70,0xC613,0x11D0,0x99,0x9B,0x00,0xC0,0x4F,0xD6,0x55,0xE1);
+DEFINE_GUID(IID_IShellIconOverlayIdentifier,0x0C6C4200,0xC589,0x11D0,0x99,0x9A,0x00,0xC0,0x4F,0xD6,0x55,0xE1);
+DEFINE_GUID(IID_ICommDlgBrowser2,0x10339516,0x2894,0x11d2,0x90,0x39,0x0,0xc0,0x4f,0x8e,0xeb,0x3e);
+DEFINE_GUID(IID_IShellFolderViewCB,0x2047E320,0xF2A9,0x11CE,0xAE,0x65,0x08,0x00,0x2B,0x2E,0x12,0x62);
+#define SID_ShellFolderViewCB IID_IShellFolderViewCB
+DEFINE_GUID(IID_IPersistFolder3,0xcef04fdf,0xfe72,0x11d2,0x87,0xa5,0x0,0xc0,0x4f,0x68,0x37,0xcf);
+DEFINE_GUID(CLSID_CFSIconOverlayManager,0x63B51F81,0xC868,0x11D0,0x99,0x9C,0x00,0xC0,0x4F,0xD6,0x55,0xE1);
+DEFINE_GUID(IID_IShellIconOverlayManager,0xf10b5e34,0xdd3b,0x42a7,0xaa,0x7d,0x2f,0x4e,0xc5,0x4b,0xb0,0x9b);
+DEFINE_GUID(IID_IRunnableTask,0x85788d00,0x6807,0x11d0,0xb8,0x10,0x0,0xc0,0x4f,0xd7,0x6,0xec);
+DEFINE_GUID(IID_IThumbnailCapture,0x4ea39266,0x7211,0x409f,0xb6,0x22,0xf6,0x3d,0xbd,0x16,0xc5,0x33);
+DEFINE_GUID(IID_IShellImageStore,0x48c8118c,0xb924,0x11d1,0x98,0xd5,0x0,0xc0,0x4f,0xb6,0x87,0xda);
+DEFINE_GUID(IID_IEnumShellImageStore,0x6dfd582b,0x92e3,0x11d1,0x98,0xa3,0x0,0xc0,0x4f,0xb6,0x87,0xda);
+DEFINE_GUID(CLSID_ShellThumbnailDiskCache,0x1ebdcf80,0xa200,0x11d0,0xa3,0xa4,0x0,0xc0,0x4f,0xd7,0x6,0xec);
+DEFINE_GUID(IID_IContextMenu3,0xbcfce0a0,0xec17,0x11d0,0x8d,0x10,0x0,0xa0,0xc9,0xf,0x27,0x19);
+DEFINE_GUID(SID_DefView,0x6D12FE80,0x7911,0x11CF,0x95,0x34,0x00,0x00,0xC0,0x5B,0xAE,0x0B);
+DEFINE_GUID(CGID_DefView,0x4af07f10,0xd231,0x11d0,0xb9,0x42,0x0,0xa0,0xc9,0x3,0x12,0xe1);
+DEFINE_GUID(CLSID_MenuBand,0x5b4dae26,0xb807,0x11d0,0x98,0x15,0x0,0xc0,0x4f,0xd9,0x19,0x72);
+DEFINE_GUID(IID_IShellFolderBand,0x7fe80cc8,0xc247,0x11d0,0xb9,0x3a,0x0,0xa0,0xc9,0x3,0x12,0xe1);
+DEFINE_GUID(IID_IDefViewFrame,0x710EB7A0,0x45ED,0x11D0,0x92,0x4A,0x00,0x20,0xAF,0xC7,0xAC,0x4D);
+DEFINE_GUID(VID_LargeIcons,0x0057D0E0,0x3573,0x11CF,0xAE,0x69,0x08,0x00,0x2B,0x2E,0x12,0x62);
+DEFINE_GUID(VID_SmallIcons,0x089000C0,0x3573,0x11CF,0xAE,0x69,0x08,0x00,0x2B,0x2E,0x12,0x62);
+DEFINE_GUID(VID_List ,0x0E1FA5E0,0x3573,0x11CF,0xAE,0x69,0x08,0x00,0x2B,0x2E,0x12,0x62);
+DEFINE_GUID(VID_Details ,0x137E7700,0x3573,0x11CF,0xAE,0x69,0x08,0x00,0x2B,0x2E,0x12,0x62);
+DEFINE_GUID(VID_Tile ,0x65f125e5,0x7be1,0x4810,0xba,0x9d,0xd2,0x71,0xc8,0x43,0x2c,0xe3);
+DEFINE_GUID(VID_Thumbnails,0x8bebb290,0x52d0,0x11d0,0xb7,0xf4,0x0,0xc0,0x4f,0xd7,0x6,0xec);
+DEFINE_GUID(VID_ThumbStrip,0x8EEFA624,0xD1E9,0x445B,0x94,0xB7,0x74,0xFB,0xCE,0x2E,0xA1,0x1A);
+
+#define SID_SShellBrowser IID_IShellBrowser
+#define SID_SShellDesktop CLSID_ShellDesktop
+
+DEFINE_GUID(IID_IDiscardableBrowserProperty,0x49c3de7c,0xd329,0x11d0,0xab,0x73,0x00,0xc0,0x4f,0xc3,0x3e,0x80);
+DEFINE_GUID(IID_IShellChangeNotify,0xD82BE2B1,0x5764,0x11D0,0xA9,0x6E,0x00,0xC0,0x4F,0xD7,0x05,0xA2);
+
+#define IID_IFileViewer __MINGW_NAME_AW(IID_IFileViewer)
+#define IID_IShellLink __MINGW_NAME_AW(IID_IShellLink)
+#define IID_IExtractIcon __MINGW_NAME_AW(IID_IExtractIcon)
+#define IID_IShellCopyHook __MINGW_NAME_AW(IID_IShellCopyHook)
+#define IID_IShellExecuteHook __MINGW_NAME_AW(IID_IShellExecuteHook)
+#define IID_INewShortcutHook __MINGW_NAME_AW(IID_INewShortcutHook)
+
+#ifndef NO_INTSHCUT_GUIDS
+#include <isguids.h>
+#endif
+
+#ifndef NO_SHDOCVW_GUIDS
+
+#ifndef GUID_DEFS_ONLY
+#include <exdisp.h>
+#include <shldisp.h>
+#endif
+
+DEFINE_GUID(CLSID_CUrlHistory,0x3C374A40,0xBAE4,0x11CF,0xBF,0x7D,0x00,0xAA,0x00,0x69,0x46,0xEE);
+#define SID_SUrlHistory CLSID_CUrlHistory
+
+DEFINE_GUID(CLSID_CURLSearchHook,0xCFBFAE00,0x17A6,0x11D0,0x99,0xCB,0x00,0xC0,0x4F,0xD6,0x44,0x97);
+
+#define SID_SInternetExplorer IID_IWebBrowserApp
+#define SID_SWebBrowserApp IID_IWebBrowserApp
+
+DEFINE_GUID(IID_IAutoCompList,0x00BB2760,0x6A77,0x11D0,0xA5,0x35,0x00,0xC0,0x4F,0xD7,0xD0,0x62);
+DEFINE_GUID(IID_IObjMgr,0x00BB2761,0x6A77,0x11D0,0xA5,0x35,0x00,0xC0,0x4F,0xD7,0xD0,0x62);
+DEFINE_GUID(IID_IACList,0x77A130B0,0x94FD,0x11D0,0xA5,0x44,0x00,0xC0,0x4F,0xD7,0xd0,0x62);
+DEFINE_GUID(IID_IACList2,0x470141a0,0x5186,0x11d2,0xbb,0xb6,0x00,0x60,0x97,0x7b,0x46,0x4c);
+DEFINE_GUID(IID_ICurrentWorkingDirectory,0x91956d21,0x9276,0x11d1,0x92,0x1a,0x00,0x60,0x97,0xdf,0x5b,0xd4);
+DEFINE_GUID(CLSID_AutoComplete,0x00BB2763,0x6A77,0x11D0,0xA5,0x35,0x00,0xC0,0x4F,0xD7,0xD0,0x62);
+DEFINE_GUID(CLSID_ACLHistory,0x00BB2764,0x6A77,0x11D0,0xA5,0x35,0x00,0xC0,0x4F,0xD7,0xD0,0x62);
+DEFINE_GUID(CLSID_ACListISF,0x03C036F1,0xA186,0x11D0,0x82,0x4A,0x00,0xAA,0x00,0x5B,0x43,0x83);
+DEFINE_GUID(CLSID_ACLMRU,0x6756a641,0xde71,0x11d0,0x83,0x1b,0x0,0xaa,0x0,0x5b,0x43,0x83);
+DEFINE_GUID(CLSID_ACLMulti,0x00BB2765,0x6A77,0x11D0,0xA5,0x35,0x00,0xC0,0x4F,0xD7,0xD0,0x62);
+#if (_WIN32_IE >= 0x0600)
+DEFINE_GUID(CLSID_ACLCustomMRU,0x6935db93,0x21e8,0x4ccc,0xbe,0xb9,0x9f,0xe3,0xc7,0x7a,0x29,0x7a);
+#endif
+
+DEFINE_GUID(CLSID_ProgressDialog,0xf8383852,0xfcd3,0x11d1,0xa6,0xb9,0x0,0x60,0x97,0xdf,0x5b,0xd4);
+DEFINE_GUID(IID_IProgressDialog,0xebbc7c04,0x315e,0x11d2,0xb6,0x2f,0x0,0x60,0x97,0xdf,0x5b,0xd4);
+
+#define SID_SProgressUI CLSID_ProgressDialog
+
+DEFINE_GUID(SID_STopLevelBrowser,0x4C96BE40,0x915C,0x11CF,0x99,0xD3,0x00,0xAA,0x00,0x4A,0xE8,0x37);
+#endif
+
+DEFINE_GUID(CLSID_FileTypes,0xB091E540,0x83E3,0x11CF,0xA7,0x13,0x00,0x20,0xAF,0xD7,0x97,0x62);
+DEFINE_GUID(CLSID_ActiveDesktop,0x75048700,0xEF1F,0x11D0,0x98,0x88,0x00,0x60,0x97,0xDE,0xAC,0xF9);
+DEFINE_GUID(IID_IActiveDesktop,0xF490EB00,0x1240,0x11D1,0x98,0x88,0x00,0x60,0x97,0xDE,0xAC,0xF9);
+DEFINE_GUID(IID_IActiveDesktopP,0x52502EE0,0xEC80,0x11D0,0x89,0xAB,0x00,0xC0,0x4F,0xC2,0x97,0x2D);
+DEFINE_GUID(IID_IADesktopP2,0xb22754e2,0x4574,0x11d1,0x98,0x88,0x0,0x60,0x97,0xde,0xac,0xf9);
+DEFINE_GUID(IID_ISynchronizedCallBack,0x74c26041,0x70d1,0x11d1,0xb7,0x5a,0x0,0xa0,0xc9,0x5,0x64,0xfe);
+DEFINE_GUID(IID_IShellDetails3,0xd2a105c0,0x87d5,0x11d1,0x83,0x91,0x0,0x0,0xf8,0x4,0x61,0xcf);
+DEFINE_GUID(IID_IQueryAssociations,0xc46ca590,0x3c3f,0x11d2,0xbe,0xe6,0x00,0x00,0xf8,0x05,0xca,0x57);
+DEFINE_GUID(CLSID_QueryAssociations,0xa07034fd,0x6caa,0x4954,0xac,0x3f,0x97,0xa2,0x72,0x16,0xf9,0x8a);
+DEFINE_GUID(IID_IColumnProvider,0xe8025004,0x1c42,0x11d2,0xbe,0x2c,0x0,0xa0,0xc9,0xa8,0x3d,0xa1);
+DEFINE_GUID(CLSID_DocFileColumnProvider,0x24f14f01,0x7b1c,0x11d1,0x83,0x8f,0x0,0x0,0xf8,0x4,0x61,0xcf);
+DEFINE_GUID(CLSID_LinkColumnProvider,0x24f14f02,0x7b1c,0x11d1,0x83,0x8f,0x0,0x0,0xf8,0x4,0x61,0xcf);
+DEFINE_GUID(CLSID_FileSysColumnProvider,0xd2e74c4,0x3c34,0x11d2,0xa2,0x7e,0x0,0xc0,0x4f,0xc3,0x8,0x71);
+DEFINE_GUID(CGID_ShortCut,0x93a68750,0x951a,0x11d1,0x94,0x6f,0x0,0x0,0x0,0x0,0x0,0x0);
+DEFINE_GUID(IID_INamedPropertyBag,0xfb700430,0x952c,0x11d1,0x94,0x6f,0x0,0x0,0x0,0x0,0x0,0x0);
+DEFINE_GUID(CLSID_InternetButtons,0x1E796980,0x9CC5,0x11D1,0xA8,0x3F,0x00,0xC0,0x4F,0xC9,0x9D,0x61);
+DEFINE_GUID(CLSID_MSOButtons,0x178f34b8,0xa282,0x11d2,0x86,0xc5,0x0,0xc0,0x4f,0x8e,0xea,0x99);
+DEFINE_GUID(CLSID_ToolbarExtButtons,0x2ce4b5d8,0xa28f,0x11d2,0x86,0xc5,0x0,0xc0,0x4f,0x8e,0xea,0x99);
+DEFINE_GUID(CLSID_DarwinAppPublisher,0xCFCCC7A0,0xA282,0x11D1,0x90,0x82,0x00,0x60,0x08,0x05,0x93,0x82);
+DEFINE_GUID(CLSID_DocHostUIHandler,0x7057e952,0xbd1b,0x11d1,0x89,0x19,0x0,0xc0,0x4f,0xc2,0xc8,0x36);
+DEFINE_GUID(IID_IShellFolder2,0x93f2f68c,0x1d1b,0x11d3,0xa3,0xe,0x0,0xc0,0x4f,0x79,0xab,0xd1);
+DEFINE_GUID(IID_IFolderView,0xCDE725B0,0xCCC9,0x4519,0x91,0x7E,0x32,0x5D,0x72,0xFA,0xB4,0xCE);
+
+#define PSGUID_SHELLDETAILS {0x28636aa6,0x953d,0x11d2,0xb5,0xd6,0x0,0xc0,0x4f,0xd9,0x18,0xd0}
+DEFINE_GUID(FMTID_ShellDetails,0x28636aa6,0x953d,0x11d2,0xb5,0xd6,0x0,0xc0,0x4f,0xd9,0x18,0xd0);
+#define PID_FINDDATA 0
+#define PID_NETRESOURCE 1
+#define PID_DESCRIPTIONID 2
+#define PID_WHICHFOLDER 3
+#define PID_NETWORKLOCATION 4
+#define PID_COMPUTERNAME 5
+
+DEFINE_GUID(FMTID_Storage,0xb725f130,0x47ef,0x101a,0xa5,0xf1,0x02,0x60,0x8c,0x9e,0xeb,0xac);
+
+#define PSGUID_IMAGEPROPERTIES {0x14b81da1,0x0135,0x4d31,0x96,0xd9,0x6c,0xbf,0xc9,0x67,0x1a,0x99}
+DEFINE_GUID(FMTID_ImageProperties,0x14b81da1,0x0135,0x4d31,0x96,0xd9,0x6c,0xbf,0xc9,0x67,0x1a,0x99);
+
+#define PSGUID_DISPLACED {0x9b174b33,0x40ff,0x11d2,0xa2,0x7e,0x0,0xc0,0x4f,0xc3,0x8,0x71}
+DEFINE_GUID(FMTID_Displaced,0x9b174b33,0x40ff,0x11d2,0xa2,0x7e,0x0,0xc0,0x4f,0xc3,0x8,0x71);
+#define PID_DISPLACED_FROM 2
+#define PID_DISPLACED_DATE 3
+
+#define PSGUID_BRIEFCASE {0x328d8b21,0x7729,0x4bfc,0x95,0x4c,0x90,0x2b,0x32,0x9d,0x56,0xb0}
+DEFINE_GUID(FMTID_Briefcase,0x328d8b21,0x7729,0x4bfc,0x95,0x4c,0x90,0x2b,0x32,0x9d,0x56,0xb0);
+#define PID_SYNC_COPY_IN 2
+
+#define PSGUID_MISC {0x9b174b34,0x40ff,0x11d2,0xa2,0x7e,0x0,0xc0,0x4f,0xc3,0x8,0x71}
+DEFINE_GUID(FMTID_Misc,0x9b174b34,0x40ff,0x11d2,0xa2,0x7e,0x0,0xc0,0x4f,0xc3,0x8,0x71);
+#define PID_MISC_STATUS 2
+#define PID_MISC_ACCESSCOUNT 3
+#define PID_MISC_OWNER 4
+#define PID_HTMLINFOTIPFILE 5
+#define PID_MISC_PICS 6
+
+#define PSGUID_WEBVIEW {0xf2275480,0xf782,0x4291,0xbd,0x94,0xf1,0x36,0x93,0x51,0x3a,0xec}
+DEFINE_GUID(FMTID_WebView,0xf2275480,0xf782,0x4291,0xbd,0x94,0xf1,0x36,0x93,0x51,0x3a,0xec);
+#define PID_DISPLAY_PROPERTIES 0
+#define PID_INTROTEXT 1
+
+#define PSGUID_MUSIC {0x56a3372e,0xce9c,0x11d2,0x9f,0xe,0x0,0x60,0x97,0xc6,0x86,0xf6}
+DEFINE_GUID(FMTID_MUSIC,0x56a3372e,0xce9c,0x11d2,0x9f,0xe,0x0,0x60,0x97,0xc6,0x86,0xf6);
+#define PIDSI_ARTIST 2
+#define PIDSI_SONGTITLE 3
+#define PIDSI_ALBUM 4
+#define PIDSI_YEAR 5
+#define PIDSI_COMMENT 6
+#define PIDSI_TRACK 7
+#define PIDSI_GENRE 11
+#define PIDSI_LYRICS 12
+
+#define PSGUID_DRM {0xaeac19e4,0x89ae,0x4508,0xb9,0xb7,0xbb,0x86,0x7a,0xbe,0xe2,0xed}
+DEFINE_GUID(FMTID_DRM,0xaeac19e4,0x89ae,0x4508,0xb9,0xb7,0xbb,0x86,0x7a,0xbe,0xe2,0xed);
+#define PIDDRSI_PROTECTED 2
+#define PIDDRSI_DESCRIPTION 3
+#define PIDDRSI_PLAYCOUNT 4
+#define PIDDRSI_PLAYSTARTS 5
+#define PIDDRSI_PLAYEXPIRES 6
+
+#define PSGUID_VIDEO {0x64440491,0x4c8b,0x11d1,0x8b,0x70,0x8,0x0,0x36,0xb1,0x1a,0x3}
+
+#define PIDVSI_STREAM_NAME 0x00000002
+#define PIDVSI_FRAME_WIDTH 0x00000003
+#define PIDVSI_FRAME_HEIGHT 0x00000004
+#define PIDVSI_TIMELENGTH 0x00000007
+#define PIDVSI_FRAME_COUNT 0x00000005
+#define PIDVSI_FRAME_RATE 0x00000006
+#define PIDVSI_DATA_RATE 0x00000008
+#define PIDVSI_SAMPLE_SIZE 0x00000009
+#define PIDVSI_COMPRESSION 0x0000000A
+#define PIDVSI_STREAM_NUMBER 0x0000000B
+
+#define PSGUID_AUDIO {0x64440490,0x4c8b,0x11d1,0x8b,0x70,0x8,0x0,0x36,0xb1,0x1a,0x3}
+
+#define PIDASI_FORMAT 0x00000002
+#define PIDASI_TIMELENGTH 0x00000003
+#define PIDASI_AVG_DATA_RATE 0x00000004
+#define PIDASI_SAMPLE_RATE 0x00000005
+#define PIDASI_SAMPLE_SIZE 0x00000006
+#define PIDASI_CHANNEL_COUNT 0x00000007
+#define PIDASI_STREAM_NUMBER 0x00000008
+#define PIDASI_STREAM_NAME 0x00000009
+#define PIDASI_COMPRESSION 0x0000000A
+
+#define PSGUID_CONTROLPANEL {0x305ca226,0xd286,0x468e,0xb8,0x48,0x2b,0x2e,0x8e,0x69,0x7b,0x74}
+#define PID_CONTROLPANEL_CATEGORY 2
+
+#define PSGUID_VOLUME {0x9b174b35,0x40ff,0x11d2,0xa2,0x7e,0x0,0xc0,0x4f,0xc3,0x8,0x71}
+DEFINE_GUID(FMTID_Volume,0x9b174b35,0x40ff,0x11d2,0xa2,0x7e,0x0,0xc0,0x4f,0xc3,0x8,0x71);
+#define PID_VOLUME_FREE 2
+#define PID_VOLUME_CAPACITY 3
+#define PID_VOLUME_FILESYSTEM 4
+
+#define PSGUID_SHARE {0xd8c3986f,0x813b,0x449c,0x84,0x5d,0x87,0xb9,0x5d,0x67,0x4a,0xde}
+#define PID_SHARE_CSC_STATUS 2
+
+#define PSGUID_LINK {0xb9b4b3fc,0x2b51,0x4a42,0xb5,0xd8,0x32,0x41,0x46,0xaf,0xcf,0x25}
+#define PID_LINK_TARGET 2
+
+#define PSGUID_QUERY_D {0x49691c90,0x7e17,0x101a,0xa9,0x1c,0x08,0x00,0x2b,0x2e,0xcd,0xa9}
+DEFINE_GUID(FMTID_Query,0x49691c90,0x7e17,0x101a,0xa9,0x1c,0x08,0x00,0x2b,0x2e,0xcd,0xa9);
+#define PID_QUERY_RANK 2
+
+#define PSGUID_SUMMARYINFORMATION {0xf29f85e0,0x4ff9,0x1068,0xab,0x91,0x08,0x00,0x2b,0x27,0xb3,0xd9}
+#define PSGUID_DOCUMENTSUMMARYINFORMATION {0xd5cdd502,0x2e9c,0x101b,0x93,0x97,0x08,0x00,0x2b,0x2c,0xf9,0xae}
+#define PSGUID_MEDIAFILESUMMARYINFORMATION {0x64440492,0x4c8b,0x11d1,0x8b,0x70,0x08,0x00,0x36,0xb1,0x1a,0x03}
+#define PSGUID_IMAGESUMMARYINFORMATION {0x6444048f,0x4c8b,0x11d1,0x8b,0x70,0x8,0x00,0x36,0xb1,0x1a,0x03}
+
+DEFINE_GUID(IID_IEnumExtraSearch,0xe700be1,0x9db6,0x11d1,0xa1,0xce,0x0,0xc0,0x4f,0xd7,0x5d,0x13);
+DEFINE_GUID(CLSID_MountedVolume,0x12518493,0x00B2,0x11d2,0x9F,0xA5,0x9E,0x34,0x20,0x52,0x41,0x53);
+DEFINE_GUID(CLSID_HWShellExecute,0xffb8655f,0x81b9,0x4fce,0xb8,0x9c,0x9a,0x6b,0xa7,0x6d,0x13,0xe7);
+DEFINE_GUID(IID_IMountedVolume,0x12518492,0x00B2,0x11d2,0x9F,0xA5,0x9E,0x34,0x20,0x52,0x41,0x53);
+DEFINE_GUID(CLSID_DragDropHelper,0x4657278a,0x411b,0x11d2,0x83,0x9a,0x0,0xc0,0x4f,0xd9,0x18,0xd0);
+DEFINE_GUID(IID_IDropTargetHelper,0x4657278b,0x411b,0x11d2,0x83,0x9a,0x0,0xc0,0x4f,0xd9,0x18,0xd0);
+DEFINE_GUID(IID_IDragSourceHelper,0xde5bf786,0x477a,0x11d2,0x83,0x9d,0x0,0xc0,0x4f,0xd9,0x18,0xd0);
+DEFINE_GUID(CLSID_CAnchorBrowsePropertyPage,0x3050f3BB,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b);
+DEFINE_GUID(CLSID_CImageBrowsePropertyPage,0x3050f3B3,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b);
+DEFINE_GUID(CLSID_CDocBrowsePropertyPage,0x3050f3B4,0x98b5,0x11cf,0xbb,0x82,0x00,0xaa,0x00,0xbd,0xce,0x0b);
+DEFINE_GUID(IID_IFileSystemBindData,0x1e18d10,0x4d8b,0x11d2,0x85,0x5d,0x0,0x60,0x8,0x5,0x93,0x67);
+DEFINE_GUID(SID_STopWindow,0x49e1b500,0x4636,0x11d3,0x97,0xf7,0x0,0xc0,0x4f,0x45,0xd0,0xb3);
+DEFINE_GUID(SID_SGetViewFromViewDual,0x889A935D,0x971E,0x4B12,0xB9,0x0C,0x24,0xDF,0xC9,0xE1,0xE5,0xE8);
+DEFINE_GUID(CLSID_FolderItem,0xfef10fa2,0x355e,0x4e06,0x93,0x81,0x9b,0x24,0xd7,0xf7,0xcc,0x88);
+DEFINE_GUID(CLSID_FolderItemsFDF,0x53c74826,0xab99,0x4d33,0xac,0xa4,0x31,0x17,0xf5,0x1d,0x37,0x88);
+DEFINE_GUID(CLSID_NewMenu,0xd969a300,0xe7ff,0x11d0,0xa9,0x3b,0x0,0xa0,0xc9,0xf,0x27,0x19);
+#define BHID_LocalCopyHelper CLSID_LocalCopyHelper
+DEFINE_GUID(BHID_SFObject,0x3981e224,0xf559,0x11d3,0x8e,0x3a,0x00,0xc0,0x4f,0x68,0x37,0xd5);
+DEFINE_GUID(BHID_SFUIObject,0x3981e225,0xf559,0x11d3,0x8e,0x3a,0x00,0xc0,0x4f,0x68,0x37,0xd5);
+DEFINE_GUID(BHID_SFViewObject,0x3981e226,0xf559,0x11d3,0x8e,0x3a,0x00,0xc0,0x4f,0x68,0x37,0xd5);
+DEFINE_GUID(BHID_Storage,0x3981e227,0xf559,0x11d3,0x8e,0x3a,0x00,0xc0,0x4f,0x68,0x37,0xd5);
+DEFINE_GUID(BHID_Stream,0x1cebb3ab,0x7c10,0x499a,0xa4,0x17,0x92,0xca,0x16,0xc4,0xcb,0x83);
+DEFINE_GUID(BHID_LinkTargetItem,0x3981e228,0xf559,0x11d3,0x8e,0x3a,0x00,0xc0,0x4f,0x68,0x37,0xd5);
+DEFINE_GUID(BHID_StorageEnum,0x4621a4e3,0xf0d6,0x4773,0x8a,0x9c,0x46,0xe7,0x7b,0x17,0x48,0x40);
+
+#if _WIN32_IE >= 0x0600
+DEFINE_GUID(SID_CtxQueryAssociations,0xfaadfc40,0xb777,0x4b69,0xaa,0x81,0x77,0x03,0x5e,0xf0,0xe6,0xe8);
+#endif
+DEFINE_GUID(IID_IDocViewSite,0x87D605E0,0xC511,0x11CF,0x89,0xA9,0x00,0xA0,0xC9,0x05,0x41,0x29);
+DEFINE_GUID(CLSID_QuickLinks,0xe5cbf21,0xd15f,0x11d0,0x83,0x1,0x0,0xaa,0x0,0x5b,0x43,0x83);
+DEFINE_GUID(CLSID_ISFBand,0xD82BE2B0,0x5764,0x11D0,0xA9,0x6E,0x00,0xC0,0x4F,0xD7,0x05,0xA2);
+DEFINE_GUID(IID_CDefView,0x4434FF80,0xEF4C,0x11CE,0xAE,0x65,0x08,0x00,0x2B,0x2E,0x12,0x62);
+DEFINE_GUID(CLSID_ShellFldSetExt,0x6D5313C0,0x8C62,0x11D1,0xB2,0xCD,0x00,0x60,0x97,0xDF,0x8C,0x11);
+DEFINE_GUID(SID_SMenuBandChild,0xed9cc020,0x8b9,0x11d1,0x98,0x23,0x0,0xc0,0x4f,0xd9,0x19,0x72);
+DEFINE_GUID(SID_SMenuBandParent,0x8c278eec,0x3eab,0x11d1,0x8c,0xb0,0x0,0xc0,0x4f,0xd9,0x18,0xd0);
+DEFINE_GUID(SID_SMenuPopup,0xD1E7AFEB,0x6A2E,0x11d0,0x8C,0x78,0x0,0xC0,0x4F,0xD9,0x18,0xB4);
+DEFINE_GUID(SID_SMenuBandBottomSelected,0x165ebaf4,0x6d51,0x11d2,0x83,0xad,0x0,0xc0,0x4f,0xd9,0x18,0xd0);
+DEFINE_GUID(SID_SMenuBandBottom,0x743ca664,0xdeb,0x11d1,0x98,0x25,0x0,0xc0,0x4f,0xd9,0x19,0x72);
+DEFINE_GUID(SID_MenuShellFolder,0xa6c17eb4,0x2d65,0x11d2,0x83,0x8f,0x0,0xc0,0x4f,0xd9,0x18,0xd0);
+DEFINE_GUID(CGID_MENUDESKBAR,0x5c9f0a12,0x959e,0x11d0,0xa3,0xa4,0x0,0xa0,0xc9,0x8,0x26,0x36);
+DEFINE_GUID(SID_SMenuBandTop,0x9493a810,0xec38,0x11d0,0xbc,0x46,0x0,0xaa,0x0,0x6c,0xe2,0xf5);
+DEFINE_GUID(CLSID_MenuToolbarBase,0x40b96610,0xb522,0x11d1,0xb3,0xb4,0x0,0xaa,0x0,0x6e,0xfd,0xe7);
+DEFINE_GUID(IID_IBanneredBar,0x596a9a94,0x13e,0x11d1,0x8d,0x34,0x0,0xa0,0xc9,0xf,0x27,0x19);
+DEFINE_GUID(CLSID_MenuBandSite,0xe13ef4e4,0xd2f2,0x11d0,0x98,0x16,0x0,0xc0,0x4f,0xd9,0x19,0x72);
+DEFINE_GUID(SID_SCommDlgBrowser,0x80f30233,0xb7df,0x11d2,0xa3,0x3b,0x0,0x60,0x97,0xdf,0x5b,0xd4);
+#endif
diff --git a/debian/include/shlobj.h b/debian/include/shlobj.h
new file mode 100644
index 0000000..f788548
--- /dev/null
+++ b/debian/include/shlobj.h
@@ -0,0 +1,2684 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+#ifndef _SHLOBJ_H_
+#define _SHLOBJ_H_
+
+#include <winapifamily.h>
+#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
+
+#include <_mingw_unicode.h>
+
+#ifndef _WINRESRC_
+#ifndef _WIN32_IE
+#define _WIN32_IE 0x0501
+#endif
+#endif
+
+#ifndef SNDMSG
+#ifdef __cplusplus
+#define SNDMSG ::SendMessage
+#else
+#define SNDMSG SendMessage
+#endif
+#endif
+
+#ifndef WINSHELLAPI
+#if defined(_SHELL32_)
+#define WINSHELLAPI
+#else
+#define WINSHELLAPI DECLSPEC_IMPORT
+#endif
+#endif
+
+#ifndef SHSTDAPI
+#if defined(_SHELL32_)
+#define SHSTDAPI STDAPI
+#define SHSTDAPI_(type) STDAPI_(type)
+#else
+#define SHSTDAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI
+#define SHSTDAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI
+#endif
+#endif
+
+#ifndef SHDOCAPI
+#if defined(_SHDOCVW_)
+#define SHDOCAPI STDAPI
+#define SHDOCAPI_(type) STDAPI_(type)
+#else
+#define SHDOCAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI
+#define SHDOCAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI
+#endif
+#endif
+
+#ifndef SHSTDDOCAPI
+#if defined(_SHDOCVW_) || defined(_SHELL32_)
+#define SHSTDDOCAPI STDAPI
+#define SHSTDDOCAPI_(type) STDAPI_(type)
+#else
+#define SHSTDDOCAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI
+#define SHSTDDOCAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI
+#endif
+#endif
+
+#ifndef BROWSEUIAPI
+#if defined(_BROWSEUI_)
+#define BROWSEUIAPI STDAPI
+#define BROWSEUIAPI_(type) STDAPI_(type)
+#else
+#define BROWSEUIAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI
+#define BROWSEUIAPI_(type) EXTERN_C DECLSPEC_IMPORT type WINAPI
+#endif
+#endif
+
+#ifndef SHFOLDERAPI
+#if defined(_SHFOLDER_) || defined(_SHELL32_)
+#define SHFOLDERAPI STDAPI
+#else
+#define SHFOLDERAPI EXTERN_C DECLSPEC_IMPORT HRESULT WINAPI
+#endif
+#endif
+
+#include <ole2.h>
+#include <prsht.h>
+#include <commctrl.h>
+
+#ifndef INITGUID
+#include <shlguid.h>
+#endif
+
+#include <pshpack1.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <shtypes.h>
+#include <shobjidl.h>
+
+  SHSTDAPI SHGetMalloc(LPMALLOC *ppMalloc);
+  SHSTDAPI_(void *) SHAlloc(SIZE_T cb);
+  SHSTDAPI_(void) SHFree(void *pv);
+
+#define CMF_NORMAL 0x00000000
+#define CMF_DEFAULTONLY 0x00000001
+#define CMF_VERBSONLY 0x00000002
+#define CMF_EXPLORE 0x00000004
+#define CMF_NOVERBS 0x00000008
+#define CMF_CANRENAME 0x00000010
+#define CMF_NODEFAULT 0x00000020
+#define CMF_INCLUDESTATIC 0x00000040
+#define CMF_EXTENDEDVERBS 0x00000100
+#define CMF_RESERVED 0xffff0000
+
+#define GCS_VERBA 0x00000000
+#define GCS_HELPTEXTA 0x00000001
+#define GCS_VALIDATEA 0x00000002
+#define GCS_VERBW 0x00000004
+#define GCS_HELPTEXTW 0x00000005
+#define GCS_VALIDATEW 0x00000006
+#define GCS_UNICODE 0x00000004
+
+#define GCS_VERB __MINGW_NAME_AW(GCS_VERB)
+#define GCS_HELPTEXT __MINGW_NAME_AW(GCS_HELPTEXT)
+#define GCS_VALIDATE __MINGW_NAME_AW(GCS_VALIDATE)
+
+#define CMDSTR_NEWFOLDERA "NewFolder"
+#define CMDSTR_VIEWLISTA "ViewList"
+#define CMDSTR_VIEWDETAILSA "ViewDetails"
+#define CMDSTR_NEWFOLDERW L"NewFolder"
+#define CMDSTR_VIEWLISTW L"ViewList"
+#define CMDSTR_VIEWDETAILSW L"ViewDetails"
+
+#define CMDSTR_NEWFOLDER __MINGW_NAME_AW(CMDSTR_NEWFOLDER)
+#define CMDSTR_VIEWLIST __MINGW_NAME_AW(CMDSTR_VIEWLIST)
+#define CMDSTR_VIEWDETAILS __MINGW_NAME_AW(CMDSTR_VIEWDETAILS)
+
+#define CMIC_MASK_HOTKEY SEE_MASK_HOTKEY
+#define CMIC_MASK_ICON SEE_MASK_ICON
+#define CMIC_MASK_FLAG_NO_UI SEE_MASK_FLAG_NO_UI
+#define CMIC_MASK_UNICODE SEE_MASK_UNICODE
+#define CMIC_MASK_NO_CONSOLE SEE_MASK_NO_CONSOLE
+#define CMIC_MASK_HASLINKNAME SEE_MASK_HASLINKNAME
+#define CMIC_MASK_FLAG_SEP_VDM SEE_MASK_FLAG_SEPVDM
+#define CMIC_MASK_HASTITLE SEE_MASK_HASTITLE
+#define CMIC_MASK_ASYNCOK SEE_MASK_ASYNCOK
+#if (_WIN32_IE >= 0x0603)
+#define CMIC_MASK_NOZONECHECKS SEE_MASK_NOZONECHECKS
+#endif
+
+#define CMIC_MASK_SHIFT_DOWN 0x10000000
+#define CMIC_MASK_CONTROL_DOWN 0x40000000
+#if (_WIN32_IE >= 0x0560)
+#define CMIC_MASK_FLAG_LOG_USAGE SEE_MASK_FLAG_LOG_USAGE
+#define CMIC_MASK_NOZONECHECKS SEE_MASK_NOZONECHECKS
+#endif
+#define CMIC_MASK_PTINVOKE 0x20000000
+
+#include <pshpack8.h>
+
+  typedef struct _CMINVOKECOMMANDINFO {
+    DWORD cbSize;
+    DWORD fMask;
+    HWND hwnd;
+    LPCSTR lpVerb;
+    LPCSTR lpParameters;
+    LPCSTR lpDirectory;
+    int nShow;
+
+    DWORD dwHotKey;
+    HANDLE hIcon;
+  } CMINVOKECOMMANDINFO,*LPCMINVOKECOMMANDINFO;
+
+  typedef struct _CMInvokeCommandInfoEx {
+    DWORD cbSize;
+    DWORD fMask;
+    HWND hwnd;
+    LPCSTR lpVerb;
+    LPCSTR lpParameters;
+    LPCSTR lpDirectory;
+    int nShow;
+    DWORD dwHotKey;
+    HANDLE hIcon;
+    LPCSTR lpTitle;
+    LPCWSTR lpVerbW;
+    LPCWSTR lpParametersW;
+    LPCWSTR lpDirectoryW;
+    LPCWSTR lpTitleW;
+    POINT ptInvoke;
+  } CMINVOKECOMMANDINFOEX,*LPCMINVOKECOMMANDINFOEX;
+
+#include <poppack.h>
+
+#undef INTERFACE
+#define INTERFACE IContextMenu
+
+  DECLARE_INTERFACE_(IContextMenu,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(QueryContextMenu)(THIS_ HMENU hmenu,UINT indexMenu,UINT idCmdFirst,UINT idCmdLast,UINT uFlags) PURE;
+    STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO lpici) PURE;
+    STDMETHOD(GetCommandString)(THIS_ UINT_PTR idCmd,UINT uType,UINT *pwReserved,LPSTR pszName,UINT cchMax) PURE;
+  };
+
+  typedef IContextMenu *LPCONTEXTMENU;
+
+#undef INTERFACE
+#define INTERFACE IContextMenu2
+  DECLARE_INTERFACE_(IContextMenu2,IContextMenu) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(QueryContextMenu)(THIS_ HMENU hmenu,UINT indexMenu,UINT idCmdFirst,UINT idCmdLast,UINT uFlags) PURE;
+    STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO lpici) PURE;
+    STDMETHOD(GetCommandString)(THIS_ UINT_PTR idCmd,UINT uType,UINT *pwReserved,LPSTR pszName,UINT cchMax) PURE;
+    STDMETHOD(HandleMenuMsg)(THIS_ UINT uMsg,WPARAM wParam,LPARAM lParam) PURE;
+  };
+
+  typedef IContextMenu2 *LPCONTEXTMENU2;
+
+#undef INTERFACE
+#define INTERFACE IContextMenu3
+  DECLARE_INTERFACE_(IContextMenu3,IContextMenu2) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(QueryContextMenu)(THIS_ HMENU hmenu,UINT indexMenu,UINT idCmdFirst,UINT idCmdLast,UINT uFlags) PURE;
+    STDMETHOD(InvokeCommand)(THIS_ LPCMINVOKECOMMANDINFO lpici) PURE;
+    STDMETHOD(GetCommandString)(THIS_ UINT_PTR idCmd,UINT uType,UINT *pwReserved,LPSTR pszName,UINT cchMax) PURE;
+    STDMETHOD(HandleMenuMsg)(THIS_ UINT uMsg,WPARAM wParam,LPARAM lParam) PURE;
+    STDMETHOD(HandleMenuMsg2)(THIS_ UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *plResult) PURE;
+  };
+
+  typedef IContextMenu3 *LPCONTEXTMENU3;
+
+#undef INTERFACE
+#define INTERFACE IPersistFolder3
+#define CSIDL_FLAG_PFTI_TRACKTARGET CSIDL_FLAG_DONT_VERIFY
+
+#include <pshpack8.h>
+
+  typedef struct {
+    LPITEMIDLIST pidlTargetFolder;
+    WCHAR szTargetParsingName[MAX_PATH];
+    WCHAR szNetworkProvider[MAX_PATH];
+    DWORD dwAttributes;
+    int csidl;
+  } PERSIST_FOLDER_TARGET_INFO;
+
+#include <poppack.h>
+
+  DECLARE_INTERFACE_(IPersistFolder3,IPersistFolder2) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD(GetClassID)(THIS_ LPCLSID lpClassID) PURE;
+    STDMETHOD(Initialize)(THIS_ LPCITEMIDLIST pidl) PURE;
+    STDMETHOD(GetCurFolder)(THIS_ LPITEMIDLIST *ppidl) PURE;
+    STDMETHOD(InitializeEx)(THIS_ IBindCtx *pbc,LPCITEMIDLIST pidlRoot,const PERSIST_FOLDER_TARGET_INFO *ppfti) PURE;
+    STDMETHOD(GetFolderTargetInfo)(THIS_ PERSIST_FOLDER_TARGET_INFO *ppfti) PURE;
+  };
+
+#define GIL_OPENICON 0x0001
+#define GIL_FORSHELL 0x0002
+#define GIL_ASYNC 0x0020
+#define GIL_DEFAULTICON 0x0040
+#define GIL_FORSHORTCUT 0x0080
+
+#define GIL_SIMULATEDOC 0x0001
+#define GIL_PERINSTANCE 0x0002
+#define GIL_PERCLASS 0x0004
+#define GIL_NOTFILENAME 0x0008
+#define GIL_DONTCACHE 0x0010
+
+#undef INTERFACE
+#define INTERFACE IExtractIconA
+  DECLARE_INTERFACE_(IExtractIconA,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(GetIconLocation)(THIS_ UINT uFlags,LPSTR szIconFile,UINT cchMax,int *piIndex,UINT *pwFlags) PURE;
+    STDMETHOD(Extract)(THIS_ LPCSTR pszFile,UINT nIconIndex,HICON *phiconLarge,HICON *phiconSmall,UINT nIconSize) PURE;
+  };
+
+  typedef IExtractIconA *LPEXTRACTICONA;
+
+#undef INTERFACE
+#define INTERFACE IExtractIconW
+  DECLARE_INTERFACE_(IExtractIconW,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(GetIconLocation)(THIS_ UINT uFlags,LPWSTR szIconFile,UINT cchMax,int *piIndex,UINT *pwFlags) PURE;
+    STDMETHOD(Extract)(THIS_ LPCWSTR pszFile,UINT nIconIndex,HICON *phiconLarge,HICON *phiconSmall,UINT nIconSize) PURE;
+  };
+
+  typedef IExtractIconW *LPEXTRACTICONW;
+
+#define IExtractIcon __MINGW_NAME_AW(IExtractIcon)
+#define LPEXTRACTICON __MINGW_NAME_AW(LPEXTRACTICON)
+
+#define IExtractIconVtbl __MINGW_NAME_AW_EXT(IExtractIcon,Vtbl)
+
+#undef INTERFACE
+#define INTERFACE IShellIcon
+  DECLARE_INTERFACE_(IShellIcon,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(GetIconOf)(THIS_ LPCITEMIDLIST pidl,UINT flags,LPINT lpIconIndex) PURE;
+  };
+
+  typedef IShellIcon *LPSHELLICON;
+
+#undef INTERFACE
+#define INTERFACE IShellIconOverlayIdentifier
+  DECLARE_INTERFACE_(IShellIconOverlayIdentifier,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD (IsMemberOf)(THIS_ LPCWSTR pwszPath,DWORD dwAttrib) PURE;
+    STDMETHOD (GetOverlayInfo)(THIS_ LPWSTR pwszIconFile,int cchMax,int *pIndex,DWORD *pdwFlags) PURE;
+    STDMETHOD (GetPriority)(THIS_ int *pIPriority) PURE;
+  };
+
+#define ISIOI_ICONFILE 0x00000001
+#define ISIOI_ICONINDEX 0x00000002
+#if (_WIN32_IE >= 0x0601)
+#undef INTERFACE
+#define INTERFACE IShellIconOverlayManager
+  DECLARE_INTERFACE_(IShellIconOverlayManager,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(GetFileOverlayInfo)(THIS_ LPCWSTR pwszPath,DWORD dwAttrib,int *pIndex,DWORD dwflags) PURE;
+    STDMETHOD(GetReservedOverlayInfo)(THIS_ LPCWSTR pwszPath,DWORD dwAttrib,int *pIndex,DWORD dwflags,int iReservedID) PURE;
+    STDMETHOD(RefreshOverlayImages)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD(LoadNonloadedOverlayIdentifiers)(THIS) PURE;
+    STDMETHOD(OverlayIndexFromImageIndex)(THIS_ int iImage,int *piIndex,WINBOOL fAdd) PURE;
+  };
+#define SIOM_OVERLAYINDEX 1
+#define SIOM_ICONINDEX 2
+
+#define SIOM_RESERVED_SHARED 0
+#define SIOM_RESERVED_LINK 1
+#define SIOM_RESERVED_SLOWFILE 2
+#endif
+
+#undef INTERFACE
+#define INTERFACE IShellIconOverlay
+  DECLARE_INTERFACE_(IShellIconOverlay,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(GetOverlayIndex)(THIS_ LPCITEMIDLIST pidl,int *pIndex) PURE;
+    STDMETHOD(GetOverlayIconIndex)(THIS_ LPCITEMIDLIST pidl,int *pIconIndex) PURE;
+  };
+
+#define OI_ASYNC 0xFFFFEEEE
+
+#define IDO_SHGIOI_SHARE 0x0FFFFFFF
+#define IDO_SHGIOI_LINK 0x0FFFFFFE
+#define IDO_SHGIOI_SLOWFILE 0x0FFFFFFFD
+#define IDO_SHGIOI_DEFAULT 0x0FFFFFFC
+  SHSTDAPI_(int) SHGetIconOverlayIndexA(LPCSTR pszIconPath,int iIconIndex);
+  SHSTDAPI_(int) SHGetIconOverlayIndexW(LPCWSTR pszIconPath,int iIconIndex);
+
+#define SHGetIconOverlayIndex __MINGW_NAME_AW(SHGetIconOverlayIndex)
+
+  typedef enum {
+    SLDF_HAS_ID_LIST = 0x00000001,SLDF_HAS_LINK_INFO = 0x00000002,SLDF_HAS_NAME = 0x00000004,SLDF_HAS_RELPATH = 0x00000008,
+    SLDF_HAS_WORKINGDIR = 0x00000010,SLDF_HAS_ARGS = 0x00000020,SLDF_HAS_ICONLOCATION = 0x00000040,SLDF_UNICODE = 0x00000080,
+    SLDF_FORCE_NO_LINKINFO = 0x00000100,SLDF_HAS_EXP_SZ = 0x00000200,SLDF_RUN_IN_SEPARATE = 0x00000400,SLDF_HAS_LOGO3ID = 0x00000800,
+    SLDF_HAS_DARWINID = 0x00001000,SLDF_RUNAS_USER = 0x00002000,SLDF_HAS_EXP_ICON_SZ = 0x00004000,SLDF_NO_PIDL_ALIAS = 0x00008000,
+    SLDF_FORCE_UNCNAME = 0x00010000,SLDF_RUN_WITH_SHIMLAYER = 0x00020000,SLDF_RESERVED = 0x80000000
+  } SHELL_LINK_DATA_FLAGS;
+
+  typedef struct tagDATABLOCKHEADER {
+    DWORD cbSize;
+    DWORD dwSignature;
+  } DATABLOCK_HEADER,*LPDATABLOCK_HEADER,*LPDBLIST;
+
+  typedef struct {
+#ifdef __cplusplus
+    DATABLOCK_HEADER dbh;
+#else
+/*  DATABLOCK_HEADER; */
+    __C89_NAMELESS struct {
+      DWORD cbSize;
+      DWORD dwSignature;
+    };
+#endif
+    WORD wFillAttribute;
+    WORD wPopupFillAttribute;
+    COORD dwScreenBufferSize;
+    COORD dwWindowSize;
+    COORD dwWindowOrigin;
+    DWORD nFont;
+    DWORD nInputBufferSize;
+    COORD dwFontSize;
+    UINT uFontFamily;
+    UINT uFontWeight;
+    WCHAR FaceName[LF_FACESIZE];
+    UINT uCursorSize;
+    WINBOOL bFullScreen;
+    WINBOOL bQuickEdit;
+    WINBOOL bInsertMode;
+    WINBOOL bAutoPosition;
+    UINT uHistoryBufferSize;
+    UINT uNumberOfHistoryBuffers;
+    WINBOOL bHistoryNoDup;
+    COLORREF ColorTable[16 ];
+  } NT_CONSOLE_PROPS,*LPNT_CONSOLE_PROPS;
+#define NT_CONSOLE_PROPS_SIG 0xA0000002
+
+  typedef struct {
+#ifdef __cplusplus
+    DATABLOCK_HEADER dbh;
+#else
+/*  DATABLOCK_HEADER; */
+    __C89_NAMELESS struct {
+      DWORD cbSize;
+      DWORD dwSignature;
+    };
+#endif
+    UINT uCodePage;
+  } NT_FE_CONSOLE_PROPS,*LPNT_FE_CONSOLE_PROPS;
+#define NT_FE_CONSOLE_PROPS_SIG 0xA0000004
+
+  typedef struct {
+#ifdef __cplusplus
+    DATABLOCK_HEADER dbh;
+#else
+/*  DATABLOCK_HEADER; */
+    __C89_NAMELESS struct {
+      DWORD cbSize;
+      DWORD dwSignature;
+    };
+#endif
+    CHAR szDarwinID[MAX_PATH];
+    WCHAR szwDarwinID[MAX_PATH];
+  } EXP_DARWIN_LINK,*LPEXP_DARWIN_LINK;
+#define EXP_DARWIN_ID_SIG 0xA0000006
+#define EXP_LOGO3_ID_SIG 0xA0000007
+
+#define EXP_SPECIAL_FOLDER_SIG 0xA0000005
+
+  typedef struct {
+    DWORD cbSize;
+    DWORD dwSignature;
+    DWORD idSpecialFolder;
+    DWORD cbOffset;
+  } EXP_SPECIAL_FOLDER,*LPEXP_SPECIAL_FOLDER;
+
+  typedef struct {
+    DWORD cbSize;
+    DWORD dwSignature;
+    CHAR szTarget[MAX_PATH ];
+    WCHAR swzTarget[MAX_PATH ];
+  } EXP_SZ_LINK,*LPEXP_SZ_LINK;
+#define EXP_SZ_LINK_SIG 0xA0000001
+#define EXP_SZ_ICON_SIG 0xA0000007
+
+#undef INTERFACE
+#define INTERFACE IShellLinkDataList
+  DECLARE_INTERFACE_(IShellLinkDataList,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(AddDataBlock)(THIS_ void *pDataBlock) PURE;
+    STDMETHOD(CopyDataBlock)(THIS_ DWORD dwSig,void **ppDataBlock) PURE;
+    STDMETHOD(RemoveDataBlock)(THIS_ DWORD dwSig) PURE;
+    STDMETHOD(GetFlags)(THIS_ DWORD *pdwFlags) PURE;
+    STDMETHOD(SetFlags)(THIS_ DWORD dwFlags) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE IResolveShellLink
+  DECLARE_INTERFACE_(IResolveShellLink,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(ResolveShellLink)(THIS_ IUnknown *punk,HWND hwnd,DWORD fFlags) PURE;
+  };
+
+#ifdef _INC_SHELLAPI
+
+#undef INTERFACE
+#define INTERFACE IShellExecuteHookA
+  DECLARE_INTERFACE_(IShellExecuteHookA,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOA pei) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE IShellExecuteHookW
+  DECLARE_INTERFACE_(IShellExecuteHookW,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(Execute)(THIS_ LPSHELLEXECUTEINFOW pei) PURE;
+  };
+
+#define IShellExecuteHook __MINGW_NAME_AW(IShellExecuteHook)
+
+#define IShellExecuteHookVtbl __MINGW_NAME_AW_EXT(IShellExecuteHook,Vtbl)
+
+#endif
+
+#undef INTERFACE
+#define INTERFACE IURLSearchHook
+  DECLARE_INTERFACE_(IURLSearchHook,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(Translate)(THIS_ LPWSTR lpwszSearchURL,DWORD cchBufferSize) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE ISearchContext
+  DECLARE_INTERFACE_(ISearchContext,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(GetSearchUrl)(THIS_ BSTR *pbstrSearchUrl) PURE;
+    STDMETHOD(GetSearchText)(THIS_ BSTR *pbstrSearchText) PURE;
+    STDMETHOD(GetSearchStyle)(THIS_ DWORD *pdwSearchStyle) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE IURLSearchHook2
+  DECLARE_INTERFACE_(IURLSearchHook2,IURLSearchHook) {
+    STDMETHOD(TranslateWithSearchContext)(THIS_ LPWSTR lpwszSearchURL,DWORD cchBufferSize,ISearchContext *pSearchContext) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE INewShortcutHookA
+
+  DECLARE_INTERFACE_(INewShortcutHookA,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(SetReferent)(THIS_ LPCSTR pcszReferent,HWND hwnd) PURE;
+    STDMETHOD(GetReferent)(THIS_ LPSTR pszReferent,int cchReferent) PURE;
+    STDMETHOD(SetFolder)(THIS_ LPCSTR pcszFolder) PURE;
+    STDMETHOD(GetFolder)(THIS_ LPSTR pszFolder,int cchFolder) PURE;
+    STDMETHOD(GetName)(THIS_ LPSTR pszName,int cchName) PURE;
+    STDMETHOD(GetExtension)(THIS_ LPSTR pszExtension,int cchExtension) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE INewShortcutHookW
+  DECLARE_INTERFACE_(INewShortcutHookW,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(SetReferent)(THIS_ LPCWSTR pcszReferent,HWND hwnd) PURE;
+    STDMETHOD(GetReferent)(THIS_ LPWSTR pszReferent,int cchReferent) PURE;
+    STDMETHOD(SetFolder)(THIS_ LPCWSTR pcszFolder) PURE;
+    STDMETHOD(GetFolder)(THIS_ LPWSTR pszFolder,int cchFolder) PURE;
+    STDMETHOD(GetName)(THIS_ LPWSTR pszName,int cchName) PURE;
+    STDMETHOD(GetExtension)(THIS_ LPWSTR pszExtension,int cchExtension) PURE;
+  };
+
+#define INewShortcutHook __MINGW_NAME_AW(INewShortcutHook)
+
+#define INewShortcutHookVtbl __MINGW_NAME_AW_EXT(INewShortcutHook,Vtbl)
+
+#ifndef FO_MOVE
+
+#define FO_MOVE 0x0001
+#define FO_COPY 0x0002
+#define FO_DELETE 0x0003
+#define FO_RENAME 0x0004
+
+#define FOF_MULTIDESTFILES 0x0001
+#define FOF_CONFIRMMOUSE 0x0002
+#define FOF_SILENT 0x0004
+#define FOF_RENAMEONCOLLISION 0x0008
+#define FOF_NOCONFIRMATION 0x0010
+#define FOF_WANTMAPPINGHANDLE 0x0020
+
+#define FOF_ALLOWUNDO 0x0040
+#define FOF_FILESONLY 0x0080
+#define FOF_SIMPLEPROGRESS 0x0100
+#define FOF_NOCONFIRMMKDIR 0x0200
+#define FOF_NOERRORUI 0x0400
+#define FOF_NOCOPYSECURITYATTRIBS 0x0800
+#define FOF_NORECURSION 0x1000
+#define FOF_NO_CONNECTED_ELEMENTS 0x2000
+#define FOF_WANTNUKEWARNING 0x4000
+#define FOF_NORECURSEREPARSE 0x8000
+
+  typedef WORD FILEOP_FLAGS;
+
+#define PO_DELETE 0x0013
+#define PO_RENAME 0x0014
+#define PO_PORTCHANGE 0x0020
+
+#define PO_REN_PORT 0x0034
+
+  typedef UINT PRINTEROP_FLAGS;
+#endif
+
+#undef INTERFACE
+#define INTERFACE ICopyHookA
+  DECLARE_INTERFACE_(ICopyHookA,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD_(UINT,CopyCallback) (THIS_ HWND hwnd,UINT wFunc,UINT wFlags,LPCSTR pszSrcFile,DWORD dwSrcAttribs,LPCSTR pszDestFile,DWORD dwDestAttribs) PURE;
+  };
+
+  typedef ICopyHookA *LPCOPYHOOKA;
+
+#undef INTERFACE
+#define INTERFACE ICopyHookW
+  DECLARE_INTERFACE_(ICopyHookW,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD_(UINT,CopyCallback) (THIS_ HWND hwnd,UINT wFunc,UINT wFlags,LPCWSTR pszSrcFile,DWORD dwSrcAttribs,LPCWSTR pszDestFile,DWORD dwDestAttribs) PURE;
+  };
+
+  typedef ICopyHookW *LPCOPYHOOKW;
+
+#define ICopyHook __MINGW_NAME_AW(ICopyHook)
+#define LPCOPYHOOK __MINGW_NAME_AW(LPCOPYHOOK)
+
+#define ICopyHookVtbl __MINGW_NAME_AW_EXT(ICopyHook,Vtbl)
+
+#undef INTERFACE
+#define INTERFACE IFileViewerSite
+  DECLARE_INTERFACE_(IFileViewerSite,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(SetPinnedWindow) (THIS_ HWND hwnd) PURE;
+    STDMETHOD(GetPinnedWindow) (THIS_ HWND *phwnd) PURE;
+  };
+
+  typedef IFileViewerSite *LPFILEVIEWERSITE;
+
+#include <pshpack8.h>
+
+  typedef struct {
+    DWORD cbSize;
+    HWND hwndOwner;
+    int iShow;
+    DWORD dwFlags;
+    RECT rect;
+    IUnknown *punkRel;
+    OLECHAR strNewFile[MAX_PATH];
+  } FVSHOWINFO,*LPFVSHOWINFO;
+
+#include <poppack.h>
+
+#define FVSIF_RECT 0x00000001
+#define FVSIF_PINNED 0x00000002
+
+#define FVSIF_NEWFAILED 0x08000000
+
+#define FVSIF_NEWFILE 0x80000000
+#define FVSIF_CANVIEWIT 0x40000000
+
+#undef INTERFACE
+#define INTERFACE IFileViewerA
+  DECLARE_INTERFACE(IFileViewerA) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(ShowInitialize) (THIS_ LPFILEVIEWERSITE lpfsi) PURE;
+    STDMETHOD(Show) (THIS_ LPFVSHOWINFO pvsi) PURE;
+    STDMETHOD(PrintTo) (THIS_ LPSTR pszDriver,WINBOOL fSuppressUI) PURE;
+  };
+
+  typedef IFileViewerA *LPFILEVIEWERA;
+
+#undef INTERFACE
+#define INTERFACE IFileViewerW
+  DECLARE_INTERFACE(IFileViewerW) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(ShowInitialize) (THIS_ LPFILEVIEWERSITE lpfsi) PURE;
+    STDMETHOD(Show) (THIS_ LPFVSHOWINFO pvsi) PURE;
+    STDMETHOD(PrintTo) (THIS_ LPWSTR pszDriver,WINBOOL fSuppressUI) PURE;
+  };
+
+  typedef IFileViewerW *LPFILEVIEWERW;
+
+#define IFileViewer __MINGW_NAME_AW(IFileViewer)
+#define LPFILEVIEWER __MINGW_NAME_AW(LPFILEVIEWER)
+
+#define FCIDM_SHVIEWFIRST 0x0000
+#define FCIDM_SHVIEWLAST 0x7fff
+#define FCIDM_BROWSERFIRST 0xa000
+#define FCIDM_BROWSERLAST 0xbf00
+#define FCIDM_GLOBALFIRST 0x8000
+#define FCIDM_GLOBALLAST 0x9fff
+
+#define FCIDM_MENU_FILE (FCIDM_GLOBALFIRST+0x0000)
+#define FCIDM_MENU_EDIT (FCIDM_GLOBALFIRST+0x0040)
+#define FCIDM_MENU_VIEW (FCIDM_GLOBALFIRST+0x0080)
+#define FCIDM_MENU_VIEW_SEP_OPTIONS (FCIDM_GLOBALFIRST+0x0081)
+#define FCIDM_MENU_TOOLS (FCIDM_GLOBALFIRST+0x00c0)
+#define FCIDM_MENU_TOOLS_SEP_GOTO (FCIDM_GLOBALFIRST+0x00c1)
+#define FCIDM_MENU_HELP (FCIDM_GLOBALFIRST+0x0100)
+#define FCIDM_MENU_FIND (FCIDM_GLOBALFIRST+0x0140)
+#define FCIDM_MENU_EXPLORE (FCIDM_GLOBALFIRST+0x0150)
+#define FCIDM_MENU_FAVORITES (FCIDM_GLOBALFIRST+0x0170)
+
+#define FCIDM_TOOLBAR (FCIDM_BROWSERFIRST + 0)
+#define FCIDM_STATUS (FCIDM_BROWSERFIRST + 1)
+
+#define IDC_OFFLINE_HAND 103
+
+#define PANE_NONE -1
+#define PANE_ZONE 1
+#define PANE_OFFLINE 2
+#define PANE_PRINTER 3
+#define PANE_SSL 4
+#define PANE_NAVIGATION 5
+#define PANE_PROGRESS 6
+#define PANE_PRIVACY 7
+
+#define CDBOSC_SETFOCUS 0x00000000
+#define CDBOSC_KILLFOCUS 0x00000001
+#define CDBOSC_SELCHANGE 0x00000002
+#define CDBOSC_RENAME 0x00000003
+#define CDBOSC_STATECHANGE 0x00000004
+
+#undef INTERFACE
+#define INTERFACE ICommDlgBrowser
+  DECLARE_INTERFACE_(ICommDlgBrowser,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(OnDefaultCommand) (THIS_ struct IShellView *ppshv) PURE;
+    STDMETHOD(OnStateChange) (THIS_ struct IShellView *ppshv,ULONG uChange) PURE;
+    STDMETHOD(IncludeObject) (THIS_ struct IShellView *ppshv,LPCITEMIDLIST pidl) PURE;
+  };
+
+  typedef ICommDlgBrowser *LPCOMMDLGBROWSER;
+
+#define CDB2N_CONTEXTMENU_DONE 0x00000001
+#define CDB2N_CONTEXTMENU_START 0x00000002
+
+#define CDB2GVF_SHOWALLFILES 0x00000001
+
+#undef INTERFACE
+#define INTERFACE ICommDlgBrowser2
+  DECLARE_INTERFACE_(ICommDlgBrowser2,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(OnDefaultCommand) (THIS_ struct IShellView *ppshv) PURE;
+    STDMETHOD(OnStateChange) (THIS_ struct IShellView *ppshv,ULONG uChange) PURE;
+    STDMETHOD(IncludeObject) (THIS_ struct IShellView *ppshv,LPCITEMIDLIST pidl) PURE;
+    STDMETHOD(Notify) (THIS_ struct IShellView *ppshv,DWORD dwNotifyType) PURE;
+    STDMETHOD(GetDefaultMenuText) (THIS_ struct IShellView *ppshv,WCHAR *pszText,INT cchMax) PURE;
+    STDMETHOD(GetViewFlags)(THIS_ DWORD *pdwFlags) PURE;
+  };
+
+  typedef ICommDlgBrowser2 *LPCOMMDLGBROWSER2;
+
+#define SHGetPathFromIDList __MINGW_NAME_AW(SHGetPathFromIDList)
+#define SHCreateDirectoryEx __MINGW_NAME_AW(SHCreateDirectoryEx)
+
+  SHSTDAPI_(WINBOOL) SHGetPathFromIDListA(LPCITEMIDLIST pidl,LPSTR pszPath);
+  SHSTDAPI_(WINBOOL) SHGetPathFromIDListW(LPCITEMIDLIST pidl,LPWSTR pszPath);
+  SHSTDAPI_(int) SHCreateDirectory(HWND hwnd,LPCWSTR pszPath);
+  SHSTDAPI_(int) SHCreateDirectoryExA(HWND hwnd,LPCSTR pszPath,SECURITY_ATTRIBUTES *psa);
+  SHSTDAPI_(int) SHCreateDirectoryExW(HWND hwnd,LPCWSTR pszPath,SECURITY_ATTRIBUTES *psa);
+  SHSTDAPI SHOpenFolderAndSelectItems(LPCITEMIDLIST pidlFolder,UINT cidl,LPCITEMIDLIST *apidl,DWORD dwFlags);
+  SHSTDAPI SHCreateShellItem(LPCITEMIDLIST pidlParent,IShellFolder *psfParent,LPCITEMIDLIST pidl,IShellItem **ppsi);
+
+#define REGSTR_PATH_SPECIAL_FOLDERS REGSTR_PATH_EXPLORER TEXT("\\Shell Folders")
+
+#define CSIDL_DESKTOP 0x0000
+#define CSIDL_INTERNET 0x0001
+#define CSIDL_PROGRAMS 0x0002
+#define CSIDL_CONTROLS 0x0003
+#define CSIDL_PRINTERS 0x0004
+#define CSIDL_PERSONAL 0x0005
+#define CSIDL_FAVORITES 0x0006
+#define CSIDL_STARTUP 0x0007
+#define CSIDL_RECENT 0x0008
+#define CSIDL_SENDTO 0x0009
+#define CSIDL_BITBUCKET 0x000a
+#define CSIDL_STARTMENU 0x000b
+#define CSIDL_MYDOCUMENTS 0x000c
+#define CSIDL_MYMUSIC 0x000d
+#define CSIDL_MYVIDEO 0x000e
+#define CSIDL_DESKTOPDIRECTORY 0x0010
+#define CSIDL_DRIVES 0x0011
+#define CSIDL_NETWORK 0x0012
+#define CSIDL_NETHOOD 0x0013
+#define CSIDL_FONTS 0x0014
+#define CSIDL_TEMPLATES 0x0015
+#define CSIDL_COMMON_STARTMENU 0x0016
+#define CSIDL_COMMON_PROGRAMS 0X0017
+#define CSIDL_COMMON_STARTUP 0x0018
+#define CSIDL_COMMON_DESKTOPDIRECTORY 0x0019
+#define CSIDL_APPDATA 0x001a
+#define CSIDL_PRINTHOOD 0x001b
+
+#ifndef CSIDL_LOCAL_APPDATA
+#define CSIDL_LOCAL_APPDATA 0x001c
+#endif
+
+#define CSIDL_ALTSTARTUP 0x001d
+#define CSIDL_COMMON_ALTSTARTUP 0x001e
+#define CSIDL_COMMON_FAVORITES 0x001f
+
+#ifndef _SHFOLDER_H_
+#define CSIDL_INTERNET_CACHE 0x0020
+#define CSIDL_COOKIES 0x0021
+#define CSIDL_HISTORY 0x0022
+#define CSIDL_COMMON_APPDATA 0x0023
+#define CSIDL_WINDOWS 0x0024
+#define CSIDL_SYSTEM 0x0025
+#define CSIDL_PROGRAM_FILES 0x0026
+#define CSIDL_MYPICTURES 0x0027
+#endif
+
+#define CSIDL_PROFILE 0x0028
+#define CSIDL_SYSTEMX86 0x0029
+#define CSIDL_PROGRAM_FILESX86 0x002a
+
+#ifndef _SHFOLDER_H_
+#define CSIDL_PROGRAM_FILES_COMMON 0x002b
+#endif
+
+#define CSIDL_PROGRAM_FILES_COMMONX86 0x002c
+#define CSIDL_COMMON_TEMPLATES 0x002d
+
+#ifndef _SHFOLDER_H_
+#define CSIDL_COMMON_DOCUMENTS 0x002e
+#define CSIDL_COMMON_ADMINTOOLS 0x002f
+#define CSIDL_ADMINTOOLS 0x0030
+#endif
+
+#define CSIDL_CONNECTIONS 0x0031
+#define CSIDL_COMMON_MUSIC 0x0035
+#define CSIDL_COMMON_PICTURES 0x0036
+#define CSIDL_COMMON_VIDEO 0x0037
+#define CSIDL_RESOURCES 0x0038
+
+#ifndef _SHFOLDER_H_
+#define CSIDL_RESOURCES_LOCALIZED 0x0039
+#endif
+
+#define CSIDL_COMMON_OEM_LINKS 0x003a
+#define CSIDL_CDBURN_AREA 0x003b
+
+#define CSIDL_COMPUTERSNEARME 0x003d
+
+#ifndef _SHFOLDER_H_
+#define CSIDL_FLAG_CREATE 0x8000
+#endif
+
+#define CSIDL_FLAG_DONT_VERIFY 0x4000
+#define CSIDL_FLAG_NO_ALIAS 0x1000
+#define CSIDL_FLAG_PER_USER_INIT 0x0800
+#define CSIDL_FLAG_MASK 0xFF00
+
+#define SHGetSpecialFolderPath __MINGW_NAME_AW(SHGetSpecialFolderPath)
+#define SHGetFolderPath __MINGW_NAME_AW(SHGetFolderPath)
+#define SHGetFolderPathAndSubDir __MINGW_NAME_AW(SHGetFolderPathAndSubDir)
+
+  SHSTDAPI SHGetSpecialFolderLocation(HWND hwnd,int csidl,LPITEMIDLIST *ppidl);
+  SHSTDAPI_(void) SHFlushSFCache(void);
+  SHSTDAPI_(LPITEMIDLIST) SHCloneSpecialIDList(HWND hwnd,int csidl,WINBOOL fCreate);
+  SHSTDAPI_(WINBOOL) SHGetSpecialFolderPathA(HWND hwnd,LPSTR pszPath,int csidl,WINBOOL fCreate);
+  SHSTDAPI_(WINBOOL) SHGetSpecialFolderPathW(HWND hwnd,LPWSTR pszPath,int csidl,WINBOOL fCreate);
+
+  typedef enum {
+    SHGFP_TYPE_CURRENT = 0,SHGFP_TYPE_DEFAULT = 1
+  } SHGFP_TYPE;
+
+  SHFOLDERAPI SHGetFolderPathA(HWND hwnd,int csidl,HANDLE hToken,DWORD dwFlags,LPSTR pszPath);
+  SHFOLDERAPI SHGetFolderPathW(HWND hwnd,int csidl,HANDLE hToken,DWORD dwFlags,LPWSTR pszPath);
+  SHSTDAPI SHGetFolderLocation(HWND hwnd,int csidl,HANDLE hToken,DWORD dwFlags,LPITEMIDLIST *ppidl);
+  SHFOLDERAPI SHGetFolderPathAndSubDirA(HWND hwnd,int csidl,HANDLE hToken,DWORD dwFlags,LPCSTR pszSubDir,LPSTR pszPath);
+  SHFOLDERAPI SHGetFolderPathAndSubDirW(HWND hwnd,int csidl,HANDLE hToken,DWORD dwFlags,LPCWSTR pszSubDir,LPWSTR pszPath);
+
+#define FCS_READ 0x00000001
+#define FCS_FORCEWRITE 0x00000002
+#define FCS_WRITE (FCS_READ | FCS_FORCEWRITE)
+#define FCS_FLAG_DRAGDROP 2
+
+#define FCSM_VIEWID 0x00000001
+#define FCSM_WEBVIEWTEMPLATE 0x00000002
+#define FCSM_INFOTIP 0x00000004
+#define FCSM_CLSID 0x00000008
+#define FCSM_ICONFILE 0x00000010
+#define FCSM_LOGO 0x00000020
+#define FCSM_FLAGS 0x00000040
+
+#include <pshpack8.h>
+
+  typedef struct {
+    DWORD dwSize;
+    DWORD dwMask;
+    SHELLVIEWID *pvid;
+    LPSTR pszWebViewTemplate;
+    DWORD cchWebViewTemplate;
+    LPSTR pszWebViewTemplateVersion;
+    LPSTR pszInfoTip;
+    DWORD cchInfoTip;
+    CLSID *pclsid;
+    DWORD dwFlags;
+    LPSTR pszIconFile;
+    DWORD cchIconFile;
+    int iIconIndex;
+    LPSTR pszLogo;
+    DWORD cchLogo;
+  } SHFOLDERCUSTOMSETTINGSA,*LPSHFOLDERCUSTOMSETTINGSA;
+
+  typedef struct {
+    DWORD dwSize;
+    DWORD dwMask;
+    SHELLVIEWID *pvid;
+    LPWSTR pszWebViewTemplate;
+    DWORD cchWebViewTemplate;
+    LPWSTR pszWebViewTemplateVersion;
+    LPWSTR pszInfoTip;
+    DWORD cchInfoTip;
+    CLSID *pclsid;
+    DWORD dwFlags;
+    LPWSTR pszIconFile;
+    DWORD cchIconFile;
+    int iIconIndex;
+    LPWSTR pszLogo;
+    DWORD cchLogo;
+  } SHFOLDERCUSTOMSETTINGSW,*LPSHFOLDERCUSTOMSETTINGSW;
+
+#include <poppack.h>
+
+#define SHFOLDERCUSTOMSETTINGS __MINGW_NAME_AW(SHFOLDERCUSTOMSETTINGS)
+#define SHGetSetFolderCustomSettings __MINGW_NAME_AW(SHGetSetFolderCustomSettings)
+#define LPSHFOLDERCUSTOMSETTINGS __MINGW_NAME_AW(LPSHFOLDERCUSTOMSETTINGS)
+
+  SHSTDAPI SHGetSetFolderCustomSettingsA(LPSHFOLDERCUSTOMSETTINGSA pfcs,LPCSTR pszPath,DWORD dwReadWrite);
+  SHSTDAPI SHGetSetFolderCustomSettingsW(LPSHFOLDERCUSTOMSETTINGSW pfcs,LPCWSTR pszPath,DWORD dwReadWrite);
+
+  typedef int (CALLBACK *BFFCALLBACK)(HWND hwnd,UINT uMsg,LPARAM lParam,LPARAM lpData);
+
+#include <pshpack8.h>
+
+  typedef struct _browseinfoA {
+    HWND hwndOwner;
+    LPCITEMIDLIST pidlRoot;
+    LPSTR pszDisplayName;
+    LPCSTR lpszTitle;
+    UINT ulFlags;
+    BFFCALLBACK lpfn;
+    LPARAM lParam;
+    int iImage;
+  } BROWSEINFOA,*PBROWSEINFOA,*LPBROWSEINFOA;
+
+  typedef struct _browseinfoW {
+    HWND hwndOwner;
+    LPCITEMIDLIST pidlRoot;
+    LPWSTR pszDisplayName;
+    LPCWSTR lpszTitle;
+    UINT ulFlags;
+    BFFCALLBACK lpfn;
+    LPARAM lParam;
+    int iImage;
+  } BROWSEINFOW,*PBROWSEINFOW,*LPBROWSEINFOW;
+
+#include <poppack.h>
+
+#define BROWSEINFO __MINGW_NAME_AW(BROWSEINFO)
+#define PBROWSEINFO __MINGW_NAME_AW(PBROWSEINFO)
+#define LPBROWSEINFO __MINGW_NAME_AW(LPBROWSEINFO)
+
+#define BIF_RETURNONLYFSDIRS 0x0001
+#define BIF_DONTGOBELOWDOMAIN 0x0002
+#define BIF_STATUSTEXT 0x0004
+
+#define BIF_RETURNFSANCESTORS 0x0008
+#define BIF_EDITBOX 0x0010
+#define BIF_VALIDATE 0x0020
+
+#define BIF_NEWDIALOGSTYLE 0x0040
+
+#define BIF_USENEWUI (BIF_NEWDIALOGSTYLE | BIF_EDITBOX)
+
+#define BIF_BROWSEINCLUDEURLS 0x0080
+#define BIF_UAHINT 0x0100
+#define BIF_NONEWFOLDERBUTTON 0x0200
+#define BIF_NOTRANSLATETARGETS 0x0400
+
+#define BIF_BROWSEFORCOMPUTER 0x1000
+#define BIF_BROWSEFORPRINTER 0x2000
+#define BIF_BROWSEINCLUDEFILES 0x4000
+#define BIF_SHAREABLE 0x8000
+
+#define BFFM_INITIALIZED 1
+#define BFFM_SELCHANGED 2
+#define BFFM_VALIDATEFAILEDA 3
+#define BFFM_VALIDATEFAILEDW 4
+#define BFFM_IUNKNOWN 5
+
+#define BFFM_SETSTATUSTEXTA (WM_USER + 100)
+#define BFFM_ENABLEOK (WM_USER + 101)
+#define BFFM_SETSELECTIONA (WM_USER + 102)
+#define BFFM_SETSELECTIONW (WM_USER + 103)
+#define BFFM_SETSTATUSTEXTW (WM_USER + 104)
+#define BFFM_SETOKTEXT (WM_USER + 105)
+#define BFFM_SETEXPANDED (WM_USER + 106)
+
+  SHSTDAPI_(LPITEMIDLIST) SHBrowseForFolderA(LPBROWSEINFOA lpbi);
+  SHSTDAPI_(LPITEMIDLIST) SHBrowseForFolderW(LPBROWSEINFOW lpbi);
+
+#define SHBrowseForFolder __MINGW_NAME_AW(SHBrowseForFolder)
+#define BFFM_SETSTATUSTEXT __MINGW_NAME_AW(BFFM_SETSTATUSTEXT)
+#define BFFM_SETSELECTION __MINGW_NAME_AW(BFFM_SETSELECTION)
+#define BFFM_VALIDATEFAILED __MINGW_NAME_AW(BFFM_VALIDATEFAILED)
+
+  SHSTDAPI SHLoadInProc(REFCLSID rclsid);
+
+  SHSTDAPI SHEnableServiceObject(REFCLSID rclsid,WINBOOL fEnable);
+
+  enum {
+    ISHCUTCMDID_DOWNLOADICON = 0,ISHCUTCMDID_INTSHORTCUTCREATE = 1
+  };
+#define CMDID_INTSHORTCUTCREATE ISHCUTCMDID_INTSHORTCUTCREATE
+
+  SHSTDAPI SHGetDesktopFolder(IShellFolder **ppshf);
+
+#define STR_FILE_SYS_BIND_DATA L"File System Bind Data"
+
+#undef INTERFACE
+#define INTERFACE IFileSystemBindData
+  DECLARE_INTERFACE_(IFileSystemBindData,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(SetFindData)(THIS_ const WIN32_FIND_DATAW *pfd) PURE;
+    STDMETHOD(GetFindData)(THIS_ WIN32_FIND_DATAW *pfd) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE IShellDetails
+  DECLARE_INTERFACE_(IShellDetails,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(GetDetailsOf)(THIS_ LPCITEMIDLIST pidl,UINT iColumn,SHELLDETAILS *pDetails) PURE;
+    STDMETHOD(ColumnClick)(THIS_ UINT iColumn) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE IObjMgr
+
+  DECLARE_INTERFACE_(IObjMgr,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(Append) (THIS_ IUnknown *punk) PURE;
+    STDMETHOD(Remove) (THIS_ IUnknown *punk) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE ICurrentWorkingDirectory
+  DECLARE_INTERFACE_(ICurrentWorkingDirectory,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(GetDirectory) (THIS_ LPWSTR pwzPath,DWORD cchSize) PURE;
+    STDMETHOD(SetDirectory) (THIS_ LPCWSTR pwzPath) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE IACList
+  DECLARE_INTERFACE_(IACList,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(Expand) (THIS_ LPCOLESTR pszExpand) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE IACList2
+  typedef enum _tagAUTOCOMPLETELISTOPTIONS {
+    ACLO_NONE = 0,ACLO_CURRENTDIR = 1,ACLO_MYCOMPUTER = 2,ACLO_DESKTOP = 4,ACLO_FAVORITES = 8,ACLO_FILESYSONLY = 16,ACLO_FILESYSDIRS = 32
+  } AUTOCOMPLETELISTOPTIONS;
+
+  DECLARE_INTERFACE_(IACList2,IACList) {
+    STDMETHOD(SetOptions)(THIS_ DWORD dwFlag) PURE;
+    STDMETHOD(GetOptions)(THIS_ DWORD *pdwFlag) PURE;
+  };
+
+#define PROGDLG_NORMAL 0x00000000
+#define PROGDLG_MODAL 0x00000001
+#define PROGDLG_AUTOTIME 0x00000002
+#define PROGDLG_NOTIME 0x00000004
+#define PROGDLG_NOMINIMIZE 0x00000008
+#define PROGDLG_NOPROGRESSBAR 0x00000010
+
+#define PDTIMER_RESET 0x00000001
+
+#undef INTERFACE
+#define INTERFACE IProgressDialog
+  DECLARE_INTERFACE_(IProgressDialog,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(StartProgressDialog)(THIS_ HWND hwndParent,IUnknown *punkEnableModless,DWORD dwFlags,LPCVOID pvResevered) PURE;
+    STDMETHOD(StopProgressDialog)(THIS) PURE;
+    STDMETHOD(SetTitle)(THIS_ LPCWSTR pwzTitle) PURE;
+    STDMETHOD(SetAnimation)(THIS_ HINSTANCE hInstAnimation,UINT idAnimation) PURE;
+    STDMETHOD_(WINBOOL,HasUserCancelled) (THIS) PURE;
+    STDMETHOD(SetProgress)(THIS_ DWORD dwCompleted,DWORD dwTotal) PURE;
+    STDMETHOD(SetProgress64)(THIS_ ULONGLONG ullCompleted,ULONGLONG ullTotal) PURE;
+    STDMETHOD(SetLine)(THIS_ DWORD dwLineNum,LPCWSTR pwzString,WINBOOL fCompactPath,LPCVOID pvResevered) PURE;
+    STDMETHOD(SetCancelMsg)(THIS_ LPCWSTR pwzCancelMsg,LPCVOID pvResevered) PURE;
+    STDMETHOD(Timer)(THIS_ DWORD dwTimerAction,LPCVOID pvResevered) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE IInputObjectSite
+  DECLARE_INTERFACE_(IInputObjectSite,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(OnFocusChangeIS)(THIS_ IUnknown *punkObj,WINBOOL fSetFocus) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE IInputObject
+  DECLARE_INTERFACE_(IInputObject,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(UIActivateIO)(THIS_ WINBOOL fActivate,LPMSG lpMsg) PURE;
+    STDMETHOD(HasFocusIO)(THIS) PURE;
+    STDMETHOD(TranslateAcceleratorIO)(THIS_ LPMSG lpMsg) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE IDockingWindowSite
+  DECLARE_INTERFACE_(IDockingWindowSite,IOleWindow) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(GetWindow) (THIS_ HWND *lphwnd) PURE;
+    STDMETHOD(ContextSensitiveHelp) (THIS_ WINBOOL fEnterMode) PURE;
+    STDMETHOD(GetBorderDW) (THIS_ IUnknown *punkObj,LPRECT prcBorder) PURE;
+    STDMETHOD(RequestBorderSpaceDW) (THIS_ IUnknown *punkObj,LPCBORDERWIDTHS pbw) PURE;
+    STDMETHOD(SetBorderSpaceDW) (THIS_ IUnknown *punkObj,LPCBORDERWIDTHS pbw) PURE;
+  };
+
+#define DWFRF_NORMAL 0x0000
+#define DWFRF_DELETECONFIGDATA 0x0001
+
+#define DWFAF_HIDDEN 0x0001
+
+#undef INTERFACE
+#define INTERFACE IDockingWindowFrame
+  DECLARE_INTERFACE_(IDockingWindowFrame,IOleWindow) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(GetWindow) (THIS_ HWND *lphwnd) PURE;
+    STDMETHOD(ContextSensitiveHelp) (THIS_ WINBOOL fEnterMode) PURE;
+    STDMETHOD(AddToolbar) (THIS_ IUnknown *punkSrc,LPCWSTR pwszItem,DWORD dwAddFlags) PURE;
+    STDMETHOD(RemoveToolbar) (THIS_ IUnknown *punkSrc,DWORD dwRemoveFlags) PURE;
+    STDMETHOD(FindToolbar) (THIS_ LPCWSTR pwszItem,REFIID riid,void **ppv) PURE;
+  };
+
+#define IRTIR_TASK_NOT_RUNNING 0
+#define IRTIR_TASK_RUNNING 1
+#define IRTIR_TASK_SUSPENDED 2
+#define IRTIR_TASK_PENDING 3
+#define IRTIR_TASK_FINISHED 4
+
+#undef INTERFACE
+#define INTERFACE IRunnableTask
+
+  DECLARE_INTERFACE_(IRunnableTask,IUnknown) {
+    STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD (Run)(THIS) PURE;
+    STDMETHOD (Kill)(THIS_ WINBOOL fWait) PURE;
+    STDMETHOD (Suspend)(THIS) PURE;
+    STDMETHOD (Resume)(THIS) PURE;
+    STDMETHOD_(ULONG,IsRunning)(THIS) PURE;
+  };
+
+  typedef IRunnableTask *LPRUNNABLETASK;
+
+#define TASKOWNERID GUID
+#define REFTASKOWNERID REFGUID
+
+#define ITSSFLAG_COMPLETE_ON_DESTROY 0x0000
+#define ITSSFLAG_KILL_ON_DESTROY 0x0001
+#define ITSSFLAG_SUPPORTS_TERMINATE 0x0002
+#define ITSSFLAG_FLAGS_MASK 0x0003
+#define ITSSFLAG_THREAD_TERMINATE_TIMEOUT 0x0010
+#define ITSSFLAG_THREAD_POOL_TIMEOUT 0x0020
+#define ITSS_THREAD_DESTROY_DEFAULT_TIMEOUT (60*1000)
+#define ITSS_THREAD_TERMINATE_TIMEOUT (INFINITE)
+#define ITSS_THREAD_TIMEOUT_NO_CHANGE (INFINITE - 1)
+
+#define ITSAT_DEFAULT_LPARAM 0xffffffff
+#define ITSAT_DEFAULT_PRIORITY 0x10000000
+#define ITSAT_MAX_PRIORITY 0x7fffffff
+#define ITSAT_MIN_PRIORITY 0x00000000
+
+#define TOID_NULL CLSID_NULL
+
+#undef INTERFACE
+#define INTERFACE IShellTaskScheduler
+  DECLARE_INTERFACE_(IShellTaskScheduler,IUnknown) {
+    STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD (AddTask)(THIS_ IRunnableTask *pTask,REFTASKOWNERID rtoid,DWORD_PTR lParam,DWORD dwPriority) PURE;
+    STDMETHOD (RemoveTasks)(THIS_ REFTASKOWNERID rtoid,DWORD_PTR lParam,WINBOOL fWaitIfRunning) PURE;
+    STDMETHOD_(UINT,CountTasks)(THIS_ REFTASKOWNERID rtoid) PURE;
+    STDMETHOD (Status)(THIS_ DWORD dwReleaseStatus,DWORD dwThreadTimeout) PURE;
+  };
+
+  typedef IShellTaskScheduler *LPSHELLTASKSCHEDULER;
+
+#define ITSSFLAG_TASK_PLACEINFRONT 0x00000001
+#define ITSSFLAG_TASK_PLACEINBACK 0x00000002
+
+#undef INTERFACE
+#define INTERFACE IShellTaskScheduler2
+  DECLARE_INTERFACE_(IShellTaskScheduler2,IShellTaskScheduler) {
+    STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD (AddTask)(THIS_ IRunnableTask *pTask,REFTASKOWNERID rtoid,DWORD_PTR lParam,DWORD dwPriority) PURE;
+    STDMETHOD (RemoveTasks)(THIS_ REFTASKOWNERID rtoid,DWORD_PTR lParam,WINBOOL fWaitIfRunning) PURE;
+    STDMETHOD_(UINT,CountTasks)(THIS_ REFTASKOWNERID rtoid) PURE;
+    STDMETHOD (Status)(THIS_ DWORD dwReleaseStatus,DWORD dwThreadTimeout) PURE;
+    STDMETHOD (AddTask2)(THIS_ IRunnableTask *pTask,REFTASKOWNERID rtoid,DWORD_PTR lParam,DWORD dwPriority,DWORD grfFlags) PURE;
+    STDMETHOD (MoveTask)(THIS_ REFTASKOWNERID rtoid,DWORD_PTR lParam,DWORD dwPriority,DWORD grfFlags) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE IThumbnailCapture
+  DECLARE_INTERFACE_ (IThumbnailCapture,IUnknown) {
+    STDMETHOD (CaptureThumbnail) (THIS_ const SIZE *pMaxSize,IUnknown *pHTMLDoc2,HBITMAP *phbmThumbnail) PURE;
+  };
+  typedef IThumbnailCapture *LPTHUMBNAILCAPTURE;
+
+#include <pshpack8.h>
+  typedef struct _EnumImageStoreDATAtag {
+    WCHAR szPath[MAX_PATH];
+    FILETIME ftTimeStamp;
+  } ENUMSHELLIMAGESTOREDATA,*PENUMSHELLIMAGESTOREDATA;
+
+#include <poppack.h>
+
+#undef INTERFACE
+#define INTERFACE IEnumShellImageStore
+  DECLARE_INTERFACE_(IEnumShellImageStore,IUnknown) {
+    STDMETHOD (QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD (Reset) (THIS) PURE;
+    STDMETHOD (Next) (THIS_ ULONG celt,PENUMSHELLIMAGESTOREDATA *prgElt,ULONG *pceltFetched) PURE;
+    STDMETHOD (Skip) (THIS_ ULONG celt) PURE;
+    STDMETHOD (Clone) (THIS_ IEnumShellImageStore **ppEnum) PURE;
+  };
+
+  typedef IEnumShellImageStore *LPENUMSHELLIMAGESTORE;
+
+#define SHIMSTCAPFLAG_LOCKABLE 0x0001
+#define SHIMSTCAPFLAG_PURGEABLE 0x0002
+
+#undef INTERFACE
+#define INTERFACE IShellImageStore
+  DECLARE_INTERFACE_(IShellImageStore,IUnknown) {
+    STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD (Open) (THIS_ DWORD dwMode,DWORD *pdwLock) PURE;
+    STDMETHOD (Create) (THIS_ DWORD dwMode,DWORD *pdwLock) PURE;
+    STDMETHOD (ReleaseLock) (THIS_ DWORD const *pdwLock) PURE;
+    STDMETHOD (Close) (THIS_ DWORD const *pdwLock) PURE;
+    STDMETHOD (Commit) (THIS_ DWORD const *pdwLock) PURE;
+    STDMETHOD (IsLocked) (THIS) PURE;
+    STDMETHOD (GetMode) (THIS_ DWORD *pdwMode) PURE;
+    STDMETHOD (GetCapabilities) (THIS_ DWORD *pdwCapMask) PURE;
+    STDMETHOD (AddEntry) (THIS_ LPCWSTR pszName,const FILETIME *pftTimeStamp,DWORD dwMode,HBITMAP hImage) PURE;
+    STDMETHOD (GetEntry) (THIS_ LPCWSTR pszName,DWORD dwMode,HBITMAP *phImage) PURE;
+    STDMETHOD (DeleteEntry) (THIS_ LPCWSTR pszName) PURE;
+    STDMETHOD (IsEntryInStore) (THIS_ LPCWSTR pszName,FILETIME *pftTimeStamp) PURE;
+    STDMETHOD (Enum) (THIS_ LPENUMSHELLIMAGESTORE *ppEnum) PURE;
+  };
+
+  typedef IShellImageStore *LPSHELLIMAGESTORE;
+
+#define ISFB_MASK_STATE 0x00000001
+#define ISFB_MASK_BKCOLOR 0x00000002
+#define ISFB_MASK_VIEWMODE 0x00000004
+#define ISFB_MASK_SHELLFOLDER 0x00000008
+#define ISFB_MASK_IDLIST 0x00000010
+#define ISFB_MASK_COLORS 0x00000020
+
+#define ISFB_STATE_DEFAULT 0x00000000
+#define ISFB_STATE_DEBOSSED 0x00000001
+#define ISFB_STATE_ALLOWRENAME 0x00000002
+#define ISFB_STATE_NOSHOWTEXT 0x00000004
+#define ISFB_STATE_CHANNELBAR 0x00000010
+#define ISFB_STATE_QLINKSMODE 0x00000020
+#define ISFB_STATE_FULLOPEN 0x00000040
+#define ISFB_STATE_NONAMESORT 0x00000080
+#define ISFB_STATE_BTNMINSIZE 0x00000100
+
+#define ISFBVIEWMODE_SMALLICONS 0x0001
+#define ISFBVIEWMODE_LARGEICONS 0x0002
+#define ISFBVIEWMODE_LOGOS 0x0003
+
+#include <pshpack8.h>
+
+  typedef struct {
+    DWORD dwMask;
+    DWORD dwStateMask;
+    DWORD dwState;
+    COLORREF crBkgnd;
+    COLORREF crBtnLt;
+    COLORREF crBtnDk;
+    WORD wViewMode;
+    WORD wAlign;
+    IShellFolder *psf;
+    LPITEMIDLIST pidl;
+  } BANDINFOSFB,*PBANDINFOSFB;
+
+#include <poppack.h>
+
+#undef INTERFACE
+#define INTERFACE IShellFolderBand
+  DECLARE_INTERFACE_(IShellFolderBand,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(InitializeSFB)(THIS_ IShellFolder *psf,LPCITEMIDLIST pidl) PURE;
+    STDMETHOD(SetBandInfoSFB)(THIS_ PBANDINFOSFB pbi) PURE;
+    STDMETHOD(GetBandInfoSFB)(THIS_ PBANDINFOSFB pbi) PURE;
+  };
+
+  enum {
+    SFBID_PIDLCHANGED,
+  };
+
+#undef INTERFACE
+#define INTERFACE IDeskBarClient
+  DECLARE_INTERFACE_(IDeskBarClient,IOleWindow) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(GetWindow) (THIS_ HWND *lphwnd) PURE;
+    STDMETHOD(ContextSensitiveHelp) (THIS_ WINBOOL fEnterMode) PURE;
+    STDMETHOD(SetDeskBarSite) (THIS_ IUnknown *punkSite) PURE;
+    STDMETHOD(SetModeDBC) (THIS_ DWORD dwMode) PURE;
+    STDMETHOD(UIActivateDBC) (THIS_ DWORD dwState) PURE;
+    STDMETHOD(GetSize) (THIS_ DWORD dwWhich,LPRECT prc) PURE;
+  };
+
+#define DBC_GS_IDEAL 0
+#define DBC_GS_SIZEDOWN 1
+
+#define DBC_HIDE 0
+#define DBC_SHOW 1
+#define DBC_SHOWOBSCURE 2
+
+  enum {
+    DBCID_EMPTY = 0,DBCID_ONDRAG = 1,DBCID_CLSIDOFBAR = 2,DBCID_RESIZE = 3,DBCID_GETBAR = 4
+  };
+
+#ifdef _WININET_
+  typedef struct _tagWALLPAPEROPT {
+    DWORD dwSize;
+    DWORD dwStyle;
+  } WALLPAPEROPT;
+
+  typedef WALLPAPEROPT *LPWALLPAPEROPT;
+  typedef const WALLPAPEROPT *LPCWALLPAPEROPT;
+
+  typedef struct _tagCOMPONENTSOPT {
+    DWORD dwSize;
+    WINBOOL fEnableComponents;
+    WINBOOL fActiveDesktop;
+  } COMPONENTSOPT;
+
+  typedef COMPONENTSOPT *LPCOMPONENTSOPT;
+  typedef const COMPONENTSOPT *LPCCOMPONENTSOPT;
+
+  typedef struct _tagCOMPPOS {
+    DWORD dwSize;
+    int iLeft;
+    int iTop;
+    DWORD dwWidth;
+    DWORD dwHeight;
+    int izIndex;
+    WINBOOL fCanResize;
+    WINBOOL fCanResizeX;
+    WINBOOL fCanResizeY;
+    int iPreferredLeftPercent;
+    int iPreferredTopPercent;
+  } COMPPOS;
+
+  typedef COMPPOS *LPCOMPPOS;
+  typedef const COMPPOS *LPCCOMPPOS;
+
+  typedef struct _tagCOMPSTATEINFO {
+    DWORD dwSize;
+    int iLeft;
+    int iTop;
+    DWORD dwWidth;
+    DWORD dwHeight;
+    DWORD dwItemState;
+  } COMPSTATEINFO;
+
+  typedef COMPSTATEINFO *LPCOMPSTATEINFO;
+  typedef const COMPSTATEINFO *LPCCOMPSTATEINFO;
+
+#define COMPONENT_TOP (0x3fffffff)
+
+#define COMP_TYPE_HTMLDOC 0
+#define COMP_TYPE_PICTURE 1
+#define COMP_TYPE_WEBSITE 2
+#define COMP_TYPE_CONTROL 3
+#define COMP_TYPE_CFHTML 4
+#define COMP_TYPE_MAX 4
+
+  typedef struct _tagIE4COMPONENT {
+    DWORD dwSize;
+    DWORD dwID;
+    int iComponentType;
+    WINBOOL fChecked;
+    WINBOOL fDirty;
+    WINBOOL fNoScroll;
+    COMPPOS cpPos;
+    WCHAR wszFriendlyName[MAX_PATH];
+    WCHAR wszSource[INTERNET_MAX_URL_LENGTH];
+    WCHAR wszSubscribedURL[INTERNET_MAX_URL_LENGTH];
+  } IE4COMPONENT;
+
+  typedef IE4COMPONENT *LPIE4COMPONENT;
+  typedef const IE4COMPONENT *LPCIE4COMPONENT;
+
+  typedef struct _tagCOMPONENT {
+    DWORD dwSize;
+    DWORD dwID;
+    int iComponentType;
+    WINBOOL fChecked;
+    WINBOOL fDirty;
+    WINBOOL fNoScroll;
+    COMPPOS cpPos;
+    WCHAR wszFriendlyName[MAX_PATH];
+    WCHAR wszSource[INTERNET_MAX_URL_LENGTH];
+    WCHAR wszSubscribedURL[INTERNET_MAX_URL_LENGTH];
+    DWORD dwCurItemState;
+    COMPSTATEINFO csiOriginal;
+    COMPSTATEINFO csiRestored;
+  } COMPONENT;
+
+  typedef COMPONENT *LPCOMPONENT;
+  typedef const COMPONENT *LPCCOMPONENT;
+
+#define IS_NORMAL 0x00000001
+#define IS_FULLSCREEN 0x00000002
+#define IS_SPLIT 0x00000004
+#define IS_VALIDSIZESTATEBITS (IS_NORMAL | IS_SPLIT | IS_FULLSCREEN)
+#define IS_VALIDSTATEBITS (IS_NORMAL | IS_SPLIT | IS_FULLSCREEN | 0x80000000 | 0x40000000)
+
+#define AD_APPLY_SAVE 0x00000001
+#define AD_APPLY_HTMLGEN 0x00000002
+#define AD_APPLY_REFRESH 0x00000004
+#define AD_APPLY_ALL (AD_APPLY_SAVE | AD_APPLY_HTMLGEN | AD_APPLY_REFRESH)
+#define AD_APPLY_FORCE 0x00000008
+#define AD_APPLY_BUFFERED_REFRESH 0x00000010
+#define AD_APPLY_DYNAMICREFRESH 0x00000020
+
+#define WPSTYLE_CENTER 0
+#define WPSTYLE_TILE 1
+#define WPSTYLE_STRETCH 2
+#define WPSTYLE_MAX 3
+
+#define COMP_ELEM_TYPE 0x00000001
+#define COMP_ELEM_CHECKED 0x00000002
+#define COMP_ELEM_DIRTY 0x00000004
+#define COMP_ELEM_NOSCROLL 0x00000008
+#define COMP_ELEM_POS_LEFT 0x00000010
+#define COMP_ELEM_POS_TOP 0x00000020
+#define COMP_ELEM_SIZE_WIDTH 0x00000040
+#define COMP_ELEM_SIZE_HEIGHT 0x00000080
+#define COMP_ELEM_POS_ZINDEX 0x00000100
+#define COMP_ELEM_SOURCE 0x00000200
+#define COMP_ELEM_FRIENDLYNAME 0x00000400
+#define COMP_ELEM_SUBSCRIBEDURL 0x00000800
+#define COMP_ELEM_ORIGINAL_CSI 0x00001000
+#define COMP_ELEM_RESTORED_CSI 0x00002000
+#define COMP_ELEM_CURITEMSTATE 0x00004000
+
+#define COMP_ELEM_ALL (COMP_ELEM_TYPE | COMP_ELEM_CHECKED | COMP_ELEM_DIRTY | COMP_ELEM_NOSCROLL | COMP_ELEM_POS_LEFT | COMP_ELEM_SIZE_WIDTH | COMP_ELEM_SIZE_HEIGHT | COMP_ELEM_POS_ZINDEX | COMP_ELEM_SOURCE | COMP_ELEM_FRIENDLYNAME | COMP_ELEM_POS_TOP | COMP_ELEM_SUBSCRIBEDURL | COMP_ELEM_ORIGINAL_CSI | COMP_ELEM_RESTORED_CSI | COMP_ELEM_CURITEMSTATE)
+
+  typedef enum tagDTI_ADTIWUI {
+    DTI_ADDUI_DEFAULT = 0x00000000,DTI_ADDUI_DISPSUBWIZARD = 0x00000001,DTI_ADDUI_POSITIONITEM = 0x00000002
+  };
+
+#define ADDURL_SILENT 0X0001
+
+#define COMPONENT_DEFAULT_LEFT (0xFFFF)
+#define COMPONENT_DEFAULT_TOP (0xFFFF)
+
+#undef INTERFACE
+#define INTERFACE IActiveDesktop
+  DECLARE_INTERFACE_(IActiveDesktop,IUnknown) {
+    STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD (ApplyChanges)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD (GetWallpaper)(THIS_ LPWSTR pwszWallpaper,UINT cchWallpaper,DWORD dwReserved) PURE;
+    STDMETHOD (SetWallpaper)(THIS_ LPCWSTR pwszWallpaper,DWORD dwReserved) PURE;
+    STDMETHOD (GetWallpaperOptions)(THIS_ LPWALLPAPEROPT pwpo,DWORD dwReserved) PURE;
+    STDMETHOD (SetWallpaperOptions)(THIS_ LPCWALLPAPEROPT pwpo,DWORD dwReserved) PURE;
+    STDMETHOD (GetPattern)(THIS_ LPWSTR pwszPattern,UINT cchPattern,DWORD dwReserved) PURE;
+    STDMETHOD (SetPattern)(THIS_ LPCWSTR pwszPattern,DWORD dwReserved) PURE;
+    STDMETHOD (GetDesktopItemOptions)(THIS_ LPCOMPONENTSOPT pco,DWORD dwReserved) PURE;
+    STDMETHOD (SetDesktopItemOptions)(THIS_ LPCCOMPONENTSOPT pco,DWORD dwReserved) PURE;
+    STDMETHOD (AddDesktopItem)(THIS_ LPCCOMPONENT pcomp,DWORD dwReserved) PURE;
+    STDMETHOD (AddDesktopItemWithUI)(THIS_ HWND hwnd,LPCOMPONENT pcomp,DWORD dwReserved) PURE;
+    STDMETHOD (ModifyDesktopItem)(THIS_ LPCCOMPONENT pcomp,DWORD dwFlags) PURE;
+    STDMETHOD (RemoveDesktopItem)(THIS_ LPCCOMPONENT pcomp,DWORD dwReserved) PURE;
+    STDMETHOD (GetDesktopItemCount)(THIS_ LPINT lpiCount,DWORD dwReserved) PURE;
+    STDMETHOD (GetDesktopItem)(THIS_ int nComponent,LPCOMPONENT pcomp,DWORD dwReserved) PURE;
+    STDMETHOD (GetDesktopItemByID)(THIS_ ULONG_PTR dwID,LPCOMPONENT pcomp,DWORD dwReserved) PURE;
+    STDMETHOD (GenerateDesktopItemHtml)(THIS_ LPCWSTR pwszFileName,LPCOMPONENT pcomp,DWORD dwReserved) PURE;
+    STDMETHOD (AddUrl)(THIS_ HWND hwnd,LPCWSTR pszSource,LPCOMPONENT pcomp,DWORD dwFlags) PURE;
+    STDMETHOD (GetDesktopItemBySource)(THIS_ LPCWSTR pwszSource,LPCOMPONENT pcomp,DWORD dwReserved) PURE;
+  };
+
+  typedef IActiveDesktop *LPACTIVEDESKTOP;
+
+#define SSM_CLEAR 0x0000
+#define SSM_SET 0x0001
+#define SSM_REFRESH 0x0002
+#define SSM_UPDATE 0x0004
+
+#define SCHEME_DISPLAY 0x0001
+#define SCHEME_EDIT 0x0002
+#define SCHEME_LOCAL 0x0004
+#define SCHEME_GLOBAL 0x0008
+#define SCHEME_REFRESH 0x0010
+#define SCHEME_UPDATE 0x0020
+#define SCHEME_DONOTUSE 0x0040
+#define SCHEME_CREATE 0x0080
+
+#undef INTERFACE
+#define INTERFACE IActiveDesktopP
+
+  DECLARE_INTERFACE_(IActiveDesktopP,IUnknown) {
+    STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD (SetSafeMode)(THIS_ DWORD dwFlags) PURE;
+    STDMETHOD (EnsureUpdateHTML)(THIS) PURE;
+    STDMETHOD (SetScheme)(THIS_ LPCWSTR pwszSchemeName,DWORD dwFlags) PURE;
+    STDMETHOD (GetScheme)(THIS_ LPWSTR pwszSchemeName,DWORD *lpdwcchBuffer,DWORD dwFlags) PURE;
+  };
+
+  typedef IActiveDesktopP *LPACTIVEDESKTOPP;
+
+#define GADOF_DIRTY 0x00000001
+
+#undef INTERFACE
+#define INTERFACE IADesktopP2
+
+  DECLARE_INTERFACE_(IADesktopP2,IUnknown) {
+    STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD (ReReadWallpaper)(THIS) PURE;
+    STDMETHOD (GetADObjectFlags)(THIS_ DWORD *lpdwFlags,DWORD dwMask) PURE;
+    STDMETHOD (UpdateAllDesktopSubscriptions)(THIS) PURE;
+    STDMETHOD (MakeDynamicChanges)(THIS_ IOleObject *pOleObj) PURE;
+  };
+
+  typedef IADesktopP2 *LPADESKTOPP2;
+#endif
+
+#define MAX_COLUMN_NAME_LEN 80
+#define MAX_COLUMN_DESC_LEN 128
+
+#include <pshpack1.h>
+
+  typedef struct {
+    SHCOLUMNID scid;
+    VARTYPE vt;
+    DWORD fmt;
+    UINT cChars;
+    DWORD csFlags;
+    WCHAR wszTitle[MAX_COLUMN_NAME_LEN];
+    WCHAR wszDescription[MAX_COLUMN_DESC_LEN];
+  } SHCOLUMNINFO,*LPSHCOLUMNINFO;
+  typedef const SHCOLUMNINFO *LPCSHCOLUMNINFO;
+
+#include <poppack.h>
+
+#include <pshpack8.h>
+
+  typedef struct {
+    ULONG dwFlags;
+    ULONG dwReserved;
+    WCHAR wszFolder[MAX_PATH];
+  } SHCOLUMNINIT,*LPSHCOLUMNINIT;
+  typedef const SHCOLUMNINIT *LPCSHCOLUMNINIT;
+
+#define SHCDF_UPDATEITEM 0x00000001
+
+  typedef struct {
+    ULONG dwFlags;
+    DWORD dwFileAttributes;
+    ULONG dwReserved;
+    WCHAR *pwszExt;
+    WCHAR wszFile[MAX_PATH];
+  } SHCOLUMNDATA,*LPSHCOLUMNDATA;
+  typedef const SHCOLUMNDATA *LPCSHCOLUMNDATA;
+
+#include <poppack.h>
+
+#undef INTERFACE
+#define INTERFACE IColumnProvider
+
+  DECLARE_INTERFACE_(IColumnProvider,IUnknown) {
+    STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD (Initialize)(THIS_ LPCSHCOLUMNINIT psci) PURE;
+    STDMETHOD (GetColumnInfo)(THIS_ DWORD dwIndex,SHCOLUMNINFO *psci) PURE;
+    STDMETHOD (GetItemData)(THIS_ LPCSHCOLUMNID pscid,LPCSHCOLUMNDATA pscd,VARIANT *pvarData) PURE;
+  };
+
+#include <pshpack8.h>
+
+  typedef struct {
+    SIZE sizeDragImage;
+    POINT ptOffset;
+    HBITMAP hbmpDragImage;
+    COLORREF crColorKey;
+  } SHDRAGIMAGE,*LPSHDRAGIMAGE;
+
+#include <poppack.h>
+
+#define DI_GETDRAGIMAGE TEXT("ShellGetDragImage")
+
+#undef INTERFACE
+#define INTERFACE IDropTargetHelper
+  DECLARE_INTERFACE_(IDropTargetHelper,IUnknown) {
+    STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD (DragEnter)(THIS_ HWND hwndTarget,IDataObject *pDataObject,POINT *ppt,DWORD dwEffect) PURE;
+    STDMETHOD (DragLeave)(THIS) PURE;
+    STDMETHOD (DragOver)(THIS_ POINT *ppt,DWORD dwEffect) PURE;
+    STDMETHOD (Drop)(THIS_ IDataObject *pDataObject,POINT *ppt,DWORD dwEffect) PURE;
+    STDMETHOD (Show)(THIS_ WINBOOL fShow) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE IDragSourceHelper
+  DECLARE_INTERFACE_(IDragSourceHelper,IUnknown) {
+    STDMETHOD (QueryInterface)(THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD (InitializeFromBitmap)(THIS_ LPSHDRAGIMAGE pshdi,IDataObject *pDataObject) PURE;
+    STDMETHOD (InitializeFromWindow)(THIS_ HWND hwnd,POINT *ppt,IDataObject *pDataObject) PURE;
+  };
+
+#define CFSTR_SHELLIDLIST TEXT("Shell IDList Array")
+#define CFSTR_SHELLIDLISTOFFSET TEXT("Shell Object Offsets")
+#define CFSTR_NETRESOURCES TEXT("Net Resource")
+#define CFSTR_FILEDESCRIPTORA TEXT("FileGroupDescriptor")
+#define CFSTR_FILEDESCRIPTORW TEXT("FileGroupDescriptorW")
+#define CFSTR_FILECONTENTS TEXT("FileContents")
+#define CFSTR_FILENAMEA TEXT("FileName")
+#define CFSTR_FILENAMEW TEXT("FileNameW")
+#define CFSTR_PRINTERGROUP TEXT("PrinterFriendlyName")
+#define CFSTR_FILENAMEMAPA TEXT("FileNameMap")
+#define CFSTR_FILENAMEMAPW TEXT("FileNameMapW")
+#define CFSTR_SHELLURL TEXT("UniformResourceLocator")
+#define CFSTR_INETURLA CFSTR_SHELLURL
+#define CFSTR_INETURLW TEXT("UniformResourceLocatorW")
+#define CFSTR_PREFERREDDROPEFFECT TEXT("Preferred DropEffect")
+#define CFSTR_PERFORMEDDROPEFFECT TEXT("Performed DropEffect")
+#define CFSTR_PASTESUCCEEDED TEXT("Paste Succeeded")
+#define CFSTR_INDRAGLOOP TEXT("InShellDragLoop")
+#define CFSTR_DRAGCONTEXT TEXT("DragContext")
+#define CFSTR_MOUNTEDVOLUME TEXT("MountedVolume")
+#define CFSTR_PERSISTEDDATAOBJECT TEXT("PersistedDataObject")
+#define CFSTR_TARGETCLSID TEXT("TargetCLSID")
+#define CFSTR_LOGICALPERFORMEDDROPEFFECT TEXT("Logical Performed DropEffect")
+#define CFSTR_AUTOPLAY_SHELLIDLISTS TEXT("Autoplay Enumerated IDList Array")
+#define CFSTR_UNTRUSTEDDRAGDROP TEXT("UntrustedDragDrop")
+
+#define CFSTR_FILEDESCRIPTOR __MINGW_NAME_AW(CFSTR_FILEDESCRIPTOR)
+#define CFSTR_FILENAME __MINGW_NAME_AW(CFSTR_FILENAME)
+#define CFSTR_FILENAMEMAP __MINGW_NAME_AW(CFSTR_FILENAMEMAP)
+#define CFSTR_INETURL __MINGW_NAME_AW(CFSTR_INETURL)
+
+#define DVASPECT_SHORTNAME 2
+#define DVASPECT_COPY 3
+#define DVASPECT_LINK 4
+
+#include <pshpack8.h>
+
+  typedef struct _NRESARRAY {
+    UINT cItems;
+    NETRESOURCE nr[1];
+  } NRESARRAY,*LPNRESARRAY;
+#include <poppack.h>
+
+  typedef struct _IDA {
+    UINT cidl;
+    UINT aoffset[1];
+  } CIDA,*LPIDA;
+
+  typedef enum {
+    FD_CLSID = 0x0001,FD_SIZEPOINT = 0x0002,FD_ATTRIBUTES = 0x0004,FD_CREATETIME = 0x0008,FD_ACCESSTIME = 0x0010,FD_WRITESTIME = 0x0020,
+    FD_FILESIZE = 0x0040,FD_PROGRESSUI = 0x4000,FD_LINKUI = 0x8000
+  } FD_FLAGS;
+
+  typedef struct _FILEDESCRIPTORA {
+    DWORD dwFlags;
+
+    CLSID clsid;
+    SIZEL sizel;
+    POINTL pointl;
+    DWORD dwFileAttributes;
+    FILETIME ftCreationTime;
+    FILETIME ftLastAccessTime;
+    FILETIME ftLastWriteTime;
+    DWORD nFileSizeHigh;
+    DWORD nFileSizeLow;
+    CHAR cFileName[MAX_PATH ];
+  } FILEDESCRIPTORA,*LPFILEDESCRIPTORA;
+
+  typedef struct _FILEDESCRIPTORW {
+    DWORD dwFlags;
+    CLSID clsid;
+    SIZEL sizel;
+    POINTL pointl;
+    DWORD dwFileAttributes;
+    FILETIME ftCreationTime;
+    FILETIME ftLastAccessTime;
+    FILETIME ftLastWriteTime;
+    DWORD nFileSizeHigh;
+    DWORD nFileSizeLow;
+    WCHAR cFileName[MAX_PATH ];
+  } FILEDESCRIPTORW,*LPFILEDESCRIPTORW;
+
+#define FILEDESCRIPTOR __MINGW_NAME_AW(FILEDESCRIPTOR)
+#define LPFILEDESCRIPTOR __MINGW_NAME_AW(LPFILEDESCRIPTOR)
+
+  typedef struct _FILEGROUPDESCRIPTORA {
+    UINT cItems;
+    FILEDESCRIPTORA fgd[1];
+  } FILEGROUPDESCRIPTORA,*LPFILEGROUPDESCRIPTORA;
+
+  typedef struct _FILEGROUPDESCRIPTORW {
+    UINT cItems;
+    FILEDESCRIPTORW fgd[1];
+  } FILEGROUPDESCRIPTORW,*LPFILEGROUPDESCRIPTORW;
+
+#define FILEGROUPDESCRIPTOR __MINGW_NAME_AW(FILEGROUPDESCRIPTOR)
+#define LPFILEGROUPDESCRIPTOR __MINGW_NAME_AW(LPFILEGROUPDESCRIPTOR)
+
+  typedef struct _DROPFILES {
+    DWORD pFiles;
+    POINT pt;
+    WINBOOL fNC;
+    WINBOOL fWide;
+  } DROPFILES,*LPDROPFILES;
+
+  typedef struct _SHChangeNotifyEntry {
+    LPCITEMIDLIST pidl;
+    WINBOOL fRecursive;
+  } SHChangeNotifyEntry;
+
+#define SHCNE_RENAMEITEM __MSABI_LONG(0x00000001)
+#define SHCNE_CREATE __MSABI_LONG(0x00000002)
+#define SHCNE_DELETE __MSABI_LONG(0x00000004)
+#define SHCNE_MKDIR __MSABI_LONG(0x00000008)
+#define SHCNE_RMDIR __MSABI_LONG(0x00000010)
+#define SHCNE_MEDIAINSERTED __MSABI_LONG(0x00000020)
+#define SHCNE_MEDIAREMOVED __MSABI_LONG(0x00000040)
+#define SHCNE_DRIVEREMOVED __MSABI_LONG(0x00000080)
+#define SHCNE_DRIVEADD __MSABI_LONG(0x00000100)
+#define SHCNE_NETSHARE __MSABI_LONG(0x00000200)
+#define SHCNE_NETUNSHARE __MSABI_LONG(0x00000400)
+#define SHCNE_ATTRIBUTES __MSABI_LONG(0x00000800)
+#define SHCNE_UPDATEDIR __MSABI_LONG(0x00001000)
+#define SHCNE_UPDATEITEM __MSABI_LONG(0x00002000)
+#define SHCNE_SERVERDISCONNECT __MSABI_LONG(0x00004000)
+#define SHCNE_UPDATEIMAGE __MSABI_LONG(0x00008000)
+#define SHCNE_DRIVEADDGUI __MSABI_LONG(0x00010000)
+#define SHCNE_RENAMEFOLDER __MSABI_LONG(0x00020000)
+#define SHCNE_FREESPACE __MSABI_LONG(0x00040000)
+#define SHCNE_EXTENDED_EVENT __MSABI_LONG(0x04000000)
+
+#define SHCNE_ASSOCCHANGED __MSABI_LONG(0x08000000)
+
+#define SHCNE_DISKEVENTS __MSABI_LONG(0x0002381F)
+#define SHCNE_GLOBALEVENTS __MSABI_LONG(0x0C0581E0)
+#define SHCNE_ALLEVENTS __MSABI_LONG(0x7FFFFFFF)
+#define SHCNE_INTERRUPT __MSABI_LONG(0x80000000)
+
+#define SHCNEE_ORDERCHANGED __MSABI_LONG(2)
+#define SHCNEE_MSI_CHANGE __MSABI_LONG(4)
+#define SHCNEE_MSI_UNINSTALL __MSABI_LONG(5)
+
+#define SHCNF_IDLIST 0x0000
+#define SHCNF_PATHA 0x0001
+#define SHCNF_PRINTERA 0x0002
+#define SHCNF_DWORD 0x0003
+#define SHCNF_PATHW 0x0005
+#define SHCNF_PRINTERW 0x0006
+#define SHCNF_TYPE 0x00FF
+#define SHCNF_FLUSH 0x1000
+#define SHCNF_FLUSHNOWAIT 0x2000
+
+#define SHCNF_PATH __MINGW_NAME_AW(SHCNF_PATH)
+#define SHCNF_PRINTER __MINGW_NAME_AW(SHCNF_PRINTER)
+
+  SHSTDAPI_(void) SHChangeNotify(LONG wEventId,UINT uFlags,LPCVOID dwItem1,LPCVOID dwItem2);
+
+#undef INTERFACE
+#define INTERFACE IShellChangeNotify
+  DECLARE_INTERFACE_(IShellChangeNotify,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(OnChange) (THIS_ LONG lEvent,LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2) PURE;
+  };
+
+#undef INTERFACE
+#define INTERFACE IQueryInfo
+  DECLARE_INTERFACE_(IQueryInfo,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(GetInfoTip)(THIS_ DWORD dwFlags,WCHAR **ppwszTip) PURE;
+    STDMETHOD(GetInfoFlags)(THIS_ DWORD *pdwFlags) PURE;
+  };
+
+#define QITIPF_DEFAULT 0x00000000
+#define QITIPF_USENAME 0x00000001
+#define QITIPF_LINKNOTARGET 0x00000002
+#define QITIPF_LINKUSETARGET 0x00000004
+#define QITIPF_USESLOWTIP 0x00000008
+
+#define QIF_CACHED 0x00000001
+#define QIF_DONTEXPANDFOLDER 0x00000002
+
+  typedef enum enum_SHARD{
+    SHARD_PIDL = 0x00000001,
+    SHARD_PATHA = 0x00000002,
+    SHARD_PATHW = 0x00000003,
+    SHARD_APPIDINFO = 0x00000004,
+    SHARD_APPIDINFOIDLIST = 0x00000005,
+    SHARD_LINK = 0x00000006,
+    SHARD_APPIDINFOLINK = 0x00000007,
+    SHARD_SHELLITEM = 0x00000008
+  } SHARD;
+
+#define SHARD_PATH __MINGW_NAME_AW(SHARD_PATH)
+
+  SHSTDAPI_(void) SHAddToRecentDocs(UINT uFlags,LPCVOID pv);
+
+  typedef struct _SHChangeDWORDAsIDList {
+    USHORT cb;
+    DWORD dwItem1;
+    DWORD dwItem2;
+    USHORT cbZero;
+  } SHChangeDWORDAsIDList,*LPSHChangeDWORDAsIDList;
+
+  typedef struct _SHChangeUpdateImageIDList {
+    USHORT cb;
+    int iIconIndex;
+    int iCurIndex;
+    UINT uFlags;
+    DWORD dwProcessID;
+    WCHAR szName[MAX_PATH];
+    USHORT cbZero;
+  } SHChangeUpdateImageIDList,*LPSHChangeUpdateImageIDList;
+
+  SHSTDAPI_(int) SHHandleUpdateImage(LPCITEMIDLIST pidlExtra);
+
+  typedef struct _SHChangeProductKeyAsIDList {
+    USHORT cb;
+    WCHAR wszProductKey[39];
+    USHORT cbZero;
+  } SHChangeProductKeyAsIDList,*LPSHChangeProductKeyAsIDList;
+
+#define SHUpdateImage __MINGW_NAME_AW(SHUpdateImage)
+
+  SHSTDAPI_(void) SHUpdateImageA(LPCSTR pszHashItem,int iIndex,UINT uFlags,int iImageIndex);
+  SHSTDAPI_(void) SHUpdateImageW(LPCWSTR pszHashItem,int iIndex,UINT uFlags,int iImageIndex);
+  SHSTDAPI_(ULONG) SHChangeNotifyRegister(HWND hwnd,int fSources,LONG fEvents,UINT wMsg,int cEntries,SHChangeNotifyEntry *pshcne);
+  SHSTDAPI_(WINBOOL) SHChangeNotifyDeregister(unsigned long ulID);
+  SHSTDAPI_(HANDLE) SHChangeNotification_Lock(HANDLE hChangeNotification,DWORD dwProcessId,LPITEMIDLIST **pppidl,LONG *plEvent);
+  SHSTDAPI_(WINBOOL) SHChangeNotification_Unlock(HANDLE hLock);
+  SHSTDAPI SHGetRealIDL(IShellFolder *psf,LPCITEMIDLIST pidlSimple,LPITEMIDLIST *ppidlReal);
+  SHSTDAPI SHGetInstanceExplorer(IUnknown **ppunk);
+
+#define SHGDFIL_FINDDATA 1
+#define SHGDFIL_NETRESOURCE 2
+#define SHGDFIL_DESCRIPTIONID 3
+
+#define SHDID_ROOT_REGITEM 1
+#define SHDID_FS_FILE 2
+#define SHDID_FS_DIRECTORY 3
+#define SHDID_FS_OTHER 4
+#define SHDID_COMPUTER_DRIVE35 5
+#define SHDID_COMPUTER_DRIVE525 6
+#define SHDID_COMPUTER_REMOVABLE 7
+#define SHDID_COMPUTER_FIXED 8
+#define SHDID_COMPUTER_NETDRIVE 9
+#define SHDID_COMPUTER_CDROM 10
+#define SHDID_COMPUTER_RAMDISK 11
+#define SHDID_COMPUTER_OTHER 12
+#define SHDID_NET_DOMAIN 13
+#define SHDID_NET_SERVER 14
+#define SHDID_NET_SHARE 15
+#define SHDID_NET_RESTOFNET 16
+#define SHDID_NET_OTHER 17
+#define SHDID_COMPUTER_IMAGING 18
+#define SHDID_COMPUTER_AUDIO 19
+#define SHDID_COMPUTER_SHAREDDOCS 20
+
+#include <pshpack8.h>
+
+  typedef struct _SHDESCRIPTIONID {
+    DWORD dwDescriptionId;
+    CLSID clsid;
+  } SHDESCRIPTIONID,*LPSHDESCRIPTIONID;
+
+#include <poppack.h>
+
+#define SHGetDataFromIDList __MINGW_NAME_AW(SHGetDataFromIDList)
+
+  SHSTDAPI SHGetDataFromIDListA(IShellFolder *psf,LPCITEMIDLIST pidl,int nFormat,void *pv,int cb);
+  SHSTDAPI SHGetDataFromIDListW(IShellFolder *psf,LPCITEMIDLIST pidl,int nFormat,void *pv,int cb);
+
+#define PRF_VERIFYEXISTS 0x0001
+#define PRF_TRYPROGRAMEXTENSIONS (0x0002 | PRF_VERIFYEXISTS)
+#define PRF_FIRSTDIRDEF 0x0004
+#define PRF_DONTFINDLNK 0x0008
+  SHSTDAPI_(int) RestartDialog(HWND hwnd,LPCWSTR lpPrompt,DWORD dwReturn);
+  SHSTDAPI_(int) RestartDialogEx(HWND hwnd,LPCWSTR lpPrompt,DWORD dwReturn,DWORD dwReasonCode);
+  SHSTDAPI SHCoCreateInstance(LPCWSTR pszCLSID,const CLSID *pclsid,IUnknown *pUnkOuter,REFIID riid,void **ppv);
+  DECLARE_HANDLE(FARPROC16);
+  SHSTDAPI_(LRESULT) CallCPLEntry16(HINSTANCE hinst,FARPROC16 lpfnEntry,HWND hwndCPL,UINT msg,LPARAM lParam1,LPARAM lParam2);
+  SHSTDAPI SHCreateStdEnumFmtEtc(UINT cfmt,const FORMATETC afmt[],IEnumFORMATETC **ppenumFormatEtc);
+  SHSTDAPI SHDoDragDrop(HWND hwnd,IDataObject *pdata,IDropSource *pdsrc,DWORD dwEffect,DWORD *pdwEffect);
+
+#define NUM_POINTS 3
+  typedef struct {
+    int iNextSample;
+    DWORD dwLastScroll;
+    WINBOOL bFull;
+    POINT pts[NUM_POINTS];
+    DWORD dwTimes[NUM_POINTS];
+  } AUTO_SCROLL_DATA;
+
+  SHSTDAPI_(WINBOOL) DAD_SetDragImage(HIMAGELIST him,POINT *pptOffset);
+  SHSTDAPI_(WINBOOL) DAD_DragEnterEx(HWND hwndTarget,const POINT ptStart);
+  SHSTDAPI_(WINBOOL) DAD_DragEnterEx2(HWND hwndTarget,const POINT ptStart,IDataObject *pdtObject);
+  SHSTDAPI_(WINBOOL) DAD_ShowDragImage(WINBOOL fShow);
+  SHSTDAPI_(WINBOOL) DAD_DragMove(POINT pt);
+  SHSTDAPI_(WINBOOL) DAD_DragLeave(void);
+  SHSTDAPI_(WINBOOL) DAD_AutoScroll(HWND hwnd,AUTO_SCROLL_DATA *pad,const POINT *pptNow);
+
+  typedef struct {
+    WORD cLength;
+    WORD nVersion;
+    WINBOOL fFullPathTitle : 1;
+    WINBOOL fSaveLocalView : 1;
+    WINBOOL fNotShell : 1;
+    WINBOOL fSimpleDefault : 1;
+    WINBOOL fDontShowDescBar : 1;
+    WINBOOL fNewWindowMode : 1;
+    WINBOOL fShowCompColor : 1;
+    WINBOOL fDontPrettyNames : 1;
+    WINBOOL fAdminsCreateCommonGroups : 1;
+    UINT fUnusedFlags : 7;
+    UINT fMenuEnumFilter;
+  } CABINETSTATE,*LPCABINETSTATE;
+
+#define CABINETSTATE_VERSION 2
+
+#define PathIsSlow __MINGW_NAME_AW(PathIsSlow)
+
+  SHSTDAPI_(WINBOOL) ReadCabinetState(LPCABINETSTATE lpState,int iSize);
+  SHSTDAPI_(WINBOOL) WriteCabinetState(LPCABINETSTATE lpState);
+  SHSTDAPI_(WINBOOL) PathMakeUniqueName(LPWSTR pszUniqueName,UINT cchMax,LPCWSTR pszTemplate,LPCWSTR pszLongPlate,LPCWSTR pszDir);
+  SHSTDAPI_(void) PathQualify(LPWSTR psz);
+  SHSTDAPI_(WINBOOL) PathIsExe(LPCWSTR pszPath);
+  SHSTDAPI_(WINBOOL) PathIsSlowA(LPCSTR pszFile,DWORD dwAttr);
+  SHSTDAPI_(WINBOOL) PathIsSlowW(LPCWSTR pszFile,DWORD dwAttr);
+
+#define PCS_FATAL 0x80000000
+#define PCS_REPLACEDCHAR 0x00000001
+#define PCS_REMOVEDCHAR 0x00000002
+#define PCS_TRUNCATED 0x00000004
+#define PCS_PATHTOOLONG 0x00000008
+
+  SHSTDAPI_(int) PathCleanupSpec(LPCWSTR pszDir,LPWSTR pszSpec);
+  SHSTDAPI_(int) PathResolve(LPWSTR pszPath,LPCWSTR dirs[],UINT fFlags);
+  SHSTDAPI_(WINBOOL) GetFileNameFromBrowse(HWND hwnd,LPWSTR pszFilePath,UINT cbFilePath,LPCWSTR pszWorkingDir,LPCWSTR pszDefExt,LPCWSTR pszFilters,LPCWSTR pszTitle);
+  SHSTDAPI_(int) DriveType(int iDrive);
+  SHSTDAPI_(int) RealDriveType(int iDrive,WINBOOL fOKToHitNet);
+  SHSTDAPI_(int) IsNetDrive(int iDrive);
+
+#define MM_ADDSEPARATOR __MSABI_LONG(0x00000001)
+#define MM_SUBMENUSHAVEIDS __MSABI_LONG(0x00000002)
+#define MM_DONTREMOVESEPS __MSABI_LONG(0x00000004)
+
+  SHSTDAPI_(UINT) Shell_MergeMenus(HMENU hmDst,HMENU hmSrc,UINT uInsert,UINT uIDAdjust,UINT uIDAdjustMax,ULONG uFlags);
+  SHSTDAPI_(WINBOOL) SHObjectProperties(HWND hwnd,DWORD dwType,LPCWSTR lpObject,LPCWSTR lpPage);
+
+#define SHOP_PRINTERNAME 0x00000001
+#define SHOP_FILEPATH 0x00000002
+#define SHOP_VOLUMEGUID 0x00000004
+
+  SHSTDAPI_(DWORD) SHFormatDrive(HWND hwnd,UINT drive,UINT fmtID,UINT options);
+
+#define SHFMT_ID_DEFAULT 0xFFFF
+
+#define SHFMT_OPT_FULL 0x0001
+#define SHFMT_OPT_SYSONLY 0x0002
+
+#define SHFMT_ERROR __MSABI_LONG(0xFFFFFFFF)
+#define SHFMT_CANCEL __MSABI_LONG(0xFFFFFFFE)
+#define SHFMT_NOFORMAT __MSABI_LONG(0xFFFFFFFD)
+
+#ifndef HPSXA_DEFINED
+#define HPSXA_DEFINED
+  DECLARE_HANDLE(HPSXA);
+#endif
+  WINSHELLAPI HPSXA WINAPI SHCreatePropSheetExtArray(HKEY hKey,LPCWSTR pszSubKey,UINT max_iface);
+  WINSHELLAPI void WINAPI SHDestroyPropSheetExtArray(HPSXA hpsxa);
+  WINSHELLAPI UINT WINAPI SHAddFromPropSheetExtArray(HPSXA hpsxa,LPFNADDPROPSHEETPAGE lpfnAddPage,LPARAM lParam);
+  WINSHELLAPI UINT WINAPI SHReplaceFromPropSheetExtArray(HPSXA hpsxa,UINT uPageID,LPFNADDPROPSHEETPAGE lpfnReplaceWith,LPARAM lParam);
+  SHSTDAPI_(LPITEMIDLIST) ILClone(LPCITEMIDLIST pidl);
+  SHSTDAPI_(LPITEMIDLIST) ILGetNext(LPCITEMIDLIST pidl);
+  SHSTDAPI_(UINT) ILGetSize(LPCITEMIDLIST pidl);
+  SHSTDAPI_(LPITEMIDLIST) ILFindLastID(LPCITEMIDLIST pidl);
+  SHSTDAPI_(WINBOOL) ILRemoveLastID(LPITEMIDLIST pidl);
+  SHSTDAPI_(LPITEMIDLIST) ILAppendID(LPITEMIDLIST pidl,LPCSHITEMID pmkid,WINBOOL fAppend);
+  SHSTDAPI_(void) ILFree(LPITEMIDLIST pidl);
+  SHSTDAPI_(LPITEMIDLIST) ILCloneFirst(LPCITEMIDLIST pidl);
+  SHSTDAPI_(WINBOOL) ILIsEqual(LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2);
+  SHSTDAPI_(WINBOOL) ILIsParent(LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2,WINBOOL fImmediate);
+  SHSTDAPI_(LPITEMIDLIST) ILFindChild(LPCITEMIDLIST pidlParent,LPCITEMIDLIST pidlChild);
+  SHSTDAPI_(LPITEMIDLIST) ILCombine(LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2);
+  SHSTDAPI ILLoadFromStream(IStream *pstm,LPITEMIDLIST *pidl);
+  SHSTDAPI ILSaveToStream(IStream *pstm,LPCITEMIDLIST pidl);
+  SHSTDAPI_(LPITEMIDLIST) ILCreateFromPathA(LPCSTR pszPath);
+  SHSTDAPI_(LPITEMIDLIST) ILCreateFromPathW(LPCWSTR pszPath);
+
+#ifdef NO_WRAPPERS_FOR_ILCREATEFROMPATH
+  SHSTDAPI_(LPITEMIDLIST) ILCreateFromPath(LPCTSTR pszPath);
+#else
+#define ILCreateFromPath __MINGW_NAME_AW(ILCreateFromPath)
+#endif
+  SHSTDAPI SHILCreateFromPath(LPCWSTR szPath,LPITEMIDLIST *ppidl,DWORD *rgfInOut);
+
+#undef INTERFACE
+#define INTERFACE IDefViewFrame
+  DECLARE_INTERFACE_(IDefViewFrame,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(GetWindowLV) (THIS_ HWND *phwnd) PURE;
+    STDMETHOD(ReleaseWindowLV) (THIS) PURE;
+    STDMETHOD(GetShellFolder)(THIS_ IShellFolder **ppsf) PURE;
+  };
+
+  typedef enum RESTRICTIONS {
+    REST_NONE = 0x00000000,REST_NORUN = 0x00000001,REST_NOCLOSE = 0x00000002,REST_NOSAVESET = 0x00000004,REST_NOFILEMENU = 0x00000008,
+    REST_NOSETFOLDERS = 0x00000010,REST_NOSETTASKBAR = 0x00000020,REST_NODESKTOP = 0x00000040,REST_NOFIND = 0x00000080,
+    REST_NODRIVES = 0x00000100,REST_NODRIVEAUTORUN = 0x00000200,REST_NODRIVETYPEAUTORUN = 0x00000400,REST_NONETHOOD = 0x00000800,
+    REST_STARTBANNER = 0x00001000,REST_RESTRICTRUN = 0x00002000,REST_NOPRINTERTABS = 0x00004000,REST_NOPRINTERDELETE = 0x00008000,
+    REST_NOPRINTERADD = 0x00010000,REST_NOSTARTMENUSUBFOLDERS = 0x00020000,REST_MYDOCSONNET = 0x00040000,REST_NOEXITTODOS = 0x00080000,
+    REST_ENFORCESHELLEXTSECURITY = 0x00100000,REST_LINKRESOLVEIGNORELINKINFO = 0x00200000,REST_NOCOMMONGROUPS = 0x00400000,
+    REST_SEPARATEDESKTOPPROCESS = 0x00800000,REST_NOWEB = 0x01000000,REST_NOTRAYCONTEXTMENU = 0x02000000,REST_NOVIEWCONTEXTMENU = 0x04000000,
+    REST_NONETCONNECTDISCONNECT = 0x08000000,REST_STARTMENULOGOFF = 0x10000000,REST_NOSETTINGSASSIST = 0x20000000,REST_NOINTERNETICON = 0x40000001,
+    REST_NORECENTDOCSHISTORY = 0x40000002,REST_NORECENTDOCSMENU = 0x40000003,REST_NOACTIVEDESKTOP = 0x40000004,REST_NOACTIVEDESKTOPCHANGES = 0x40000005,
+    REST_NOFAVORITESMENU = 0x40000006,REST_CLEARRECENTDOCSONEXIT = 0x40000007,REST_CLASSICSHELL = 0x40000008,REST_NOCUSTOMIZEWEBVIEW = 0x40000009,
+    REST_NOHTMLWALLPAPER = 0x40000010,REST_NOCHANGINGWALLPAPER = 0x40000011,REST_NODESKCOMP = 0x40000012,REST_NOADDDESKCOMP = 0x40000013,
+    REST_NODELDESKCOMP = 0x40000014,REST_NOCLOSEDESKCOMP = 0x40000015,REST_NOCLOSE_DRAGDROPBAND = 0x40000016,REST_NOMOVINGBAND = 0x40000017,
+    REST_NOEDITDESKCOMP = 0x40000018,REST_NORESOLVESEARCH = 0x40000019,REST_NORESOLVETRACK = 0x4000001A,REST_FORCECOPYACLWITHFILE = 0X4000001B,
+    REST_NOLOGO3CHANNELNOTIFY = 0x4000001C,REST_NOFORGETSOFTWAREUPDATE = 0x4000001D,REST_NOSETACTIVEDESKTOP = 0x4000001E,
+    REST_NOUPDATEWINDOWS = 0x4000001F,REST_NOCHANGESTARMENU = 0x40000020,REST_NOFOLDEROPTIONS = 0x40000021,REST_HASFINDCOMPUTERS = 0x40000022,
+    REST_INTELLIMENUS = 0x40000023,REST_RUNDLGMEMCHECKBOX = 0x40000024,REST_ARP_ShowPostSetup = 0x40000025,REST_NOCSC = 0x40000026,
+    REST_NOCONTROLPANEL = 0x40000027,REST_ENUMWORKGROUP = 0x40000028,REST_ARP_NOARP = 0x40000029,REST_ARP_NOREMOVEPAGE = 0x4000002A,
+    REST_ARP_NOADDPAGE = 0x4000002B,REST_ARP_NOWINSETUPPAGE = 0x4000002C,REST_GREYMSIADS = 0x4000002D,REST_NOCHANGEMAPPEDDRIVELABEL = 0x4000002E,
+    REST_NOCHANGEMAPPEDDRIVECOMMENT = 0x4000002F,REST_MaxRecentDocs = 0x40000030,REST_NONETWORKCONNECTIONS = 0x40000031,
+    REST_FORCESTARTMENULOGOFF = 0x40000032,REST_NOWEBVIEW = 0x40000033,REST_NOCUSTOMIZETHISFOLDER = 0x40000034,REST_NOENCRYPTION = 0x40000035,
+    REST_DONTSHOWSUPERHIDDEN = 0x40000037,REST_NOSHELLSEARCHBUTTON = 0x40000038,REST_NOHARDWARETAB = 0x40000039,REST_NORUNASINSTALLPROMPT = 0x4000003A,
+    REST_PROMPTRUNASINSTALLNETPATH = 0x4000003B,REST_NOMANAGEMYCOMPUTERVERB = 0x4000003C,REST_NORECENTDOCSNETHOOD = 0x4000003D,
+    REST_DISALLOWRUN = 0x4000003E,REST_NOWELCOMESCREEN = 0x4000003F,REST_RESTRICTCPL = 0x40000040,REST_DISALLOWCPL = 0x40000041,
+    REST_NOSMBALLOONTIP = 0x40000042,REST_NOSMHELP = 0x40000043,REST_NOWINKEYS = 0x40000044,REST_NOENCRYPTONMOVE = 0x40000045,
+    REST_NOLOCALMACHINERUN = 0x40000046,REST_NOCURRENTUSERRUN = 0x40000047,REST_NOLOCALMACHINERUNONCE = 0x40000048,
+    REST_NOCURRENTUSERRUNONCE = 0x40000049,REST_FORCEACTIVEDESKTOPON = 0x4000004A,REST_NOCOMPUTERSNEARME = 0x4000004B,REST_NOVIEWONDRIVE = 0x4000004C,
+    REST_NONETCRAWL = 0x4000004D,REST_NOSHAREDDOCUMENTS = 0x4000004E,REST_NOSMMYDOCS = 0x4000004F,REST_NOSMMYPICS = 0x40000050,
+    REST_ALLOWBITBUCKDRIVES = 0x40000051,REST_NONLEGACYSHELLMODE = 0x40000052,REST_NOCONTROLPANELBARRICADE = 0x40000053,REST_NOSTARTPAGE = 0x40000054,
+    REST_NOAUTOTRAYNOTIFY = 0x40000055,REST_NOTASKGROUPING = 0x40000056,REST_NOCDBURNING = 0x40000057,REST_MYCOMPNOPROP = 0x40000058,
+    REST_MYDOCSNOPROP = 0x40000059,REST_NOSTARTPANEL = 0x4000005A,REST_NODISPLAYAPPEARANCEPAGE = 0x4000005B,REST_NOTHEMESTAB = 0x4000005C,
+    REST_NOVISUALSTYLECHOICE = 0x4000005D,REST_NOSIZECHOICE = 0x4000005E,REST_NOCOLORCHOICE = 0x4000005F,REST_SETVISUALSTYLE = 0x40000060,
+    REST_STARTRUNNOHOMEPATH = 0x40000061,REST_NOUSERNAMEINSTARTPANEL = 0x40000062,REST_NOMYCOMPUTERICON = 0x40000063,REST_NOSMNETWORKPLACES = 0x40000064,
+    REST_NOSMPINNEDLIST = 0x40000065,REST_NOSMMYMUSIC = 0x40000066,REST_NOSMEJECTPC = 0x40000067,REST_NOSMMOREPROGRAMS = 0x40000068,
+    REST_NOSMMFUPROGRAMS = 0x40000069,REST_NOTRAYITEMSDISPLAY = 0x4000006A,REST_NOTOOLBARSONTASKBAR = 0x4000006B,REST_NOSMCONFIGUREPROGRAMS = 0x4000006F,
+    REST_HIDECLOCK = 0x40000070,REST_NOLOWDISKSPACECHECKS = 0x40000071,REST_NOENTIRENETWORK = 0x40000072,REST_NODESKTOPCLEANUP = 0x40000073,
+    REST_BITBUCKNUKEONDELETE = 0x40000074,REST_BITBUCKCONFIRMDELETE = 0x40000075,REST_BITBUCKNOPROP = 0x40000076,REST_NODISPBACKGROUND = 0x40000077,
+    REST_NODISPSCREENSAVEPG = 0x40000078,REST_NODISPSETTINGSPG = 0x40000079,REST_NODISPSCREENSAVEPREVIEW = 0x4000007A,REST_NODISPLAYCPL = 0x4000007B,
+    REST_HIDERUNASVERB = 0x4000007C,REST_NOTHUMBNAILCACHE = 0x4000007D,REST_NOSTRCMPLOGICAL = 0x4000007E,REST_NOPUBLISHWIZARD = 0x4000007F,
+    REST_NOONLINEPRINTSWIZARD = 0x40000080,REST_NOWEBSERVICES = 0x40000081,REST_ALLOWUNHASHEDWEBVIEW = 0x40000082,REST_ALLOWLEGACYWEBVIEW = 0x40000083,
+    REST_REVERTWEBVIEWSECURITY = 0x40000084,REST_INHERITCONSOLEHANDLES = 0x40000086,REST_SORTMAXITEMCOUNT = 0x40000087,
+    REST_NOREMOTERECURSIVEEVENTS = 0x40000089,REST_NOREMOTECHANGENOTIFY = 0x40000091,REST_NOSIMPLENETIDLIST = 0x40000092,
+    REST_NOENUMENTIRENETWORK = 0x40000093,REST_NODETAILSTHUMBNAILONNETWORK= 0x40000094,REST_NOINTERNETOPENWITH = 0x40000095,
+    REST_ALLOWLEGACYLMZBEHAVIOR = 0x4000009A,REST_DONTRETRYBADNETNAME = 0x4000009B,REST_ALLOWFILECLSIDJUNCTIONS = 0x4000009C,
+    REST_NOUPNPINSTALL = 0x4000009D,REST_NODISCONNECT = 0x41000001,REST_NOSECURITY = 0x41000002,REST_NOFILEASSOCIATE = 0x41000003,
+    REST_ALLOWCOMMENTTOGGLE = 0x41000004,REST_USEDESKTOPINICACHE = 0x41000005
+  } RESTRICTIONS;
+
+  SHSTDAPI_(IStream *) OpenRegStream(HKEY hkey,LPCWSTR pszSubkey,LPCWSTR pszValue,DWORD grfMode);
+  SHSTDAPI_(WINBOOL) SHFindFiles(LPCITEMIDLIST pidlFolder,LPCITEMIDLIST pidlSaveFile);
+  SHSTDAPI_(void) PathGetShortPath(LPWSTR pszLongPath);
+  SHSTDAPI_(WINBOOL) PathYetAnotherMakeUniqueName(LPWSTR pszUniqueName,LPCWSTR pszPath,LPCWSTR pszShort,LPCWSTR pszFileSpec);
+  SHSTDAPI_(WINBOOL) Win32DeleteFile(LPCWSTR pszPath);
+
+#define PPCF_ADDQUOTES 0x00000001
+#define PPCF_ADDARGUMENTS 0x00000003
+#define PPCF_NODIRECTORIES 0x00000010
+#define PPCF_FORCEQUALIFY 0x00000040
+#define PPCF_LONGESTPOSSIBLE 0x00000080
+
+#define SHStartNetConnectionDialog __MINGW_NAME_AW(SHStartNetConnectionDialog)
+#define SHDefExtractIcon __MINGW_NAME_AW(SHDefExtractIcon)
+
+  SHSTDAPI_(LONG) PathProcessCommand(LPCWSTR lpSrc,LPWSTR lpDest,int iMax,DWORD dwFlags);
+  SHSTDAPI_(DWORD) SHRestricted(RESTRICTIONS rest);
+  SHSTDAPI_(WINBOOL) SignalFileOpen(LPCITEMIDLIST pidl);
+  SHSTDAPI_(LPITEMIDLIST) SHSimpleIDListFromPath(LPCWSTR pszPath);
+  SHSTDAPI SHLoadOLE(LPARAM lParam);
+  SHSTDAPI SHStartNetConnectionDialogA(HWND hwnd,LPCSTR pszRemoteName,DWORD dwType);
+  SHSTDAPI SHStartNetConnectionDialogW(HWND hwnd,LPCWSTR pszRemoteName,DWORD dwType);
+  SHSTDAPI SHDefExtractIconA(LPCSTR pszIconFile,int iIndex,UINT uFlags,HICON *phiconLarge,HICON *phiconSmall,UINT nIconSize);
+  SHSTDAPI SHDefExtractIconW(LPCWSTR pszIconFile,int iIndex,UINT uFlags,HICON *phiconLarge,HICON *phiconSmall,UINT nIconSize);
+  SHSTDAPI_(WINBOOL) Shell_GetImageLists(HIMAGELIST *phiml,HIMAGELIST *phimlSmall);
+  SHSTDAPI_(int) Shell_GetCachedImageIndex(LPCWSTR pszIconPath,int iIconIndex,UINT uIconFlags);
+
+    enum tagOPEN_AS_INFO_FLAGS {
+        OAIF_ALLOW_REGISTRATION = 0x0001,
+        OAIF_REGISTER_EXT       = 0x0002,
+        OAIF_EXEC               = 0x0004,
+        OAIF_FORCE_REGISTRATION = 0x0008,
+        OAIF_HIDE_REGISTRATION  = 0x0020,
+        OAIF_URL_PROTOCOL       = 0x0040
+    };
+    typedef int OPEN_AS_INFO_FLAGS;
+
+#include <pshpack8.h>
+    typedef struct _openasinfo {
+        LPCWSTR pcszFile;
+        LPCWSTR pcszClass;
+        OPEN_AS_INFO_FLAGS oaifInFlags;
+    } OPENASINFO, *POPENASINFO;
+#include <poppack.h>
+
+#undef INTERFACE
+#define INTERFACE IDocViewSite
+  DECLARE_INTERFACE_(IDocViewSite,IUnknown) {
+    STDMETHOD(QueryInterface)(THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+    STDMETHOD_(ULONG,Release)(THIS) PURE;
+    STDMETHOD(OnSetTitle) (THIS_ VARIANTARG *pvTitle) PURE;
+  };
+#define VALIDATEUNC_NOUI 0x0002
+#define VALIDATEUNC_CONNECT 0x0001
+#define VALIDATEUNC_PRINT 0x0004
+#define VALIDATEUNC_VALID 0x0007
+
+  SHSTDAPI_(WINBOOL) SHValidateUNC(HWND hwndOwner,LPWSTR pszFile,UINT fConnect);
+#define OPENPROPS_NONE 0x0000
+#define OPENPROPS_INHIBITPIF 0x8000
+#define GETPROPS_NONE 0x0000
+#define SETPROPS_NONE 0x0000
+#define CLOSEPROPS_NONE 0x0000
+#define CLOSEPROPS_DISCARD 0x0001
+
+#define PIFNAMESIZE 30
+#define PIFSTARTLOCSIZE 63
+#define PIFDEFPATHSIZE 64
+#define PIFPARAMSSIZE 64
+#define PIFSHPROGSIZE 64
+#define PIFSHDATASIZE 64
+#define PIFDEFFILESIZE 80
+#define PIFMAXFILEPATH 260
+
+  typedef struct PROPPRG {
+    WORD flPrg;
+    WORD flPrgInit;
+    CHAR achTitle[PIFNAMESIZE];
+    CHAR achCmdLine[PIFSTARTLOCSIZE+PIFPARAMSSIZE+1];
+    CHAR achWorkDir[PIFDEFPATHSIZE];
+    WORD wHotKey;
+    CHAR achIconFile[PIFDEFFILESIZE];
+    WORD wIconIndex;
+    DWORD dwEnhModeFlags;
+    DWORD dwRealModeFlags;
+    CHAR achOtherFile[PIFDEFFILESIZE];
+    CHAR achPIFFile[PIFMAXFILEPATH];
+  } PROPPRG;
+  typedef UNALIGNED PROPPRG *PPROPPRG;
+  typedef UNALIGNED PROPPRG *LPPROPPRG;
+  typedef const UNALIGNED PROPPRG *LPCPROPPRG;
+
+  SHSTDAPI_(HANDLE) PifMgr_OpenProperties(LPCWSTR pszApp,LPCWSTR pszPIF,UINT hInf,UINT flOpt);
+  SHSTDAPI_(int) PifMgr_GetProperties(HANDLE hProps,LPCSTR pszGroup,void *lpProps,int cbProps,UINT flOpt);
+  SHSTDAPI_(int) PifMgr_SetProperties(HANDLE hProps,LPCSTR pszGroup,const VOID *lpProps,int cbProps,UINT flOpt);
+  SHSTDAPI_(HANDLE) PifMgr_CloseProperties(HANDLE hProps,UINT flOpt);
+  SHSTDAPI_(void) SHSetInstanceExplorer(IUnknown *punk);
+  SHSTDAPI_(WINBOOL) IsUserAnAdmin(void);
+
+#undef INTERFACE
+#define INTERFACE IInitializeObject
+  DECLARE_INTERFACE_(IInitializeObject,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(Initialize)(THIS) PURE;
+  };
+
+  enum {
+    BMICON_LARGE = 0,BMICON_SMALL
+  };
+
+#undef INTERFACE
+#define INTERFACE IBanneredBar
+  DECLARE_INTERFACE_(IBanneredBar,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(SetIconSize)(THIS_ DWORD iIcon) PURE;
+    STDMETHOD(GetIconSize)(THIS_ DWORD *piIcon) PURE;
+    STDMETHOD(SetBitmap)(THIS_ HBITMAP hBitmap) PURE;
+    STDMETHOD(GetBitmap)(THIS_ HBITMAP *phBitmap) PURE;
+  };
+
+  SHSTDAPI_(LRESULT) SHShellFolderView_Message(HWND hwndMain,UINT uMsg,LPARAM lParam);
+
+#undef INTERFACE
+#define INTERFACE IShellFolderViewCB
+  DECLARE_INTERFACE_(IShellFolderViewCB,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(MessageSFVCB)(THIS_ UINT uMsg,WPARAM wParam,LPARAM lParam) PURE;
+  };
+
+#include <pshpack8.h>
+
+#undef UNSIZED_ARRAY2
+#undef EMPTY_SIZE2
+#define UNSIZED_ARRAY2
+#define EMPTY_SIZE2 UNSIZED_ARRAY2
+
+#define QCMINFO_PLACE_BEFORE 0
+#define QCMINFO_PLACE_AFTER 1
+  typedef struct _QCMINFO_IDMAP_PLACEMENT {
+    UINT id;
+    UINT fFlags;
+  } QCMINFO_IDMAP_PLACEMENT;
+
+  typedef struct _QCMINFO_IDMAP {
+    UINT nMaxIds;
+    QCMINFO_IDMAP_PLACEMENT pIdList[1];
+  } QCMINFO_IDMAP;
+
+  typedef struct _QCMINFO {
+    HMENU hmenu;
+    UINT indexMenu;
+    UINT idCmdFirst;
+    UINT idCmdLast;
+    QCMINFO_IDMAP const *pIdMap;
+  } QCMINFO;
+
+  typedef QCMINFO *LPQCMINFO;
+
+#define TBIF_APPEND 0
+#define TBIF_PREPEND 1
+#define TBIF_REPLACE 2
+#define TBIF_DEFAULT 0x00000000
+#define TBIF_INTERNETBAR 0x00010000
+#define TBIF_STANDARDTOOLBAR 0x00020000
+#define TBIF_NOTOOLBAR 0x00030000
+
+  typedef struct _TBINFO {
+    UINT cbuttons;
+    UINT uFlags;
+  } TBINFO;
+
+  typedef struct _DETAILSINFO {
+    LPCITEMIDLIST pidl;
+    int fmt;
+    int cxChar;
+    STRRET str;
+    int iImage;
+  } DETAILSINFO;
+
+  typedef struct _SFVM_PROPPAGE_DATA {
+    DWORD dwReserved;
+    LPFNADDPROPSHEETPAGE pfn;
+    LPARAM lParam;
+  } SFVM_PROPPAGE_DATA;
+
+  typedef struct _SFVM_HELPTOPIC_DATA {
+    WCHAR wszHelpFile[MAX_PATH];
+    WCHAR wszHelpTopic[MAX_PATH];
+  } SFVM_HELPTOPIC_DATA;
+
+#define SFVM_MERGEMENU 1
+#define SFVM_INVOKECOMMAND 2
+#define SFVM_GETHELPTEXT 3
+#define SFVM_GETTOOLTIPTEXT 4
+#define SFVM_GETBUTTONINFO 5
+#define SFVM_GETBUTTONS 6
+#define SFVM_INITMENUPOPUP 7
+#define SFVM_FSNOTIFY 14
+#define SFVM_WINDOWCREATED 15
+#define SFVM_GETDETAILSOF 23
+#define SFVM_COLUMNCLICK 24
+#define SFVM_QUERYFSNOTIFY 25
+#define SFVM_DEFITEMCOUNT 26
+#define SFVM_DEFVIEWMODE 27
+#define SFVM_UNMERGEMENU 28
+#define SFVM_UPDATESTATUSBAR 31
+#define SFVM_BACKGROUNDENUM 32
+#define SFVM_DIDDRAGDROP 36
+#define SFVM_SETISFV 39
+#define SFVM_THISIDLIST 41
+#define SFVM_ADDPROPERTYPAGES 47
+#define SFVM_BACKGROUNDENUMDONE 48
+#define SFVM_GETNOTIFY 49
+#define SFVM_GETSORTDEFAULTS 53
+#define SFVM_SIZE 57
+#define SFVM_GETZONE 58
+#define SFVM_GETPANE 59
+#define SFVM_GETHELPTOPIC 63
+#define SFVM_GETANIMATION 68
+
+  typedef struct _SFV_CREATE {
+    UINT cbSize;
+    IShellFolder *pshf;
+    IShellView *psvOuter;
+    IShellFolderViewCB *psfvcb;
+  } SFV_CREATE;
+
+  SHSTDAPI SHCreateShellFolderView(const SFV_CREATE *pcsfv,IShellView **ppsv);
+
+  typedef HRESULT (CALLBACK *LPFNDFMCALLBACK)(IShellFolder *psf,HWND hwnd,IDataObject *pdtobj,UINT uMsg,WPARAM wParam,LPARAM lParam);
+
+#define SHOpenPropSheet __MINGW_NAME_AW(SHOpenPropSheet)
+
+  SHSTDAPI CDefFolderMenu_Create2(LPCITEMIDLIST pidlFolder,HWND hwnd,UINT cidl,LPCITEMIDLIST *apidl,IShellFolder *psf,LPFNDFMCALLBACK lpfn,UINT nKeys,const HKEY *ahkeyClsKeys,IContextMenu **ppcm);
+  SHSTDAPI_(WINBOOL) SHOpenPropSheetA(LPCSTR pszCaption,HKEY ahkeys[],UINT cikeys,const CLSID *pclsidDefault,IDataObject *pdtobj,IShellBrowser *psb,LPCSTR pStartPage);
+  SHSTDAPI_(WINBOOL) SHOpenPropSheetW(LPCWSTR pszCaption,HKEY ahkeys[],UINT cikeys,const CLSID *pclsidDefault,IDataObject *pdtobj,IShellBrowser *psb,LPCWSTR pStartPage);
+
+#define DFM_MERGECONTEXTMENU 1
+#define DFM_INVOKECOMMAND 2
+#define DFM_GETDEFSTATICID 14
+
+#define DFM_CMD_PROPERTIES ((UINT)-5)
+  typedef TBINFO *LPTBINFO;
+  typedef DETAILSINFO *PDETAILSINFO;
+  typedef HRESULT (CALLBACK *LPFNVIEWCALLBACK)(IShellView *psvOuter,IShellFolder *psf,HWND hwndMain,UINT uMsg,WPARAM wParam,LPARAM lParam);
+
+  typedef struct _CSFV {
+    UINT cbSize;
+    IShellFolder *pshf;
+    IShellView *psvOuter;
+    LPCITEMIDLIST pidl;
+    LONG lEvents;
+    LPFNVIEWCALLBACK pfnCallback;
+    FOLDERVIEWMODE fvm;
+  } CSFV,*LPCSFV;
+
+#define SFVM_REARRANGE 0x00000001
+#define ShellFolderView_ReArrange(_hwnd,_lparam) (WINBOOL)SHShellFolderView_Message(_hwnd,SFVM_REARRANGE,_lparam)
+
+#define SFVM_ADDOBJECT 0x00000003
+#define ShellFolderView_AddObject(_hwnd,_pidl) (LPARAM)SHShellFolderView_Message(_hwnd,SFVM_ADDOBJECT,(LPARAM)_pidl)
+
+#define SFVM_REMOVEOBJECT 0x00000006
+#define ShellFolderView_RemoveObject(_hwnd,_pidl) (LPARAM)SHShellFolderView_Message(_hwnd,SFVM_REMOVEOBJECT,(LPARAM)_pidl)
+
+#define SFVM_UPDATEOBJECT 0x00000007
+#define ShellFolderView_UpdateObject(_hwnd,_ppidl) (LPARAM)SHShellFolderView_Message(_hwnd,SFVM_UPDATEOBJECT,(LPARAM)_ppidl)
+
+#define SFVM_GETSELECTEDOBJECTS 0x00000009
+#define ShellFolderView_GetSelectedObjects(_hwnd,ppidl) (LPARAM)SHShellFolderView_Message(_hwnd,SFVM_GETSELECTEDOBJECTS,(LPARAM)ppidl)
+  typedef struct _SFV_SETITEMPOS {
+    LPCITEMIDLIST pidl;
+    POINT pt;
+  } SFV_SETITEMPOS,*LPSFV_SETITEMPOS;
+
+#define SFVM_SETITEMPOS 0x0000000e
+#define ShellFolderView_SetItemPos(_hwnd,_pidl,_x,_y) { SFV_SETITEMPOS _sip = {_pidl,{_x,_y}}; SHShellFolderView_Message(_hwnd,SFVM_SETITEMPOS,(LPARAM)(LPSFV_SETITEMPOS)&_sip);}
+
+#define SFVM_SETCLIPBOARD 0x00000010
+#define ShellFolderView_SetClipboard(_hwnd,_dwEffect) (void)SHShellFolderView_Message(_hwnd,SFVM_SETCLIPBOARD,(LPARAM)(DWORD)(_dwEffect))
+#define SFVM_SETPOINTS 0x00000017
+#define ShellFolderView_SetPoints(_hwnd,_pdtobj) (void)SHShellFolderView_Message(_hwnd,SFVM_SETPOINTS,(LPARAM)_pdtobj)
+#include <poppack.h>
+  SHSTDAPI_(IContextMenu *) SHFind_InitMenuPopup(HMENU hmenu,HWND hwndOwner,UINT idCmdFirst,UINT idCmdLast);
+  SHSTDAPI SHCreateShellFolderViewEx(LPCSFV pcsfv,IShellView **ppsv);
+
+#define PID_IS_URL 2
+#define PID_IS_NAME 4
+#define PID_IS_WORKINGDIR 5
+#define PID_IS_HOTKEY 6
+#define PID_IS_SHOWCMD 7
+#define PID_IS_ICONINDEX 8
+#define PID_IS_ICONFILE 9
+#define PID_IS_WHATSNEW 10
+#define PID_IS_AUTHOR 11
+#define PID_IS_DESCRIPTION 12
+#define PID_IS_COMMENT 13
+
+#define PID_INTSITE_WHATSNEW 2
+#define PID_INTSITE_AUTHOR 3
+#define PID_INTSITE_LASTVISIT 4
+#define PID_INTSITE_LASTMOD 5
+#define PID_INTSITE_VISITCOUNT 6
+#define PID_INTSITE_DESCRIPTION 7
+#define PID_INTSITE_COMMENT 8
+#define PID_INTSITE_FLAGS 9
+#define PID_INTSITE_CONTENTLEN 10
+#define PID_INTSITE_CONTENTCODE 11
+#define PID_INTSITE_RECURSE 12
+#define PID_INTSITE_WATCH 13
+#define PID_INTSITE_SUBSCRIPTION 14
+#define PID_INTSITE_URL 15
+#define PID_INTSITE_TITLE 16
+#define PID_INTSITE_CODEPAGE 18
+#define PID_INTSITE_TRACKING 19
+#define PID_INTSITE_ICONINDEX 20
+#define PID_INTSITE_ICONFILE 21
+
+#define PIDISF_RECENTLYCHANGED 0x00000001
+#define PIDISF_CACHEDSTICKY 0x00000002
+#define PIDISF_CACHEIMAGES 0x00000010
+#define PIDISF_FOLLOWALLLINKS 0x00000020
+
+#define PIDISM_GLOBAL 0
+#define PIDISM_WATCH 1
+#define PIDISM_DONTWATCH 2
+
+  typedef struct {
+    WINBOOL fShowAllObjects : 1;
+    WINBOOL fShowExtensions : 1;
+    WINBOOL fNoConfirmRecycle : 1;
+    WINBOOL fShowSysFiles : 1;
+    WINBOOL fShowCompColor : 1;
+    WINBOOL fDoubleClickInWebView : 1;
+    WINBOOL fDesktopHTML : 1;
+    WINBOOL fWin95Classic : 1;
+    WINBOOL fDontPrettyPath : 1;
+    WINBOOL fShowAttribCol : 1;
+    WINBOOL fMapNetDrvBtn : 1;
+    WINBOOL fShowInfoTip : 1;
+    WINBOOL fHideIcons : 1;
+    WINBOOL fWebView : 1;
+    WINBOOL fFilter : 1;
+    WINBOOL fShowSuperHidden : 1;
+    WINBOOL fNoNetCrawling : 1;
+    DWORD dwWin95Unused;
+    UINT uWin95Unused;
+    LONG lParamSort;
+    int iSortDirection;
+    UINT version;
+    UINT uNotUsed;
+    WINBOOL fSepProcess: 1;
+    WINBOOL fStartPanelOn: 1;
+    WINBOOL fShowStartPage: 1;
+    UINT fSpareFlags : 13;
+  } SHELLSTATEA,*LPSHELLSTATEA;
+
+  typedef struct {
+    WINBOOL fShowAllObjects : 1;
+    WINBOOL fShowExtensions : 1;
+    WINBOOL fNoConfirmRecycle : 1;
+    WINBOOL fShowSysFiles : 1;
+    WINBOOL fShowCompColor : 1;
+    WINBOOL fDoubleClickInWebView : 1;
+    WINBOOL fDesktopHTML : 1;
+    WINBOOL fWin95Classic : 1;
+    WINBOOL fDontPrettyPath : 1;
+    WINBOOL fShowAttribCol : 1;
+    WINBOOL fMapNetDrvBtn : 1;
+    WINBOOL fShowInfoTip : 1;
+    WINBOOL fHideIcons : 1;
+    WINBOOL fWebView : 1;
+    WINBOOL fFilter : 1;
+    WINBOOL fShowSuperHidden : 1;
+    WINBOOL fNoNetCrawling : 1;
+    DWORD dwWin95Unused;
+    UINT uWin95Unused;
+    LONG lParamSort;
+    int iSortDirection;
+    UINT version;
+    UINT uNotUsed;
+    WINBOOL fSepProcess: 1;
+    WINBOOL fStartPanelOn: 1;
+    WINBOOL fShowStartPage: 1;
+    UINT fSpareFlags : 13;
+  } SHELLSTATEW,*LPSHELLSTATEW;
+
+#define SHELLSTATEVERSION_IE4 9
+#define SHELLSTATEVERSION_WIN2K 10
+
+#define SHELLSTATE __MINGW_NAME_AW(SHELLSTATE)
+#define LPSHELLSTATE __MINGW_NAME_AW(LPSHELLSTATE)
+
+#define SHELLSTATE_SIZE_WIN95 FIELD_OFFSET(SHELLSTATE,lParamSort)
+#define SHELLSTATE_SIZE_NT4 FIELD_OFFSET(SHELLSTATE,version)
+#define SHELLSTATE_SIZE_IE4 FIELD_OFFSET(SHELLSTATE,uNotUsed)
+#define SHELLSTATE_SIZE_WIN2K sizeof(SHELLSTATE)
+
+  SHSTDAPI_(void) SHGetSetSettings(LPSHELLSTATE lpss,DWORD dwMask,WINBOOL bSet);
+
+  typedef struct {
+    WINBOOL fShowAllObjects : 1;
+    WINBOOL fShowExtensions : 1;
+    WINBOOL fNoConfirmRecycle : 1;
+    WINBOOL fShowSysFiles : 1;
+    WINBOOL fShowCompColor : 1;
+    WINBOOL fDoubleClickInWebView : 1;
+    WINBOOL fDesktopHTML : 1;
+    WINBOOL fWin95Classic : 1;
+    WINBOOL fDontPrettyPath : 1;
+    WINBOOL fShowAttribCol : 1;
+    WINBOOL fMapNetDrvBtn : 1;
+    WINBOOL fShowInfoTip : 1;
+    WINBOOL fHideIcons : 1;
+    UINT fRestFlags : 3;
+  } SHELLFLAGSTATE,*LPSHELLFLAGSTATE;
+
+#define SSF_SHOWALLOBJECTS 0x00000001
+#define SSF_SHOWEXTENSIONS 0x00000002
+#define SSF_HIDDENFILEEXTS 0x00000004
+#define SSF_SERVERADMINUI 0x00000004
+#define SSF_SHOWCOMPCOLOR 0x00000008
+#define SSF_SORTCOLUMNS 0x00000010
+#define SSF_SHOWSYSFILES 0x00000020
+#define SSF_DOUBLECLICKINWEBVIEW 0x00000080
+#define SSF_SHOWATTRIBCOL 0x00000100
+#define SSF_DESKTOPHTML 0x00000200
+#define SSF_WIN95CLASSIC 0x00000400
+#define SSF_DONTPRETTYPATH 0x00000800
+#define SSF_SHOWINFOTIP 0x00002000
+#define SSF_MAPNETDRVBUTTON 0x00001000
+#define SSF_NOCONFIRMRECYCLE 0x00008000
+#define SSF_HIDEICONS 0x00004000
+#define SSF_FILTER 0x00010000
+#define SSF_WEBVIEW 0x00020000
+#define SSF_SHOWSUPERHIDDEN 0x00040000
+#define SSF_SEPPROCESS 0x00080000
+#define SSF_NONETCRAWLING 0x00100000
+#define SSF_STARTPANELON 0x00200000
+#define SSF_SHOWSTARTPAGE 0x00400000
+
+  SHSTDAPI_(void) SHGetSettings(LPSHELLFLAGSTATE lpsfs,DWORD dwMask);
+  SHSTDAPI SHBindToParent(LPCITEMIDLIST pidl,REFIID riid,void **ppv,LPCITEMIDLIST *ppidlLast);
+  SHSTDAPI SHParseDisplayName(LPCWSTR pszName,IBindCtx *pbc,LPITEMIDLIST *ppidl,SFGAOF sfgaoIn,SFGAOF *psfgaoOut);
+
+#define SHPPFW_NONE 0x00000000
+#define SHPPFW_DEFAULT SHPPFW_DIRCREATE
+#define SHPPFW_DIRCREATE 0x00000001
+#define SHPPFW_ASKDIRCREATE 0x00000002
+#define SHPPFW_IGNOREFILENAME 0x00000004
+#define SHPPFW_NOWRITECHECK 0x00000008
+#define SHPPFW_MEDIACHECKONLY 0x00000010
+
+#define SHPathPrepareForWrite __MINGW_NAME_AW(SHPathPrepareForWrite)
+
+  SHSTDAPI SHPathPrepareForWriteA(HWND hwnd,IUnknown *punkEnableModless,LPCSTR pszPath,DWORD dwFlags);
+  SHSTDAPI SHPathPrepareForWriteW(HWND hwnd,IUnknown *punkEnableModless,LPCWSTR pszPath,DWORD dwFlags);
+
+
+#undef INTERFACE
+#define INTERFACE INamedPropertyBag
+  DECLARE_INTERFACE_(INamedPropertyBag,IUnknown) {
+    STDMETHOD(QueryInterface) (THIS_ REFIID riid,void **ppv) PURE;
+    STDMETHOD_(ULONG,AddRef) (THIS) PURE;
+    STDMETHOD_(ULONG,Release) (THIS) PURE;
+    STDMETHOD(ReadPropertyNPB) (THIS_ LPCOLESTR pszBagname,LPCOLESTR pszPropName,PROPVARIANT *pVar) PURE;
+    STDMETHOD(WritePropertyNPB)(THIS_ LPCOLESTR pszBagname,LPCOLESTR pszPropName,PROPVARIANT *pVar) PURE;
+    STDMETHOD(RemovePropertyNPB)(THIS_ LPCOLESTR pszBagname,LPCOLESTR pszPropName) PURE;
+  };
+
+#ifdef __urlmon_h__
+  SHDOCAPI_(DWORD) SoftwareUpdateMessageBox(HWND hWnd,LPCWSTR szDistUnit,DWORD dwFlags,LPSOFTDISTINFO psdi);
+#endif
+
+#define SHCreateFileExtractIcon __MINGW_NAME_AW(SHCreateFileExtractIcon)
+
+  SHSTDAPI SHPropStgCreate(IPropertySetStorage *psstg,REFFMTID fmtid,CLSID *pclsid,DWORD grfFlags,DWORD grfMode,DWORD dwDisposition,IPropertyStorage**ppstg,UINT *puCodePage);
+  SHSTDAPI SHPropStgReadMultiple(IPropertyStorage *pps,UINT uCodePage,ULONG cpspec,PROPSPEC const rgpspec[],PROPVARIANT rgvar[]);
+  SHSTDAPI SHPropStgWriteMultiple(IPropertyStorage *pps,UINT *puCodePage,ULONG cpspec,PROPSPEC const rgpspec[],PROPVARIANT rgvar[],PROPID propidNameFirst);
+  SHSTDAPI SHCreateFileExtractIconA(LPCSTR pszFile,DWORD dwFileAttributes,REFIID riid,void **ppv);
+  SHSTDAPI SHCreateFileExtractIconW(LPCWSTR pszFile,DWORD dwFileAttributes,REFIID riid,void **ppv);
+
+#include <pshpack8.h>
+  SHSTDAPI SHLimitInputEdit(HWND hwndEdit,IShellFolder *psf);
+  SHSTDAPI SHMultiFileProperties(IDataObject *pdtobj,DWORD dwFlags);
+
+#if (_WIN32_IE >= 0x0600)
+  typedef void (CALLBACK *PFNASYNCICONTASKBALLBACK)(LPCITEMIDLIST pidl,LPVOID pvData,LPVOID pvHint,INT iIconIndex,INT iOpenIconIndex);
+  SHSTDAPI SHMapIDListToImageListIndexAsync(IShellTaskScheduler *pts,IShellFolder *psf,LPCITEMIDLIST pidl,UINT flags,PFNASYNCICONTASKBALLBACK pfn,LPVOID pvData,LPVOID pvHint,int *piIndex,int *piIndexSel);
+#endif
+
+  SHSTDAPI_(int) SHMapPIDLToSystemImageListIndex(IShellFolder *pshf,LPCITEMIDLIST pidl,int *piIndexSel);
+  STDAPI SHCLSIDFromString(PCWSTR lpsz,CLSID *pclsid);
+  STDAPI SHFlushClipboard(void);
+  STDAPI SHCreateQueryCancelAutoPlayMoniker(IMoniker**ppmoniker);
+  HINSTANCE WINAPI SHGetShellStyleHInstance(void);
+  STDAPI_(void) PerUserInit(void);
+  WINSHELLAPI WINBOOL WINAPI SHRunControlPanel(LPCWSTR lpcszCmdLine,HWND hwndMsgParent);
+  WINSHELLAPI int WINAPI PickIconDlg(HWND hwnd,LPWSTR pszIconPath,UINT cbIconPath,int *piIconIndex);
+
+  typedef struct tagAAMENUFILENAME {
+    SHORT cbTotal;
+    BYTE rgbReserved[12];
+    WCHAR szFileName[1];
+  } AASHELLMENUFILENAME,*LPAASHELLMENUFILENAME;
+
+  typedef struct tagAASHELLMENUITEM {
+    void *lpReserved1;
+    int iReserved;
+    UINT uiReserved;
+    LPAASHELLMENUFILENAME lpName;
+    LPWSTR psz;
+  } AASHELLMENUITEM,*LPAASHELLMENUITEM;
+
+  STDAPI SHGetAttributesFromDataObject(IDataObject *pdo,DWORD dwAttributeMask,DWORD *pdwAttributes,UINT *pcItems);
+
+#include <poppack.h>
+
+#ifdef __cplusplus
+}
+#endif
+
+#include <poppack.h>
+
+SHDOCAPI_(WINBOOL) ImportPrivacySettings(LPCWSTR szFilename,WINBOOL *pfParsePrivacyPreferences,WINBOOL *pfParsePerSiteRules);
+#ifndef IEnumPrivacyRecords
+typedef struct IEnumPrivacyRecords IEnumPrivacyRecords;
+#endif
+SHDOCAPI DoPrivacyDlg(HWND hwndParent,LPOLESTR pszUrl,IEnumPrivacyRecords *pPrivacyEnum,WINBOOL fReportAllSites);
+
+#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
+
+#endif
diff --git a/debian/include/shobjidl.h b/debian/include/shobjidl.h
new file mode 100644
index 0000000..981ba5e
--- /dev/null
+++ b/debian/include/shobjidl.h
@@ -0,0 +1,7290 @@
+/*** Autogenerated by WIDL 1.5.25 from include/shobjidl.idl - Do not edit ***/
+
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __shobjidl_h__
+#define __shobjidl_h__
+
+/* Forward declarations */
+
+#ifndef __IShellItem_FWD_DEFINED__
+#define __IShellItem_FWD_DEFINED__
+typedef interface IShellItem IShellItem;
+#endif
+
+#ifndef __IShellLibrary_FWD_DEFINED__
+#define __IShellLibrary_FWD_DEFINED__
+typedef interface IShellLibrary IShellLibrary;
+#endif
+
+#ifndef __ShellLibrary_FWD_DEFINED__
+#define __ShellLibrary_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ShellLibrary ShellLibrary;
+#else
+typedef struct ShellLibrary ShellLibrary;
+#endif /* defined __cplusplus */
+#endif /* defined __ShellLibrary_FWD_DEFINED__ */
+
+/* Headers for imported files */
+
+#include <objidl.h>
+#include <oaidl.h>
+#include <shtypes.h>
+#include <oleidl.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <_mingw_unicode.h>
+#ifndef __IPersistFolder_FWD_DEFINED__
+#define __IPersistFolder_FWD_DEFINED__
+typedef struct IPersistFolder IPersistFolder;
+#endif
+
+#ifndef __IPersistFolder2_FWD_DEFINED__
+#define __IPersistFolder2_FWD_DEFINED__
+typedef struct IPersistFolder2 IPersistFolder2;
+#endif
+
+#ifndef __IPersistIDList_FWD_DEFINED__
+#define __IPersistIDList_FWD_DEFINED__
+typedef struct IPersistIDList IPersistIDList;
+#endif
+
+#ifndef __IEnumIDList_FWD_DEFINED__
+#define __IEnumIDList_FWD_DEFINED__
+typedef struct IEnumIDList IEnumIDList;
+#endif
+
+#ifndef __IShellFolder_FWD_DEFINED__
+#define __IShellFolder_FWD_DEFINED__
+typedef struct IShellFolder IShellFolder;
+#endif
+
+#ifndef __IEnumExtraSearch_FWD_DEFINED__
+#define __IEnumExtraSearch_FWD_DEFINED__
+typedef struct IEnumExtraSearch IEnumExtraSearch;
+#endif
+
+#ifndef __IShellFolder2_FWD_DEFINED__
+#define __IShellFolder2_FWD_DEFINED__
+typedef struct IShellFolder2 IShellFolder2;
+#endif
+
+#ifndef __IShellView_FWD_DEFINED__
+#define __IShellView_FWD_DEFINED__
+typedef struct IShellView IShellView;
+#endif
+
+#ifndef __IShellView2_FWD_DEFINED__
+#define __IShellView2_FWD_DEFINED__
+typedef struct IShellView2 IShellView2;
+#endif
+
+#ifndef __IFolderView_FWD_DEFINED__
+#define __IFolderView_FWD_DEFINED__
+typedef struct IFolderView IFolderView;
+#endif
+
+#ifndef __IFolderFilterSite_FWD_DEFINED__
+#define __IFolderFilterSite_FWD_DEFINED__
+typedef struct IFolderFilterSite IFolderFilterSite;
+#endif
+
+#ifndef __IFolderFilter_FWD_DEFINED__
+#define __IFolderFilter_FWD_DEFINED__
+typedef struct IFolderFilter IFolderFilter;
+#endif
+
+#ifndef __IShellBrowser_FWD_DEFINED__
+#define __IShellBrowser_FWD_DEFINED__
+typedef struct IShellBrowser IShellBrowser;
+#endif
+
+#ifndef __IProfferService_FWD_DEFINED__
+#define __IProfferService_FWD_DEFINED__
+typedef struct IProfferService IProfferService;
+#endif
+
+#ifndef __IPropertyUI_FWD_DEFINED__
+#define __IPropertyUI_FWD_DEFINED__
+typedef struct IPropertyUI IPropertyUI;
+#endif
+
+#ifndef __ICategoryProvider_FWD_DEFINED__
+#define __ICategoryProvider_FWD_DEFINED__
+typedef struct ICategoryProvider ICategoryProvider;
+#endif
+
+#ifndef __ICategorizer_FWD_DEFINED__
+#define __ICategorizer_FWD_DEFINED__
+typedef struct ICategorizer ICategorizer;
+#endif
+
+#ifndef __IShellLinkA_FWD_DEFINED__
+#define __IShellLinkA_FWD_DEFINED__
+typedef struct IShellLinkA IShellLinkA;
+#endif
+
+#ifndef __IShellLinkW_FWD_DEFINED__
+#define __IShellLinkW_FWD_DEFINED__
+typedef struct IShellLinkW IShellLinkW;
+#endif
+
+#ifndef __IActionProgressDialog_FWD_DEFINED__
+#define __IActionProgressDialog_FWD_DEFINED__
+typedef struct IActionProgressDialog IActionProgressDialog;
+#endif
+
+#ifndef __IHWEventHandler_FWD_DEFINED__
+#define __IHWEventHandler_FWD_DEFINED__
+typedef struct IHWEventHandler IHWEventHandler;
+#endif
+
+#ifndef __IQueryCancelAutoPlay_FWD_DEFINED__
+#define __IQueryCancelAutoPlay_FWD_DEFINED__
+typedef struct IQueryCancelAutoPlay IQueryCancelAutoPlay;
+#endif
+
+#ifndef __IActionProgress_FWD_DEFINED__
+#define __IActionProgress_FWD_DEFINED__
+typedef struct IActionProgress IActionProgress;
+#endif
+
+#ifndef __IShellExtInit_FWD_DEFINED__
+#define __IShellExtInit_FWD_DEFINED__
+typedef struct IShellExtInit IShellExtInit;
+#endif
+
+#ifndef __IShellPropSheetExt_FWD_DEFINED__
+#define __IShellPropSheetExt_FWD_DEFINED__
+typedef struct IShellPropSheetExt IShellPropSheetExt;
+#endif
+
+#ifndef __IRemoteComputer_FWD_DEFINED__
+#define __IRemoteComputer_FWD_DEFINED__
+typedef struct IRemoteComputer IRemoteComputer;
+#endif
+
+#ifndef __IQueryContinue_FWD_DEFINED__
+#define __IQueryContinue_FWD_DEFINED__
+typedef struct IQueryContinue IQueryContinue;
+#endif
+
+#ifndef __IUserNotification_FWD_DEFINED__
+#define __IUserNotification_FWD_DEFINED__
+typedef struct IUserNotification IUserNotification;
+#endif
+
+#ifndef __IItemNameLimits_FWD_DEFINED__
+#define __IItemNameLimits_FWD_DEFINED__
+typedef struct IItemNameLimits IItemNameLimits;
+#endif
+
+#ifndef __INetCrawler_FWD_DEFINED__
+#define __INetCrawler_FWD_DEFINED__
+typedef struct INetCrawler INetCrawler;
+#endif
+
+#ifndef __IExtractImage_FWD_DEFINED__
+#define __IExtractImage_FWD_DEFINED__
+typedef struct IExtractImage IExtractImage;
+#endif
+
+#ifndef __IExtractImage2_FWD_DEFINED__
+#define __IExtractImage2_FWD_DEFINED__
+typedef struct IExtractImage2 IExtractImage2;
+#endif
+
+#ifndef __IUserEventTimerCallback_FWD_DEFINED__
+#define __IUserEventTimerCallback_FWD_DEFINED__
+typedef struct IUserEventTimerCallback IUserEventTimerCallback;
+#endif
+
+#ifndef __IUserEventTimer_FWD_DEFINED__
+#define __IUserEventTimer_FWD_DEFINED__
+typedef struct IUserEventTimer IUserEventTimer;
+#endif
+
+#ifndef __IDockingWindow_FWD_DEFINED__
+#define __IDockingWindow_FWD_DEFINED__
+typedef struct IDockingWindow IDockingWindow;
+#endif
+
+#ifndef __IDeskBand_FWD_DEFINED__
+#define __IDeskBand_FWD_DEFINED__
+typedef struct IDeskBand IDeskBand;
+#endif
+
+#ifndef __ITaskbarList_FWD_DEFINED__
+#define __ITaskbarList_FWD_DEFINED__
+typedef struct ITaskbarList ITaskbarList;
+#endif
+
+#ifndef __ITaskbarList2_FWD_DEFINED__
+#define __ITaskbarList2_FWD_DEFINED__
+typedef struct ITaskbarList2 ITaskbarList2;
+#endif
+
+#ifndef __ITaskbarList3_FWD_DEFINED__
+#define __ITaskbarList3_FWD_DEFINED__
+typedef interface ITaskbarList3 ITaskbarList3;
+#endif
+
+#ifndef __ITaskbarList4_FWD_DEFINED__
+#define __ITaskbarList4_FWD_DEFINED__
+typedef interface ITaskbarList4 ITaskbarList4;
+#endif
+
+#ifndef __IApplicationAssociationRegistrationUI_FWD_DEFINED__
+#define __IApplicationAssociationRegistrationUI_FWD_DEFINED__
+typedef interface IApplicationAssociationRegistrationUI IApplicationAssociationRegistrationUI;
+#endif
+
+#ifndef __ICDBurn_FWD_DEFINED__
+#define __ICDBurn_FWD_DEFINED__
+typedef struct ICDBurn ICDBurn;
+#endif
+
+#ifndef __IWizardSite_FWD_DEFINED__
+#define __IWizardSite_FWD_DEFINED__
+typedef struct IWizardSite IWizardSite;
+#endif
+
+#ifndef __IWizardExtension_FWD_DEFINED__
+#define __IWizardExtension_FWD_DEFINED__
+typedef struct IWizardExtension IWizardExtension;
+#endif
+
+#ifndef __IWebWizardExtension_FWD_DEFINED__
+#define __IWebWizardExtension_FWD_DEFINED__
+typedef struct IWebWizardExtension IWebWizardExtension;
+#endif
+
+#ifndef __IPublishingWizard_FWD_DEFINED__
+#define __IPublishingWizard_FWD_DEFINED__
+typedef struct IPublishingWizard IPublishingWizard;
+#endif
+
+#ifndef __IFolderViewHost_FWD_DEFINED__
+#define __IFolderViewHost_FWD_DEFINED__
+typedef struct IFolderViewHost IFolderViewHost;
+#endif
+
+#ifndef __IAutoCompleteDropDown_FWD_DEFINED__
+#define __IAutoCompleteDropDown_FWD_DEFINED__
+typedef struct IAutoCompleteDropDown IAutoCompleteDropDown;
+#endif
+
+#ifndef __IModalWindow_FWD_DEFINED__
+#define __IModalWindow_FWD_DEFINED__
+typedef struct IModalWindow IModalWindow;
+#endif
+
+#ifndef __IPassportWizard_FWD_DEFINED__
+#define __IPassportWizard_FWD_DEFINED__
+typedef struct IPassportWizard IPassportWizard;
+#endif
+
+#ifndef __ICDBurnExt_FWD_DEFINED__
+#define __ICDBurnExt_FWD_DEFINED__
+typedef struct ICDBurnExt ICDBurnExt;
+#endif
+
+#ifndef __IDVGetEnum_FWD_DEFINED__
+#define __IDVGetEnum_FWD_DEFINED__
+typedef struct IDVGetEnum IDVGetEnum;
+#endif
+
+#ifndef __IInsertItem_FWD_DEFINED__
+#define __IInsertItem_FWD_DEFINED__
+typedef struct IInsertItem IInsertItem;
+#endif
+
+#ifndef __IDeskBar_FWD_DEFINED__
+#define __IDeskBar_FWD_DEFINED__
+typedef struct IDeskBar IDeskBar;
+#endif
+
+#ifndef __IMenuBand_FWD_DEFINED__
+#define __IMenuBand_FWD_DEFINED__
+typedef struct IMenuBand IMenuBand;
+#endif
+
+#ifndef __IFolderBandPriv_FWD_DEFINED__
+#define __IFolderBandPriv_FWD_DEFINED__
+typedef struct IFolderBandPriv IFolderBandPriv;
+#endif
+
+#ifndef __IBandSite_FWD_DEFINED__
+#define __IBandSite_FWD_DEFINED__
+typedef struct IBandSite IBandSite;
+#endif
+
+#ifndef __INamespaceWalkCB_FWD_DEFINED__
+#define __INamespaceWalkCB_FWD_DEFINED__
+typedef struct INamespaceWalkCB INamespaceWalkCB;
+#endif
+
+#ifndef __INamespaceWalk_FWD_DEFINED__
+#define __INamespaceWalk_FWD_DEFINED__
+typedef struct INamespaceWalk INamespaceWalk;
+#endif
+
+#ifndef __IRegTreeItem_FWD_DEFINED__
+#define __IRegTreeItem_FWD_DEFINED__
+typedef struct IRegTreeItem IRegTreeItem;
+#endif
+
+#ifndef __IMenuPopup_FWD_DEFINED__
+#define __IMenuPopup_FWD_DEFINED__
+typedef struct IMenuPopup IMenuPopup;
+#endif
+
+#ifndef __IShellItem2_FWD_DEFINED__
+#define __IShellItem2_FWD_DEFINED__
+typedef interface IShellItem2 IShellItem2;
+#endif
+
+#ifndef __IImageRecompress_FWD_DEFINED__
+#define __IImageRecompress_FWD_DEFINED__
+typedef struct IImageRecompress IImageRecompress;
+#endif
+
+#ifndef __IDefViewSafety_FWD_DEFINED__
+#define __IDefViewSafety_FWD_DEFINED__
+typedef struct IDefViewSafety IDefViewSafety;
+#endif
+
+#ifndef __IContextMenuSite_FWD_DEFINED__
+#define __IContextMenuSite_FWD_DEFINED__
+typedef struct IContextMenuSite IContextMenuSite;
+#endif
+
+#ifndef __IDelegateFolder_FWD_DEFINED__
+#define __IDelegateFolder_FWD_DEFINED__
+typedef struct IDelegateFolder IDelegateFolder;
+#endif
+
+#ifndef __IBrowserFrameOptions_FWD_DEFINED__
+#define __IBrowserFrameOptions_FWD_DEFINED__
+typedef struct IBrowserFrameOptions IBrowserFrameOptions;
+#endif
+
+#ifndef __INewWindowManager_FWD_DEFINED__
+#define __INewWindowManager_FWD_DEFINED__
+typedef struct INewWindowManager INewWindowManager;
+#endif
+
+#ifndef __IShellMenuCallback_FWD_DEFINED__
+#define __IShellMenuCallback_FWD_DEFINED__
+typedef struct IShellMenuCallback IShellMenuCallback;
+#endif
+
+#ifndef __IAttachmentExecute_FWD_DEFINED__
+#define __IAttachmentExecute_FWD_DEFINED__
+typedef struct IAttachmentExecute IAttachmentExecute;
+#endif
+
+#ifndef __IShellMenu_FWD_DEFINED__
+#define __IShellMenu_FWD_DEFINED__
+typedef struct IShellMenu IShellMenu;
+#endif
+
+#ifndef __IApplicationAssociationRegistration_FWD_DEFINED__
+#define __IApplicationAssociationRegistration_FWD_DEFINED__
+typedef interface IApplicationAssociationRegistration IApplicationAssociationRegistration;
+#endif
+
+#ifndef __ICustomDestinationList_FWD_DEFINED__
+#define __ICustomDestinationList_FWD_DEFINED__
+typedef interface ICustomDestinationList ICustomDestinationList;
+#endif
+
+#ifndef __QueryCancelAutoPlay_FWD_DEFINED__
+#define __QueryCancelAutoPlay_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class QueryCancelAutoPlay QueryCancelAutoPlay;
+#else
+typedef struct QueryCancelAutoPlay QueryCancelAutoPlay;
+#endif
+#endif
+
+#ifndef __DriveSizeCategorizer_FWD_DEFINED__
+#define __DriveSizeCategorizer_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class DriveSizeCategorizer DriveSizeCategorizer;
+#else
+typedef struct DriveSizeCategorizer DriveSizeCategorizer;
+#endif
+#endif
+
+#ifndef __DriveTypeCategorizer_FWD_DEFINED__
+#define __DriveTypeCategorizer_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class DriveTypeCategorizer DriveTypeCategorizer;
+#else
+typedef struct DriveTypeCategorizer DriveTypeCategorizer;
+#endif
+#endif
+
+#ifndef __FreeSpaceCategorizer_FWD_DEFINED__
+#define __FreeSpaceCategorizer_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class FreeSpaceCategorizer FreeSpaceCategorizer;
+#else
+typedef struct FreeSpaceCategorizer FreeSpaceCategorizer;
+#endif
+#endif
+
+#ifndef __TimeCategorizer_FWD_DEFINED__
+#define __TimeCategorizer_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class TimeCategorizer TimeCategorizer;
+#else
+typedef struct TimeCategorizer TimeCategorizer;
+#endif
+#endif
+
+#ifndef __SizeCategorizer_FWD_DEFINED__
+#define __SizeCategorizer_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class SizeCategorizer SizeCategorizer;
+#else
+typedef struct SizeCategorizer SizeCategorizer;
+#endif
+#endif
+
+#ifndef __AlphabeticalCategorizer_FWD_DEFINED__
+#define __AlphabeticalCategorizer_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class AlphabeticalCategorizer AlphabeticalCategorizer;
+#else
+typedef struct AlphabeticalCategorizer AlphabeticalCategorizer;
+#endif
+#endif
+
+#ifndef __MergedCategorizer_FWD_DEFINED__
+#define __MergedCategorizer_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class MergedCategorizer MergedCategorizer;
+#else
+typedef struct MergedCategorizer MergedCategorizer;
+#endif
+#endif
+
+#ifndef __ImageProperties_FWD_DEFINED__
+#define __ImageProperties_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ImageProperties ImageProperties;
+#else
+typedef struct ImageProperties ImageProperties;
+#endif
+#endif
+
+#ifndef __PropertiesUI_FWD_DEFINED__
+#define __PropertiesUI_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class PropertiesUI PropertiesUI;
+#else
+typedef struct PropertiesUI PropertiesUI;
+#endif
+#endif
+
+#ifndef __UserNotification_FWD_DEFINED__
+#define __UserNotification_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class UserNotification UserNotification;
+#else
+typedef struct UserNotification UserNotification;
+#endif
+#endif
+
+#ifndef __UserEventTimerCallback_FWD_DEFINED__
+#define __UserEventTimerCallback_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class UserEventTimerCallback UserEventTimerCallback;
+#else
+typedef struct UserEventTimerCallback UserEventTimerCallback;
+#endif
+#endif
+
+#ifndef __UserEventTimer_FWD_DEFINED__
+#define __UserEventTimer_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class UserEventTimer UserEventTimer;
+#else
+typedef struct UserEventTimer UserEventTimer;
+#endif
+#endif
+
+#ifndef __NetCrawler_FWD_DEFINED__
+#define __NetCrawler_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class NetCrawler NetCrawler;
+#else
+typedef struct NetCrawler NetCrawler;
+#endif
+#endif
+
+#ifndef __CDBurn_FWD_DEFINED__
+#define __CDBurn_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class CDBurn CDBurn;
+#else
+typedef struct CDBurn CDBurn;
+#endif
+#endif
+
+#ifndef __TaskbarList_FWD_DEFINED__
+#define __TaskbarList_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class TaskbarList TaskbarList;
+#else
+typedef struct TaskbarList TaskbarList;
+#endif
+#endif
+
+#ifndef __WebWizardHost_FWD_DEFINED__
+#define __WebWizardHost_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class WebWizardHost WebWizardHost;
+#else
+typedef struct WebWizardHost WebWizardHost;
+#endif
+#endif
+
+#ifndef __PublishDropTarget_FWD_DEFINED__
+#define __PublishDropTarget_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class PublishDropTarget PublishDropTarget;
+#else
+typedef struct PublishDropTarget PublishDropTarget;
+#endif
+#endif
+
+#ifndef __PublishingWizard_FWD_DEFINED__
+#define __PublishingWizard_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class PublishingWizard PublishingWizard;
+#else
+typedef struct PublishingWizard PublishingWizard;
+#endif
+#endif
+
+#ifndef __InternetPrintOrdering_FWD_DEFINED__
+#define __InternetPrintOrdering_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class InternetPrintOrdering InternetPrintOrdering;
+#else
+typedef struct InternetPrintOrdering InternetPrintOrdering;
+#endif
+#endif
+
+#ifndef __FolderViewHost_FWD_DEFINED__
+#define __FolderViewHost_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class FolderViewHost FolderViewHost;
+#else
+typedef struct FolderViewHost FolderViewHost;
+#endif
+#endif
+
+#ifndef __NamespaceWalker_FWD_DEFINED__
+#define __NamespaceWalker_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class NamespaceWalker NamespaceWalker;
+#else
+typedef struct NamespaceWalker NamespaceWalker;
+#endif
+#endif
+
+#ifndef __ImageRecompress_FWD_DEFINED__
+#define __ImageRecompress_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class ImageRecompress ImageRecompress;
+#else
+typedef struct ImageRecompress ImageRecompress;
+#endif
+#endif
+
+#ifndef __TrayBandSiteService_FWD_DEFINED__
+#define __TrayBandSiteService_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class TrayBandSiteService TrayBandSiteService;
+#else
+typedef struct TrayBandSiteService TrayBandSiteService;
+#endif
+#endif
+
+#ifndef __PassportWizard_FWD_DEFINED__
+#define __PassportWizard_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class PassportWizard PassportWizard;
+#else
+typedef struct PassportWizard PassportWizard;
+#endif
+#endif
+
+#ifndef __AttachmentServices_FWD_DEFINED__
+#define __AttachmentServices_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class AttachmentServices AttachmentServices;
+#else
+typedef struct AttachmentServices AttachmentServices;
+#endif
+#endif
+
+#ifndef __IFileDialogEvents_FWD_DEFINED__
+#define __IFileDialogEvents_FWD_DEFINED__
+typedef interface IFileDialogEvents IFileDialogEvents;
+#endif
+
+#ifndef __IEnumShellItems_FWD_DEFINED__
+#define __IEnumShellItems_FWD_DEFINED__
+typedef interface IEnumShellItems IEnumShellItems;
+#endif
+
+#ifndef __IShellItemArray_FWD_DEFINED__
+#define __IShellItemArray_FWD_DEFINED__
+typedef interface IShellItemArray IShellItemArray;
+#endif
+
+#ifndef __IShellItemFilter_FWD_DEFINED__
+#define __IShellItemFilter_FWD_DEFINED__
+typedef interface IShellItemFilter IShellItemFilter;
+#endif
+
+#ifndef __IFileOperationProgressSink_FWD_DEFINED__
+#define __IFileOperationProgressSink_FWD_DEFINED__
+typedef interface IFileOperationProgressSink IFileOperationProgressSink;
+#endif
+
+#ifndef __IFileDialog_FWD_DEFINED__
+#define __IFileDialog_FWD_DEFINED__
+typedef interface IFileDialog IFileDialog;
+#endif
+
+#ifndef __IFileSaveDialog_FWD_DEFINED__
+#define __IFileSaveDialog_FWD_DEFINED__
+typedef interface IFileSaveDialog IFileSaveDialog;
+#endif
+
+#ifndef __IFileOpenDialog_FWD_DEFINED__
+#define __IFileOpenDialog_FWD_DEFINED__
+typedef interface IFileOpenDialog IFileOpenDialog;
+#endif
+
+#include "servprov.h"
+#include "comcat.h"
+#include "propidl.h"
+#include "prsht.h"
+#include "msxml.h"
+#include "propsys.h"
+#include "objectarray.h"
+
+#ifndef _WINRESRC_
+#ifndef _WIN32_IE
+#define _WIN32_IE 0x0501
+#endif
+#endif
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0000_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0000_v0_0_s_ifspec;
+
+#ifndef __IPersistFolder_INTERFACE_DEFINED__
+#define __IPersistFolder_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IPersistFolder;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IPersistFolder : public IPersist {
+  public:
+    virtual HRESULT WINAPI Initialize(LPCITEMIDLIST pidl) = 0;
+  };
+#else
+  typedef struct IPersistFolderVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IPersistFolder *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IPersistFolder *This);
+      ULONG (WINAPI *Release)(IPersistFolder *This);
+      HRESULT (WINAPI *GetClassID)(IPersistFolder *This,CLSID *pClassID);
+      HRESULT (WINAPI *Initialize)(IPersistFolder *This,LPCITEMIDLIST pidl);
+    END_INTERFACE
+  } IPersistFolderVtbl;
+  struct IPersistFolder {
+    CONST_VTBL struct IPersistFolderVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IPersistFolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersistFolder_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistFolder_Release(This) (This)->lpVtbl->Release(This)
+#define IPersistFolder_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+#define IPersistFolder_Initialize(This,pidl) (This)->lpVtbl->Initialize(This,pidl)
+#endif
+#endif
+  HRESULT WINAPI IPersistFolder_Initialize_Proxy(IPersistFolder *This,LPCITEMIDLIST pidl);
+  void __RPC_STUB IPersistFolder_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+  typedef IPersistFolder *LPPERSISTFOLDER;
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0196_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0196_v0_0_s_ifspec;
+#ifndef __IPersistFolder2_INTERFACE_DEFINED__
+#define __IPersistFolder2_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IPersistFolder2;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IPersistFolder2 : public IPersistFolder {
+  public:
+    virtual HRESULT WINAPI GetCurFolder(LPITEMIDLIST *ppidl) = 0;
+  };
+#else
+  typedef struct IPersistFolder2Vtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IPersistFolder2 *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IPersistFolder2 *This);
+      ULONG (WINAPI *Release)(IPersistFolder2 *This);
+      HRESULT (WINAPI *GetClassID)(IPersistFolder2 *This,CLSID *pClassID);
+      HRESULT (WINAPI *Initialize)(IPersistFolder2 *This,LPCITEMIDLIST pidl);
+      HRESULT (WINAPI *GetCurFolder)(IPersistFolder2 *This,LPITEMIDLIST *ppidl);
+    END_INTERFACE
+  } IPersistFolder2Vtbl;
+  struct IPersistFolder2 {
+    CONST_VTBL struct IPersistFolder2Vtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IPersistFolder2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersistFolder2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistFolder2_Release(This) (This)->lpVtbl->Release(This)
+#define IPersistFolder2_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+#define IPersistFolder2_Initialize(This,pidl) (This)->lpVtbl->Initialize(This,pidl)
+#define IPersistFolder2_GetCurFolder(This,ppidl) (This)->lpVtbl->GetCurFolder(This,ppidl)
+#endif
+#endif
+  HRESULT WINAPI IPersistFolder2_GetCurFolder_Proxy(IPersistFolder2 *This,LPITEMIDLIST *ppidl);
+  void __RPC_STUB IPersistFolder2_GetCurFolder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+  typedef IPersistFolder2 *LPPERSISTFOLDER2;
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0197_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0197_v0_0_s_ifspec;
+
+#ifndef __IPersistIDList_INTERFACE_DEFINED__
+#define __IPersistIDList_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IPersistIDList;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IPersistIDList : public IPersist {
+  public:
+    virtual HRESULT WINAPI SetIDList(LPCITEMIDLIST pidl) = 0;
+    virtual HRESULT WINAPI GetIDList(LPITEMIDLIST *ppidl) = 0;
+  };
+#else
+  typedef struct IPersistIDListVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IPersistIDList *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IPersistIDList *This);
+      ULONG (WINAPI *Release)(IPersistIDList *This);
+      HRESULT (WINAPI *GetClassID)(IPersistIDList *This,CLSID *pClassID);
+      HRESULT (WINAPI *SetIDList)(IPersistIDList *This,LPCITEMIDLIST pidl);
+      HRESULT (WINAPI *GetIDList)(IPersistIDList *This,LPITEMIDLIST *ppidl);
+    END_INTERFACE
+  } IPersistIDListVtbl;
+  struct IPersistIDList {
+    CONST_VTBL struct IPersistIDListVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IPersistIDList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPersistIDList_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPersistIDList_Release(This) (This)->lpVtbl->Release(This)
+#define IPersistIDList_GetClassID(This,pClassID) (This)->lpVtbl->GetClassID(This,pClassID)
+#define IPersistIDList_SetIDList(This,pidl) (This)->lpVtbl->SetIDList(This,pidl)
+#define IPersistIDList_GetIDList(This,ppidl) (This)->lpVtbl->GetIDList(This,ppidl)
+#endif
+#endif
+  HRESULT WINAPI IPersistIDList_SetIDList_Proxy(IPersistIDList *This,LPCITEMIDLIST pidl);
+  void __RPC_STUB IPersistIDList_SetIDList_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IPersistIDList_GetIDList_Proxy(IPersistIDList *This,LPITEMIDLIST *ppidl);
+  void __RPC_STUB IPersistIDList_GetIDList_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IEnumIDList_INTERFACE_DEFINED__
+#define __IEnumIDList_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IEnumIDList;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IEnumIDList : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Next(ULONG celt,LPITEMIDLIST *rgelt,ULONG *pceltFetched) = 0;
+    virtual HRESULT WINAPI Skip(ULONG celt) = 0;
+    virtual HRESULT WINAPI Reset(void) = 0;
+    virtual HRESULT WINAPI Clone(IEnumIDList **ppenum) = 0;
+  };
+#else
+  typedef struct IEnumIDListVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IEnumIDList *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IEnumIDList *This);
+      ULONG (WINAPI *Release)(IEnumIDList *This);
+      HRESULT (WINAPI *Next)(IEnumIDList *This,ULONG celt,LPITEMIDLIST *rgelt,ULONG *pceltFetched);
+      HRESULT (WINAPI *Skip)(IEnumIDList *This,ULONG celt);
+      HRESULT (WINAPI *Reset)(IEnumIDList *This);
+      HRESULT (WINAPI *Clone)(IEnumIDList *This,IEnumIDList **ppenum);
+    END_INTERFACE
+  } IEnumIDListVtbl;
+  struct IEnumIDList {
+    CONST_VTBL struct IEnumIDListVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IEnumIDList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumIDList_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumIDList_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumIDList_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumIDList_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumIDList_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumIDList_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#endif
+#endif
+  HRESULT WINAPI IEnumIDList_Next_Proxy(IEnumIDList *This,ULONG celt,LPITEMIDLIST *rgelt,ULONG *pceltFetched);
+  void __RPC_STUB IEnumIDList_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IEnumIDList_Skip_Proxy(IEnumIDList *This,ULONG celt);
+  void __RPC_STUB IEnumIDList_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IEnumIDList_Reset_Proxy(IEnumIDList *This);
+  void __RPC_STUB IEnumIDList_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IEnumIDList_Clone_Proxy(IEnumIDList *This,IEnumIDList **ppenum);
+  void __RPC_STUB IEnumIDList_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  typedef IEnumIDList *LPENUMIDLIST;
+
+  enum _SHGDNF {
+    SHGDN_NORMAL = 0x0000,SHGDN_INFOLDER = 0x0001,SHGDN_FOREDITING = 0x1000,SHGDN_FORADDRESSBAR = 0x4000,SHGDN_FORPARSING = 0x8000
+  };
+  typedef DWORD SHGDNF;
+
+  enum _SHCONTF {
+    SHCONTF_FOLDERS = 0x0020,SHCONTF_NONFOLDERS = 0x0040,SHCONTF_INCLUDEHIDDEN = 0x0080,SHCONTF_INIT_ON_FIRST_NEXT = 0x0100,
+    SHCONTF_NETPRINTERSRCH = 0x0200,SHCONTF_SHAREABLE = 0x0400,SHCONTF_STORAGE = 0x0800
+  };
+  typedef DWORD SHCONTF;
+
+#define SHCIDS_ALLFIELDS 0x80000000L
+#define SHCIDS_CANONICALONLY 0x10000000L
+#define SHCIDS_BITMASK 0xFFFF0000L
+#define SHCIDS_COLUMNMASK 0x0000FFFFL
+#define SFGAO_CANCOPY DROPEFFECT_COPY
+#define SFGAO_CANMOVE DROPEFFECT_MOVE
+#define SFGAO_CANLINK DROPEFFECT_LINK
+#define SFGAO_STORAGE 0x00000008L
+#define SFGAO_CANRENAME 0x00000010L
+#define SFGAO_CANDELETE 0x00000020L
+#define SFGAO_HASPROPSHEET 0x00000040L
+#define SFGAO_DROPTARGET 0x00000100L
+#define SFGAO_CAPABILITYMASK 0x00000177L
+#define SFGAO_ENCRYPTED 0x00002000L
+#define SFGAO_ISSLOW 0x00004000L
+#define SFGAO_GHOSTED 0x00008000L
+#define SFGAO_LINK 0x00010000L
+#define SFGAO_SHARE 0x00020000L
+#define SFGAO_READONLY 0x00040000L
+#define SFGAO_HIDDEN 0x00080000L
+#define SFGAO_DISPLAYATTRMASK 0x000FC000L
+#define SFGAO_FILESYSANCESTOR 0x10000000L
+#define SFGAO_FOLDER 0x20000000L
+#define SFGAO_FILESYSTEM 0x40000000L
+#define SFGAO_HASSUBFOLDER 0x80000000L
+#define SFGAO_CONTENTSMASK 0x80000000L
+#define SFGAO_VALIDATE 0x01000000L
+#define SFGAO_REMOVABLE 0x02000000L
+#define SFGAO_COMPRESSED 0x04000000L
+#define SFGAO_BROWSABLE 0x08000000L
+#define SFGAO_NONENUMERATED 0x00100000L
+#define SFGAO_NEWCONTENT 0x00200000L
+#define SFGAO_CANMONIKER 0x00400000L
+#define SFGAO_HASSTORAGE 0x00400000L
+#define SFGAO_STREAM 0x00400000L
+#define SFGAO_STORAGEANCESTOR 0x00800000L
+#define SFGAO_STORAGECAPMASK 0x70C50008L
+typedef ULONG SFGAOF;
+#define STR_SKIP_BINDING_CLSID L"Skip Binding CLSID"
+#define STR_PARSE_PREFER_FOLDER_BROWSING L"Parse Prefer Folder Browsing"
+#define STR_DONT_PARSE_RELATIVE L"Don't Parse Relative"
+#define STR_PARSE_TRANSLATE_ALIASES L"Parse Translate Aliases"
+#define STR_PARSE_SHELL_PROTOCOL_TO_FILE_OBJECTS L"Parse Shell Protocol To File Objects"
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0199_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0199_v0_0_s_ifspec;
+#ifndef __IShellFolder_INTERFACE_DEFINED__
+#define __IShellFolder_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IShellFolder;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IShellFolder : public IUnknown {
+  public:
+    virtual HRESULT WINAPI ParseDisplayName(HWND hwnd,LPBC pbc,LPOLESTR pszDisplayName,ULONG *pchEaten,LPITEMIDLIST *ppidl,ULONG *pdwAttributes) = 0;
+    virtual HRESULT WINAPI EnumObjects(HWND hwnd,SHCONTF grfFlags,IEnumIDList **ppenumIDList) = 0;
+    virtual HRESULT WINAPI BindToObject(LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv) = 0;
+    virtual HRESULT WINAPI BindToStorage(LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv) = 0;
+    virtual HRESULT WINAPI CompareIDs(LPARAM lParam,LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2) = 0;
+    virtual HRESULT WINAPI CreateViewObject(HWND hwndOwner,REFIID riid,void **ppv) = 0;
+    virtual HRESULT WINAPI GetAttributesOf(UINT cidl,LPCITEMIDLIST *apidl,SFGAOF *rgfInOut) = 0;
+    virtual HRESULT WINAPI GetUIObjectOf(HWND hwndOwner,UINT cidl,LPCITEMIDLIST *apidl,REFIID riid,UINT *rgfReserved,void **ppv) = 0;
+    virtual HRESULT WINAPI GetDisplayNameOf(LPCITEMIDLIST pidl,SHGDNF uFlags,STRRET *pName) = 0;
+    virtual HRESULT WINAPI SetNameOf(HWND hwnd,LPCITEMIDLIST pidl,LPCOLESTR pszName,SHGDNF uFlags,LPITEMIDLIST *ppidlOut) = 0;
+  };
+#else
+  typedef struct IShellFolderVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IShellFolder *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IShellFolder *This);
+      ULONG (WINAPI *Release)(IShellFolder *This);
+      HRESULT (WINAPI *ParseDisplayName)(IShellFolder *This,HWND hwnd,LPBC pbc,LPOLESTR pszDisplayName,ULONG *pchEaten,LPITEMIDLIST *ppidl,ULONG *pdwAttributes);
+      HRESULT (WINAPI *EnumObjects)(IShellFolder *This,HWND hwnd,SHCONTF grfFlags,IEnumIDList **ppenumIDList);
+      HRESULT (WINAPI *BindToObject)(IShellFolder *This,LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv);
+      HRESULT (WINAPI *BindToStorage)(IShellFolder *This,LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv);
+      HRESULT (WINAPI *CompareIDs)(IShellFolder *This,LPARAM lParam,LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2);
+      HRESULT (WINAPI *CreateViewObject)(IShellFolder *This,HWND hwndOwner,REFIID riid,void **ppv);
+      HRESULT (WINAPI *GetAttributesOf)(IShellFolder *This,UINT cidl,LPCITEMIDLIST *apidl,SFGAOF *rgfInOut);
+      HRESULT (WINAPI *GetUIObjectOf)(IShellFolder *This,HWND hwndOwner,UINT cidl,LPCITEMIDLIST *apidl,REFIID riid,UINT *rgfReserved,void **ppv);
+      HRESULT (WINAPI *GetDisplayNameOf)(IShellFolder *This,LPCITEMIDLIST pidl,SHGDNF uFlags,STRRET *pName);
+      HRESULT (WINAPI *SetNameOf)(IShellFolder *This,HWND hwnd,LPCITEMIDLIST pidl,LPCOLESTR pszName,SHGDNF uFlags,LPITEMIDLIST *ppidlOut);
+    END_INTERFACE
+  } IShellFolderVtbl;
+  struct IShellFolder {
+    CONST_VTBL struct IShellFolderVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IShellFolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellFolder_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellFolder_Release(This) (This)->lpVtbl->Release(This)
+#define IShellFolder_ParseDisplayName(This,hwnd,pbc,pszDisplayName,pchEaten,ppidl,pdwAttributes) (This)->lpVtbl->ParseDisplayName(This,hwnd,pbc,pszDisplayName,pchEaten,ppidl,pdwAttributes)
+#define IShellFolder_EnumObjects(This,hwnd,grfFlags,ppenumIDList) (This)->lpVtbl->EnumObjects(This,hwnd,grfFlags,ppenumIDList)
+#define IShellFolder_BindToObject(This,pidl,pbc,riid,ppv) (This)->lpVtbl->BindToObject(This,pidl,pbc,riid,ppv)
+#define IShellFolder_BindToStorage(This,pidl,pbc,riid,ppv) (This)->lpVtbl->BindToStorage(This,pidl,pbc,riid,ppv)
+#define IShellFolder_CompareIDs(This,lParam,pidl1,pidl2) (This)->lpVtbl->CompareIDs(This,lParam,pidl1,pidl2)
+#define IShellFolder_CreateViewObject(This,hwndOwner,riid,ppv) (This)->lpVtbl->CreateViewObject(This,hwndOwner,riid,ppv)
+#define IShellFolder_GetAttributesOf(This,cidl,apidl,rgfInOut) (This)->lpVtbl->GetAttributesOf(This,cidl,apidl,rgfInOut)
+#define IShellFolder_GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,rgfReserved,ppv) (This)->lpVtbl->GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,rgfReserved,ppv)
+#define IShellFolder_GetDisplayNameOf(This,pidl,uFlags,pName) (This)->lpVtbl->GetDisplayNameOf(This,pidl,uFlags,pName)
+#define IShellFolder_SetNameOf(This,hwnd,pidl,pszName,uFlags,ppidlOut) (This)->lpVtbl->SetNameOf(This,hwnd,pidl,pszName,uFlags,ppidlOut)
+#endif
+#endif
+  HRESULT WINAPI IShellFolder_ParseDisplayName_Proxy(IShellFolder *This,HWND hwnd,LPBC pbc,LPOLESTR pszDisplayName,ULONG *pchEaten,LPITEMIDLIST *ppidl,ULONG *pdwAttributes);
+  void __RPC_STUB IShellFolder_ParseDisplayName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder_EnumObjects_Proxy(IShellFolder *This,HWND hwnd,SHCONTF grfFlags,IEnumIDList **ppenumIDList);
+  void __RPC_STUB IShellFolder_EnumObjects_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder_BindToObject_Proxy(IShellFolder *This,LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv);
+  void __RPC_STUB IShellFolder_BindToObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder_BindToStorage_Proxy(IShellFolder *This,LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv);
+  void __RPC_STUB IShellFolder_BindToStorage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder_CompareIDs_Proxy(IShellFolder *This,LPARAM lParam,LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2);
+  void __RPC_STUB IShellFolder_CompareIDs_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder_CreateViewObject_Proxy(IShellFolder *This,HWND hwndOwner,REFIID riid,void **ppv);
+  void __RPC_STUB IShellFolder_CreateViewObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder_GetAttributesOf_Proxy(IShellFolder *This,UINT cidl,LPCITEMIDLIST *apidl,SFGAOF *rgfInOut);
+  void __RPC_STUB IShellFolder_GetAttributesOf_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder_GetUIObjectOf_Proxy(IShellFolder *This,HWND hwndOwner,UINT cidl,LPCITEMIDLIST *apidl,REFIID riid,UINT *rgfReserved,void **ppv);
+  void __RPC_STUB IShellFolder_GetUIObjectOf_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder_GetDisplayNameOf_Proxy(IShellFolder *This,LPCITEMIDLIST pidl,SHGDNF uFlags,STRRET *pName);
+  void __RPC_STUB IShellFolder_GetDisplayNameOf_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder_SetNameOf_Proxy(IShellFolder *This,HWND hwnd,LPCITEMIDLIST pidl,LPCOLESTR pszName,SHGDNF uFlags,LPITEMIDLIST *ppidlOut);
+  void __RPC_STUB IShellFolder_SetNameOf_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  typedef IShellFolder *LPSHELLFOLDER;
+
+#if (_WIN32_IE >= 0x0500)
+  typedef struct tagEXTRASEARCH {
+    GUID guidSearch;
+    WCHAR wszFriendlyName[80];
+    WCHAR wszUrl[2084];
+  } EXTRASEARCH;
+  typedef struct tagEXTRASEARCH *LPEXTRASEARCH;
+  typedef struct IEnumExtraSearch *LPENUMEXTRASEARCH;
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0200_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0200_v0_0_s_ifspec;
+
+#ifndef __IEnumExtraSearch_INTERFACE_DEFINED__
+#define __IEnumExtraSearch_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IEnumExtraSearch;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IEnumExtraSearch : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Next(ULONG celt,EXTRASEARCH *rgelt,ULONG *pceltFetched) = 0;
+    virtual HRESULT WINAPI Skip(ULONG celt) = 0;
+    virtual HRESULT WINAPI Reset(void) = 0;
+    virtual HRESULT WINAPI Clone(IEnumExtraSearch **ppenum) = 0;
+  };
+#else
+  typedef struct IEnumExtraSearchVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IEnumExtraSearch *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IEnumExtraSearch *This);
+      ULONG (WINAPI *Release)(IEnumExtraSearch *This);
+      HRESULT (WINAPI *Next)(IEnumExtraSearch *This,ULONG celt,EXTRASEARCH *rgelt,ULONG *pceltFetched);
+      HRESULT (WINAPI *Skip)(IEnumExtraSearch *This,ULONG celt);
+      HRESULT (WINAPI *Reset)(IEnumExtraSearch *This);
+      HRESULT (WINAPI *Clone)(IEnumExtraSearch *This,IEnumExtraSearch **ppenum);
+    END_INTERFACE
+  } IEnumExtraSearchVtbl;
+  struct IEnumExtraSearch {
+    CONST_VTBL struct IEnumExtraSearchVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IEnumExtraSearch_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IEnumExtraSearch_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IEnumExtraSearch_Release(This) (This)->lpVtbl->Release(This)
+#define IEnumExtraSearch_Next(This,celt,rgelt,pceltFetched) (This)->lpVtbl->Next(This,celt,rgelt,pceltFetched)
+#define IEnumExtraSearch_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
+#define IEnumExtraSearch_Reset(This) (This)->lpVtbl->Reset(This)
+#define IEnumExtraSearch_Clone(This,ppenum) (This)->lpVtbl->Clone(This,ppenum)
+#endif
+#endif
+  HRESULT WINAPI IEnumExtraSearch_Next_Proxy(IEnumExtraSearch *This,ULONG celt,EXTRASEARCH *rgelt,ULONG *pceltFetched);
+  void __RPC_STUB IEnumExtraSearch_Next_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IEnumExtraSearch_Skip_Proxy(IEnumExtraSearch *This,ULONG celt);
+  void __RPC_STUB IEnumExtraSearch_Skip_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IEnumExtraSearch_Reset_Proxy(IEnumExtraSearch *This);
+  void __RPC_STUB IEnumExtraSearch_Reset_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IEnumExtraSearch_Clone_Proxy(IEnumExtraSearch *This,IEnumExtraSearch **ppenum);
+  void __RPC_STUB IEnumExtraSearch_Clone_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0201_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0201_v0_0_s_ifspec;
+#ifndef __IShellFolder2_INTERFACE_DEFINED__
+#define __IShellFolder2_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IShellFolder2;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IShellFolder2 : public IShellFolder {
+  public:
+    virtual HRESULT WINAPI GetDefaultSearchGUID(GUID *pguid) = 0;
+    virtual HRESULT WINAPI EnumSearches(IEnumExtraSearch **ppenum) = 0;
+    virtual HRESULT WINAPI GetDefaultColumn(DWORD dwRes,ULONG *pSort,ULONG *pDisplay) = 0;
+    virtual HRESULT WINAPI GetDefaultColumnState(UINT iColumn,SHCOLSTATEF *pcsFlags) = 0;
+    virtual HRESULT WINAPI GetDetailsEx(LPCITEMIDLIST pidl,const SHCOLUMNID *pscid,VARIANT *pv) = 0;
+    virtual HRESULT WINAPI GetDetailsOf(LPCITEMIDLIST pidl,UINT iColumn,SHELLDETAILS *psd) = 0;
+    virtual HRESULT WINAPI MapColumnToSCID(UINT iColumn,SHCOLUMNID *pscid) = 0;
+  };
+#else
+  typedef struct IShellFolder2Vtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IShellFolder2 *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IShellFolder2 *This);
+      ULONG (WINAPI *Release)(IShellFolder2 *This);
+      HRESULT (WINAPI *ParseDisplayName)(IShellFolder2 *This,HWND hwnd,LPBC pbc,LPOLESTR pszDisplayName,ULONG *pchEaten,LPITEMIDLIST *ppidl,ULONG *pdwAttributes);
+      HRESULT (WINAPI *EnumObjects)(IShellFolder2 *This,HWND hwnd,SHCONTF grfFlags,IEnumIDList **ppenumIDList);
+      HRESULT (WINAPI *BindToObject)(IShellFolder2 *This,LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv);
+      HRESULT (WINAPI *BindToStorage)(IShellFolder2 *This,LPCITEMIDLIST pidl,LPBC pbc,REFIID riid,void **ppv);
+      HRESULT (WINAPI *CompareIDs)(IShellFolder2 *This,LPARAM lParam,LPCITEMIDLIST pidl1,LPCITEMIDLIST pidl2);
+      HRESULT (WINAPI *CreateViewObject)(IShellFolder2 *This,HWND hwndOwner,REFIID riid,void **ppv);
+      HRESULT (WINAPI *GetAttributesOf)(IShellFolder2 *This,UINT cidl,LPCITEMIDLIST *apidl,SFGAOF *rgfInOut);
+      HRESULT (WINAPI *GetUIObjectOf)(IShellFolder2 *This,HWND hwndOwner,UINT cidl,LPCITEMIDLIST *apidl,REFIID riid,UINT *rgfReserved,void **ppv);
+      HRESULT (WINAPI *GetDisplayNameOf)(IShellFolder2 *This,LPCITEMIDLIST pidl,SHGDNF uFlags,STRRET *pName);
+      HRESULT (WINAPI *SetNameOf)(IShellFolder2 *This,HWND hwnd,LPCITEMIDLIST pidl,LPCOLESTR pszName,SHGDNF uFlags,LPITEMIDLIST *ppidlOut);
+      HRESULT (WINAPI *GetDefaultSearchGUID)(IShellFolder2 *This,GUID *pguid);
+      HRESULT (WINAPI *EnumSearches)(IShellFolder2 *This,IEnumExtraSearch **ppenum);
+      HRESULT (WINAPI *GetDefaultColumn)(IShellFolder2 *This,DWORD dwRes,ULONG *pSort,ULONG *pDisplay);
+      HRESULT (WINAPI *GetDefaultColumnState)(IShellFolder2 *This,UINT iColumn,SHCOLSTATEF *pcsFlags);
+      HRESULT (WINAPI *GetDetailsEx)(IShellFolder2 *This,LPCITEMIDLIST pidl,const SHCOLUMNID *pscid,VARIANT *pv);
+      HRESULT (WINAPI *GetDetailsOf)(IShellFolder2 *This,LPCITEMIDLIST pidl,UINT iColumn,SHELLDETAILS *psd);
+      HRESULT (WINAPI *MapColumnToSCID)(IShellFolder2 *This,UINT iColumn,SHCOLUMNID *pscid);
+    END_INTERFACE
+  } IShellFolder2Vtbl;
+  struct IShellFolder2 {
+    CONST_VTBL struct IShellFolder2Vtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IShellFolder2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellFolder2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellFolder2_Release(This) (This)->lpVtbl->Release(This)
+#define IShellFolder2_ParseDisplayName(This,hwnd,pbc,pszDisplayName,pchEaten,ppidl,pdwAttributes) (This)->lpVtbl->ParseDisplayName(This,hwnd,pbc,pszDisplayName,pchEaten,ppidl,pdwAttributes)
+#define IShellFolder2_EnumObjects(This,hwnd,grfFlags,ppenumIDList) (This)->lpVtbl->EnumObjects(This,hwnd,grfFlags,ppenumIDList)
+#define IShellFolder2_BindToObject(This,pidl,pbc,riid,ppv) (This)->lpVtbl->BindToObject(This,pidl,pbc,riid,ppv)
+#define IShellFolder2_BindToStorage(This,pidl,pbc,riid,ppv) (This)->lpVtbl->BindToStorage(This,pidl,pbc,riid,ppv)
+#define IShellFolder2_CompareIDs(This,lParam,pidl1,pidl2) (This)->lpVtbl->CompareIDs(This,lParam,pidl1,pidl2)
+#define IShellFolder2_CreateViewObject(This,hwndOwner,riid,ppv) (This)->lpVtbl->CreateViewObject(This,hwndOwner,riid,ppv)
+#define IShellFolder2_GetAttributesOf(This,cidl,apidl,rgfInOut) (This)->lpVtbl->GetAttributesOf(This,cidl,apidl,rgfInOut)
+#define IShellFolder2_GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,rgfReserved,ppv) (This)->lpVtbl->GetUIObjectOf(This,hwndOwner,cidl,apidl,riid,rgfReserved,ppv)
+#define IShellFolder2_GetDisplayNameOf(This,pidl,uFlags,pName) (This)->lpVtbl->GetDisplayNameOf(This,pidl,uFlags,pName)
+#define IShellFolder2_SetNameOf(This,hwnd,pidl,pszName,uFlags,ppidlOut) (This)->lpVtbl->SetNameOf(This,hwnd,pidl,pszName,uFlags,ppidlOut)
+#define IShellFolder2_GetDefaultSearchGUID(This,pguid) (This)->lpVtbl->GetDefaultSearchGUID(This,pguid)
+#define IShellFolder2_EnumSearches(This,ppenum) (This)->lpVtbl->EnumSearches(This,ppenum)
+#define IShellFolder2_GetDefaultColumn(This,dwRes,pSort,pDisplay) (This)->lpVtbl->GetDefaultColumn(This,dwRes,pSort,pDisplay)
+#define IShellFolder2_GetDefaultColumnState(This,iColumn,pcsFlags) (This)->lpVtbl->GetDefaultColumnState(This,iColumn,pcsFlags)
+#define IShellFolder2_GetDetailsEx(This,pidl,pscid,pv) (This)->lpVtbl->GetDetailsEx(This,pidl,pscid,pv)
+#define IShellFolder2_GetDetailsOf(This,pidl,iColumn,psd) (This)->lpVtbl->GetDetailsOf(This,pidl,iColumn,psd)
+#define IShellFolder2_MapColumnToSCID(This,iColumn,pscid) (This)->lpVtbl->MapColumnToSCID(This,iColumn,pscid)
+#endif
+#endif
+  HRESULT WINAPI IShellFolder2_GetDefaultSearchGUID_Proxy(IShellFolder2 *This,GUID *pguid);
+  void __RPC_STUB IShellFolder2_GetDefaultSearchGUID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder2_EnumSearches_Proxy(IShellFolder2 *This,IEnumExtraSearch **ppenum);
+  void __RPC_STUB IShellFolder2_EnumSearches_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder2_GetDefaultColumn_Proxy(IShellFolder2 *This,DWORD dwRes,ULONG *pSort,ULONG *pDisplay);
+  void __RPC_STUB IShellFolder2_GetDefaultColumn_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder2_GetDefaultColumnState_Proxy(IShellFolder2 *This,UINT iColumn,SHCOLSTATEF *pcsFlags);
+  void __RPC_STUB IShellFolder2_GetDefaultColumnState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder2_GetDetailsEx_Proxy(IShellFolder2 *This,LPCITEMIDLIST pidl,const SHCOLUMNID *pscid,VARIANT *pv);
+  void __RPC_STUB IShellFolder2_GetDetailsEx_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder2_GetDetailsOf_Proxy(IShellFolder2 *This,LPCITEMIDLIST pidl,UINT iColumn,SHELLDETAILS *psd);
+  void __RPC_STUB IShellFolder2_GetDetailsOf_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellFolder2_MapColumnToSCID_Proxy(IShellFolder2 *This,UINT iColumn,SHCOLUMNID *pscid);
+  void __RPC_STUB IShellFolder2_MapColumnToSCID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+#endif
+  typedef char *LPVIEWSETTINGS;
+
+  typedef enum __MIDL___MIDL_itf_shobjidl_0202_0001 {
+    FWF_AUTOARRANGE = 0x1,FWF_ABBREVIATEDNAMES = 0x2,FWF_SNAPTOGRID = 0x4,FWF_OWNERDATA = 0x8,FWF_BESTFITWINDOW = 0x10,FWF_DESKTOP = 0x20,
+    FWF_SINGLESEL = 0x40,FWF_NOSUBFOLDERS = 0x80,FWF_TRANSPARENT = 0x100,FWF_NOCLIENTEDGE = 0x200,FWF_NOSCROLL = 0x400,FWF_ALIGNLEFT = 0x800,
+    FWF_NOICONS = 0x1000,FWF_SHOWSELALWAYS = 0x2000,FWF_NOVISIBLE = 0x4000,FWF_SINGLECLICKACTIVATE = 0x8000,FWF_NOWEBVIEW = 0x10000,
+    FWF_HIDEFILENAMES = 0x20000,FWF_CHECKSELECT = 0x40000
+  } FOLDERFLAGS;
+
+  typedef enum __MIDL___MIDL_itf_shobjidl_0202_0002 {
+    FVM_FIRST = 1,FVM_ICON = 1,FVM_SMALLICON = 2,FVM_LIST = 3,FVM_DETAILS = 4,FVM_THUMBNAIL = 5,FVM_TILE = 6,FVM_THUMBSTRIP = 7,FVM_LAST = 7
+  } FOLDERVIEWMODE;
+
+  typedef struct __MIDL___MIDL_itf_shobjidl_0202_0003 {
+    UINT ViewMode;
+    UINT fFlags;
+  } FOLDERSETTINGS;
+
+  typedef FOLDERSETTINGS *LPFOLDERSETTINGS;
+  typedef const FOLDERSETTINGS *LPCFOLDERSETTINGS;
+  typedef FOLDERSETTINGS *PFOLDERSETTINGS;
+
+#define SVSI_DESELECT 0x00000000
+#define SVSI_SELECT 0x00000001
+#define SVSI_EDIT 0x00000003
+#define SVSI_DESELECTOTHERS 0x00000004
+#define SVSI_ENSUREVISIBLE 0x00000008
+#define SVSI_FOCUSED 0x00000010
+#define SVSI_TRANSLATEPT 0x00000020
+#define SVSI_SELECTIONMARK 0x00000040
+#define SVSI_POSITIONITEM 0x00000080
+#define SVSI_CHECK 0x00000100
+#define SVSI_NOSTATECHANGE 0x80000000
+  typedef UINT SVSIF;
+
+  typedef enum __MIDL___MIDL_itf_shobjidl_0202_0004 {
+    SVGIO_BACKGROUND = 0,SVGIO_SELECTION = 0x1,SVGIO_ALLVIEW = 0x2,SVGIO_CHECKED = 0x3,SVGIO_TYPE_MASK = 0xf,SVGIO_FLAG_VIEWORDER = 0x80000000
+  } SVGIO;
+
+  typedef enum __MIDL___MIDL_itf_shobjidl_0202_0005 {
+    SVUIA_DEACTIVATE = 0,SVUIA_ACTIVATE_NOFOCUS = 1,SVUIA_ACTIVATE_FOCUS = 2,SVUIA_INPLACEACTIVATE = 3
+  } SVUIA_STATUS;
+
+#ifdef _FIX_ENABLEMODELESS_CONFLICT
+#define EnableModeless EnableModelessSV
+#endif
+#ifdef _NEVER_
+  typedef LPARAM LPFNSVADDPROPSHEETPAGE;
+#else
+#include <prsht.h>
+  typedef LPFNADDPROPSHEETPAGE LPFNSVADDPROPSHEETPAGE;
+#endif
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0202_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0202_v0_0_s_ifspec;
+#ifndef __IShellView_INTERFACE_DEFINED__
+#define __IShellView_INTERFACE_DEFINED__
+  typedef IShellView *LPSHELLVIEW;
+
+  EXTERN_C const IID IID_IShellView;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IShellView : public IOleWindow {
+  public:
+    virtual HRESULT WINAPI TranslateAccelerator(MSG *pmsg) = 0;
+    virtual HRESULT WINAPI EnableModeless(WINBOOL fEnable) = 0;
+    virtual HRESULT WINAPI UIActivate(UINT uState) = 0;
+    virtual HRESULT WINAPI Refresh(void) = 0;
+    virtual HRESULT WINAPI CreateViewWindow(IShellView *psvPrevious,LPCFOLDERSETTINGS pfs,IShellBrowser *psb,RECT *prcView,HWND *phWnd) = 0;
+    virtual HRESULT WINAPI DestroyViewWindow(void) = 0;
+    virtual HRESULT WINAPI GetCurrentInfo(LPFOLDERSETTINGS pfs) = 0;
+    virtual HRESULT WINAPI AddPropertySheetPages(DWORD dwReserved,LPFNSVADDPROPSHEETPAGE pfn,LPARAM lparam) = 0;
+    virtual HRESULT WINAPI SaveViewState(void) = 0;
+    virtual HRESULT WINAPI SelectItem(LPCITEMIDLIST pidlItem,SVSIF uFlags) = 0;
+    virtual HRESULT WINAPI GetItemObject(UINT uItem,REFIID riid,void **ppv) = 0;
+  };
+#else
+  typedef struct IShellViewVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IShellView *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IShellView *This);
+      ULONG (WINAPI *Release)(IShellView *This);
+      HRESULT (WINAPI *GetWindow)(IShellView *This,HWND *phwnd);
+      HRESULT (WINAPI *ContextSensitiveHelp)(IShellView *This,WINBOOL fEnterMode);
+      HRESULT (WINAPI *TranslateAccelerator)(IShellView *This,MSG *pmsg);
+      HRESULT (WINAPI *EnableModeless)(IShellView *This,WINBOOL fEnable);
+      HRESULT (WINAPI *UIActivate)(IShellView *This,UINT uState);
+      HRESULT (WINAPI *Refresh)(IShellView *This);
+      HRESULT (WINAPI *CreateViewWindow)(IShellView *This,IShellView *psvPrevious,LPCFOLDERSETTINGS pfs,IShellBrowser *psb,RECT *prcView,HWND *phWnd);
+      HRESULT (WINAPI *DestroyViewWindow)(IShellView *This);
+      HRESULT (WINAPI *GetCurrentInfo)(IShellView *This,LPFOLDERSETTINGS pfs);
+      HRESULT (WINAPI *AddPropertySheetPages)(IShellView *This,DWORD dwReserved,LPFNSVADDPROPSHEETPAGE pfn,LPARAM lparam);
+      HRESULT (WINAPI *SaveViewState)(IShellView *This);
+      HRESULT (WINAPI *SelectItem)(IShellView *This,LPCITEMIDLIST pidlItem,SVSIF uFlags);
+      HRESULT (WINAPI *GetItemObject)(IShellView *This,UINT uItem,REFIID riid,void **ppv);
+    END_INTERFACE
+  } IShellViewVtbl;
+  struct IShellView {
+    CONST_VTBL struct IShellViewVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IShellView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellView_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellView_Release(This) (This)->lpVtbl->Release(This)
+#define IShellView_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
+#define IShellView_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
+#define IShellView_TranslateAccelerator(This,pmsg) (This)->lpVtbl->TranslateAccelerator(This,pmsg)
+#define IShellView_EnableModeless(This,fEnable) (This)->lpVtbl->EnableModeless(This,fEnable)
+#define IShellView_UIActivate(This,uState) (This)->lpVtbl->UIActivate(This,uState)
+#define IShellView_Refresh(This) (This)->lpVtbl->Refresh(This)
+#define IShellView_CreateViewWindow(This,psvPrevious,pfs,psb,prcView,phWnd) (This)->lpVtbl->CreateViewWindow(This,psvPrevious,pfs,psb,prcView,phWnd)
+#define IShellView_DestroyViewWindow(This) (This)->lpVtbl->DestroyViewWindow(This)
+#define IShellView_GetCurrentInfo(This,pfs) (This)->lpVtbl->GetCurrentInfo(This,pfs)
+#define IShellView_AddPropertySheetPages(This,dwReserved,pfn,lparam) (This)->lpVtbl->AddPropertySheetPages(This,dwReserved,pfn,lparam)
+#define IShellView_SaveViewState(This) (This)->lpVtbl->SaveViewState(This)
+#define IShellView_SelectItem(This,pidlItem,uFlags) (This)->lpVtbl->SelectItem(This,pidlItem,uFlags)
+#define IShellView_GetItemObject(This,uItem,riid,ppv) (This)->lpVtbl->GetItemObject(This,uItem,riid,ppv)
+#endif
+#endif
+  HRESULT WINAPI IShellView_TranslateAccelerator_Proxy(IShellView *This,MSG *pmsg);
+  void __RPC_STUB IShellView_TranslateAccelerator_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellView_EnableModeless_Proxy(IShellView *This,WINBOOL fEnable);
+  void __RPC_STUB IShellView_EnableModeless_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellView_UIActivate_Proxy(IShellView *This,UINT uState);
+  void __RPC_STUB IShellView_UIActivate_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellView_Refresh_Proxy(IShellView *This);
+  void __RPC_STUB IShellView_Refresh_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellView_CreateViewWindow_Proxy(IShellView *This,IShellView *psvPrevious,LPCFOLDERSETTINGS pfs,IShellBrowser *psb,RECT *prcView,HWND *phWnd);
+  void __RPC_STUB IShellView_CreateViewWindow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellView_DestroyViewWindow_Proxy(IShellView *This);
+  void __RPC_STUB IShellView_DestroyViewWindow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellView_GetCurrentInfo_Proxy(IShellView *This,LPFOLDERSETTINGS pfs);
+  void __RPC_STUB IShellView_GetCurrentInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellView_AddPropertySheetPages_Proxy(IShellView *This,DWORD dwReserved,LPFNSVADDPROPSHEETPAGE pfn,LPARAM lparam);
+  void __RPC_STUB IShellView_AddPropertySheetPages_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellView_SaveViewState_Proxy(IShellView *This);
+  void __RPC_STUB IShellView_SaveViewState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellView_SelectItem_Proxy(IShellView *This,LPCITEMIDLIST pidlItem,SVSIF uFlags);
+  void __RPC_STUB IShellView_SelectItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellView_GetItemObject_Proxy(IShellView *This,UINT uItem,REFIID riid,void **ppv);
+  void __RPC_STUB IShellView_GetItemObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IShellView2_INTERFACE_DEFINED__
+#define __IShellView2_INTERFACE_DEFINED__
+  typedef GUID SHELLVIEWID;
+
+#define SV2GV_CURRENTVIEW ((UINT)-1)
+#define SV2GV_DEFAULTVIEW ((UINT)-2)
+#include <pshpack8.h>
+  typedef struct _SV2CVW2_PARAMS {
+    DWORD cbSize;
+    IShellView *psvPrev;
+    LPCFOLDERSETTINGS pfs;
+    IShellBrowser *psbOwner;
+    RECT *prcView;
+    const SHELLVIEWID *pvid;
+    HWND hwndView;
+  } SV2CVW2_PARAMS;
+
+  typedef struct _SV2CVW2_PARAMS *LPSV2CVW2_PARAMS;
+
+#include <poppack.h>
+
+  EXTERN_C const IID IID_IShellView2;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IShellView2 : public IShellView {
+  public:
+    virtual HRESULT WINAPI GetView(SHELLVIEWID *pvid,ULONG uView) = 0;
+    virtual HRESULT WINAPI CreateViewWindow2(LPSV2CVW2_PARAMS lpParams) = 0;
+    virtual HRESULT WINAPI HandleRename(LPCITEMIDLIST pidlNew) = 0;
+    virtual HRESULT WINAPI SelectAndPositionItem(LPCITEMIDLIST pidlItem,UINT uFlags,POINT *ppt) = 0;
+  };
+#else
+  typedef struct IShellView2Vtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IShellView2 *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IShellView2 *This);
+      ULONG (WINAPI *Release)(IShellView2 *This);
+      HRESULT (WINAPI *GetWindow)(IShellView2 *This,HWND *phwnd);
+      HRESULT (WINAPI *ContextSensitiveHelp)(IShellView2 *This,WINBOOL fEnterMode);
+      HRESULT (WINAPI *TranslateAccelerator)(IShellView2 *This,MSG *pmsg);
+      HRESULT (WINAPI *EnableModeless)(IShellView2 *This,WINBOOL fEnable);
+      HRESULT (WINAPI *UIActivate)(IShellView2 *This,UINT uState);
+      HRESULT (WINAPI *Refresh)(IShellView2 *This);
+      HRESULT (WINAPI *CreateViewWindow)(IShellView2 *This,IShellView *psvPrevious,LPCFOLDERSETTINGS pfs,IShellBrowser *psb,RECT *prcView,HWND *phWnd);
+      HRESULT (WINAPI *DestroyViewWindow)(IShellView2 *This);
+      HRESULT (WINAPI *GetCurrentInfo)(IShellView2 *This,LPFOLDERSETTINGS pfs);
+      HRESULT (WINAPI *AddPropertySheetPages)(IShellView2 *This,DWORD dwReserved,LPFNSVADDPROPSHEETPAGE pfn,LPARAM lparam);
+      HRESULT (WINAPI *SaveViewState)(IShellView2 *This);
+      HRESULT (WINAPI *SelectItem)(IShellView2 *This,LPCITEMIDLIST pidlItem,SVSIF uFlags);
+      HRESULT (WINAPI *GetItemObject)(IShellView2 *This,UINT uItem,REFIID riid,void **ppv);
+      HRESULT (WINAPI *GetView)(IShellView2 *This,SHELLVIEWID *pvid,ULONG uView);
+      HRESULT (WINAPI *CreateViewWindow2)(IShellView2 *This,LPSV2CVW2_PARAMS lpParams);
+      HRESULT (WINAPI *HandleRename)(IShellView2 *This,LPCITEMIDLIST pidlNew);
+      HRESULT (WINAPI *SelectAndPositionItem)(IShellView2 *This,LPCITEMIDLIST pidlItem,UINT uFlags,POINT *ppt);
+    END_INTERFACE
+  } IShellView2Vtbl;
+  struct IShellView2 {
+    CONST_VTBL struct IShellView2Vtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IShellView2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellView2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellView2_Release(This) (This)->lpVtbl->Release(This)
+#define IShellView2_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
+#define IShellView2_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
+#define IShellView2_TranslateAccelerator(This,pmsg) (This)->lpVtbl->TranslateAccelerator(This,pmsg)
+#define IShellView2_EnableModeless(This,fEnable) (This)->lpVtbl->EnableModeless(This,fEnable)
+#define IShellView2_UIActivate(This,uState) (This)->lpVtbl->UIActivate(This,uState)
+#define IShellView2_Refresh(This) (This)->lpVtbl->Refresh(This)
+#define IShellView2_CreateViewWindow(This,psvPrevious,pfs,psb,prcView,phWnd) (This)->lpVtbl->CreateViewWindow(This,psvPrevious,pfs,psb,prcView,phWnd)
+#define IShellView2_DestroyViewWindow(This) (This)->lpVtbl->DestroyViewWindow(This)
+#define IShellView2_GetCurrentInfo(This,pfs) (This)->lpVtbl->GetCurrentInfo(This,pfs)
+#define IShellView2_AddPropertySheetPages(This,dwReserved,pfn,lparam) (This)->lpVtbl->AddPropertySheetPages(This,dwReserved,pfn,lparam)
+#define IShellView2_SaveViewState(This) (This)->lpVtbl->SaveViewState(This)
+#define IShellView2_SelectItem(This,pidlItem,uFlags) (This)->lpVtbl->SelectItem(This,pidlItem,uFlags)
+#define IShellView2_GetItemObject(This,uItem,riid,ppv) (This)->lpVtbl->GetItemObject(This,uItem,riid,ppv)
+#define IShellView2_GetView(This,pvid,uView) (This)->lpVtbl->GetView(This,pvid,uView)
+#define IShellView2_CreateViewWindow2(This,lpParams) (This)->lpVtbl->CreateViewWindow2(This,lpParams)
+#define IShellView2_HandleRename(This,pidlNew) (This)->lpVtbl->HandleRename(This,pidlNew)
+#define IShellView2_SelectAndPositionItem(This,pidlItem,uFlags,ppt) (This)->lpVtbl->SelectAndPositionItem(This,pidlItem,uFlags,ppt)
+#endif
+#endif
+  HRESULT WINAPI IShellView2_GetView_Proxy(IShellView2 *This,SHELLVIEWID *pvid,ULONG uView);
+  void __RPC_STUB IShellView2_GetView_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellView2_CreateViewWindow2_Proxy(IShellView2 *This,LPSV2CVW2_PARAMS lpParams);
+  void __RPC_STUB IShellView2_CreateViewWindow2_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellView2_HandleRename_Proxy(IShellView2 *This,LPCITEMIDLIST pidlNew);
+  void __RPC_STUB IShellView2_HandleRename_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellView2_SelectAndPositionItem_Proxy(IShellView2 *This,LPCITEMIDLIST pidlItem,UINT uFlags,POINT *ppt);
+  void __RPC_STUB IShellView2_SelectAndPositionItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IFolderView_INTERFACE_DEFINED__
+#define __IFolderView_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IFolderView;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IFolderView : public IUnknown {
+  public:
+    virtual HRESULT WINAPI GetCurrentViewMode(UINT *pViewMode) = 0;
+    virtual HRESULT WINAPI SetCurrentViewMode(UINT ViewMode) = 0;
+    virtual HRESULT WINAPI GetFolder(REFIID riid,void **ppv) = 0;
+    virtual HRESULT WINAPI Item(int iItemIndex,LPITEMIDLIST *ppidl) = 0;
+    virtual HRESULT WINAPI ItemCount(UINT uFlags,int *pcItems) = 0;
+    virtual HRESULT WINAPI Items(UINT uFlags,REFIID riid,void **ppv) = 0;
+    virtual HRESULT WINAPI GetSelectionMarkedItem(int *piItem) = 0;
+    virtual HRESULT WINAPI GetFocusedItem(int *piItem) = 0;
+    virtual HRESULT WINAPI GetItemPosition(LPCITEMIDLIST pidl,POINT *ppt) = 0;
+    virtual HRESULT WINAPI GetSpacing(POINT *ppt) = 0;
+    virtual HRESULT WINAPI GetDefaultSpacing(POINT *ppt) = 0;
+    virtual HRESULT WINAPI GetAutoArrange(void) = 0;
+    virtual HRESULT WINAPI SelectItem(int iItem,DWORD dwFlags) = 0;
+    virtual HRESULT WINAPI SelectAndPositionItems(UINT cidl,LPCITEMIDLIST *apidl,POINT *apt,DWORD dwFlags) = 0;
+  };
+#else
+  typedef struct IFolderViewVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IFolderView *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IFolderView *This);
+      ULONG (WINAPI *Release)(IFolderView *This);
+      HRESULT (WINAPI *GetCurrentViewMode)(IFolderView *This,UINT *pViewMode);
+      HRESULT (WINAPI *SetCurrentViewMode)(IFolderView *This,UINT ViewMode);
+      HRESULT (WINAPI *GetFolder)(IFolderView *This,REFIID riid,void **ppv);
+      HRESULT (WINAPI *Item)(IFolderView *This,int iItemIndex,LPITEMIDLIST *ppidl);
+      HRESULT (WINAPI *ItemCount)(IFolderView *This,UINT uFlags,int *pcItems);
+      HRESULT (WINAPI *Items)(IFolderView *This,UINT uFlags,REFIID riid,void **ppv);
+      HRESULT (WINAPI *GetSelectionMarkedItem)(IFolderView *This,int *piItem);
+      HRESULT (WINAPI *GetFocusedItem)(IFolderView *This,int *piItem);
+      HRESULT (WINAPI *GetItemPosition)(IFolderView *This,LPCITEMIDLIST pidl,POINT *ppt);
+      HRESULT (WINAPI *GetSpacing)(IFolderView *This,POINT *ppt);
+      HRESULT (WINAPI *GetDefaultSpacing)(IFolderView *This,POINT *ppt);
+      HRESULT (WINAPI *GetAutoArrange)(IFolderView *This);
+      HRESULT (WINAPI *SelectItem)(IFolderView *This,int iItem,DWORD dwFlags);
+      HRESULT (WINAPI *SelectAndPositionItems)(IFolderView *This,UINT cidl,LPCITEMIDLIST *apidl,POINT *apt,DWORD dwFlags);
+    END_INTERFACE
+  } IFolderViewVtbl;
+  struct IFolderView {
+    CONST_VTBL struct IFolderViewVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IFolderView_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFolderView_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFolderView_Release(This) (This)->lpVtbl->Release(This)
+#define IFolderView_GetCurrentViewMode(This,pViewMode) (This)->lpVtbl->GetCurrentViewMode(This,pViewMode)
+#define IFolderView_SetCurrentViewMode(This,ViewMode) (This)->lpVtbl->SetCurrentViewMode(This,ViewMode)
+#define IFolderView_GetFolder(This,riid,ppv) (This)->lpVtbl->GetFolder(This,riid,ppv)
+#define IFolderView_Item(This,iItemIndex,ppidl) (This)->lpVtbl->Item(This,iItemIndex,ppidl)
+#define IFolderView_ItemCount(This,uFlags,pcItems) (This)->lpVtbl->ItemCount(This,uFlags,pcItems)
+#define IFolderView_Items(This,uFlags,riid,ppv) (This)->lpVtbl->Items(This,uFlags,riid,ppv)
+#define IFolderView_GetSelectionMarkedItem(This,piItem) (This)->lpVtbl->GetSelectionMarkedItem(This,piItem)
+#define IFolderView_GetFocusedItem(This,piItem) (This)->lpVtbl->GetFocusedItem(This,piItem)
+#define IFolderView_GetItemPosition(This,pidl,ppt) (This)->lpVtbl->GetItemPosition(This,pidl,ppt)
+#define IFolderView_GetSpacing(This,ppt) (This)->lpVtbl->GetSpacing(This,ppt)
+#define IFolderView_GetDefaultSpacing(This,ppt) (This)->lpVtbl->GetDefaultSpacing(This,ppt)
+#define IFolderView_GetAutoArrange(This) (This)->lpVtbl->GetAutoArrange(This)
+#define IFolderView_SelectItem(This,iItem,dwFlags) (This)->lpVtbl->SelectItem(This,iItem,dwFlags)
+#define IFolderView_SelectAndPositionItems(This,cidl,apidl,apt,dwFlags) (This)->lpVtbl->SelectAndPositionItems(This,cidl,apidl,apt,dwFlags)
+#endif
+#endif
+  HRESULT WINAPI IFolderView_GetCurrentViewMode_Proxy(IFolderView *This,UINT *pViewMode);
+  void __RPC_STUB IFolderView_GetCurrentViewMode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderView_SetCurrentViewMode_Proxy(IFolderView *This,UINT ViewMode);
+  void __RPC_STUB IFolderView_SetCurrentViewMode_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderView_GetFolder_Proxy(IFolderView *This,REFIID riid,void **ppv);
+  void __RPC_STUB IFolderView_GetFolder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderView_Item_Proxy(IFolderView *This,int iItemIndex,LPITEMIDLIST *ppidl);
+  void __RPC_STUB IFolderView_Item_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderView_ItemCount_Proxy(IFolderView *This,UINT uFlags,int *pcItems);
+  void __RPC_STUB IFolderView_ItemCount_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderView_Items_Proxy(IFolderView *This,UINT uFlags,REFIID riid,void **ppv);
+  void __RPC_STUB IFolderView_Items_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderView_GetSelectionMarkedItem_Proxy(IFolderView *This,int *piItem);
+  void __RPC_STUB IFolderView_GetSelectionMarkedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderView_GetFocusedItem_Proxy(IFolderView *This,int *piItem);
+  void __RPC_STUB IFolderView_GetFocusedItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderView_GetItemPosition_Proxy(IFolderView *This,LPCITEMIDLIST pidl,POINT *ppt);
+  void __RPC_STUB IFolderView_GetItemPosition_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderView_GetSpacing_Proxy(IFolderView *This,POINT *ppt);
+  void __RPC_STUB IFolderView_GetSpacing_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderView_GetDefaultSpacing_Proxy(IFolderView *This,POINT *ppt);
+  void __RPC_STUB IFolderView_GetDefaultSpacing_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderView_GetAutoArrange_Proxy(IFolderView *This);
+  void __RPC_STUB IFolderView_GetAutoArrange_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderView_SelectItem_Proxy(IFolderView *This,int iItem,DWORD dwFlags);
+  void __RPC_STUB IFolderView_SelectItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderView_SelectAndPositionItems_Proxy(IFolderView *This,UINT cidl,LPCITEMIDLIST *apidl,POINT *apt,DWORD dwFlags);
+  void __RPC_STUB IFolderView_SelectAndPositionItems_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#define SID_SFolderView IID_IFolderView
+#ifdef _FIX_ENABLEMODELESS_CONFLICT
+#undef EnableModeless
+#endif
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0205_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0205_v0_0_s_ifspec;
+#ifndef __IFolderFilterSite_INTERFACE_DEFINED__
+#define __IFolderFilterSite_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IFolderFilterSite;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IFolderFilterSite : public IUnknown {
+  public:
+    virtual HRESULT WINAPI SetFilter(IUnknown *punk) = 0;
+  };
+#else
+  typedef struct IFolderFilterSiteVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IFolderFilterSite *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IFolderFilterSite *This);
+      ULONG (WINAPI *Release)(IFolderFilterSite *This);
+      HRESULT (WINAPI *SetFilter)(IFolderFilterSite *This,IUnknown *punk);
+    END_INTERFACE
+  } IFolderFilterSiteVtbl;
+  struct IFolderFilterSite {
+    CONST_VTBL struct IFolderFilterSiteVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IFolderFilterSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFolderFilterSite_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFolderFilterSite_Release(This) (This)->lpVtbl->Release(This)
+#define IFolderFilterSite_SetFilter(This,punk) (This)->lpVtbl->SetFilter(This,punk)
+#endif
+#endif
+  HRESULT WINAPI IFolderFilterSite_SetFilter_Proxy(IFolderFilterSite *This,IUnknown *punk);
+  void __RPC_STUB IFolderFilterSite_SetFilter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IFolderFilter_INTERFACE_DEFINED__
+#define __IFolderFilter_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IFolderFilter;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IFolderFilter : public IUnknown {
+  public:
+    virtual HRESULT WINAPI ShouldShow(IShellFolder *psf,LPCITEMIDLIST pidlFolder,LPCITEMIDLIST pidlItem) = 0;
+    virtual HRESULT WINAPI GetEnumFlags(IShellFolder *psf,LPCITEMIDLIST pidlFolder,HWND *phwnd,DWORD *pgrfFlags) = 0;
+  };
+#else
+  typedef struct IFolderFilterVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IFolderFilter *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IFolderFilter *This);
+      ULONG (WINAPI *Release)(IFolderFilter *This);
+      HRESULT (WINAPI *ShouldShow)(IFolderFilter *This,IShellFolder *psf,LPCITEMIDLIST pidlFolder,LPCITEMIDLIST pidlItem);
+      HRESULT (WINAPI *GetEnumFlags)(IFolderFilter *This,IShellFolder *psf,LPCITEMIDLIST pidlFolder,HWND *phwnd,DWORD *pgrfFlags);
+    END_INTERFACE
+  } IFolderFilterVtbl;
+  struct IFolderFilter {
+    CONST_VTBL struct IFolderFilterVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IFolderFilter_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFolderFilter_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFolderFilter_Release(This) (This)->lpVtbl->Release(This)
+#define IFolderFilter_ShouldShow(This,psf,pidlFolder,pidlItem) (This)->lpVtbl->ShouldShow(This,psf,pidlFolder,pidlItem)
+#define IFolderFilter_GetEnumFlags(This,psf,pidlFolder,phwnd,pgrfFlags) (This)->lpVtbl->GetEnumFlags(This,psf,pidlFolder,phwnd,pgrfFlags)
+#endif
+#endif
+  HRESULT WINAPI IFolderFilter_ShouldShow_Proxy(IFolderFilter *This,IShellFolder *psf,LPCITEMIDLIST pidlFolder,LPCITEMIDLIST pidlItem);
+  void __RPC_STUB IFolderFilter_ShouldShow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderFilter_GetEnumFlags_Proxy(IFolderFilter *This,IShellFolder *psf,LPCITEMIDLIST pidlFolder,HWND *phwnd,DWORD *pgrfFlags);
+  void __RPC_STUB IFolderFilter_GetEnumFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#define SBSP_DEFBROWSER 0x0000
+#define SBSP_SAMEBROWSER 0x0001
+#define SBSP_NEWBROWSER 0x0002
+#define SBSP_DEFMODE 0x0000
+#define SBSP_OPENMODE 0x0010
+#define SBSP_EXPLOREMODE 0x0020
+#define SBSP_HELPMODE 0x0040
+#define SBSP_NOTRANSFERHIST 0x0080
+#define SBSP_ABSOLUTE 0x0000
+#define SBSP_RELATIVE 0x1000
+#define SBSP_PARENT 0x2000
+#define SBSP_NAVIGATEBACK 0x4000
+#define SBSP_NAVIGATEFORWARD 0x8000
+#define SBSP_ALLOW_AUTONAVIGATE 0x10000
+#define SBSP_CALLERUNTRUSTED 0x00800000
+#define SBSP_TRUSTFIRSTDOWNLOAD 0x01000000
+#define SBSP_UNTRUSTEDFORDOWNLOAD 0x02000000
+#define SBSP_NOAUTOSELECT 0x04000000
+#define SBSP_WRITENOHISTORY 0x08000000
+#define SBSP_TRUSTEDFORACTIVEX 0x10000000
+#define SBSP_REDIRECT 0x40000000
+#define SBSP_INITIATEDBYHLINKFRAME 0x80000000
+#define FCW_STATUS 0x0001
+#define FCW_TOOLBAR 0x0002
+#define FCW_TREE 0x0003
+#define FCW_INTERNETBAR 0x0006
+#define FCW_PROGRESS 0x0008
+#define FCT_MERGE 0x0001
+#define FCT_CONFIGABLE 0x0002
+#define FCT_ADDTOEND 0x0004
+#ifdef _NEVER_
+  typedef LPARAM LPTBBUTTONSB;
+#else
+#include <commctrl.h>
+  typedef LPTBBUTTON LPTBBUTTONSB;
+#endif
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0207_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0207_v0_0_s_ifspec;
+#ifndef __IShellBrowser_INTERFACE_DEFINED__
+#define __IShellBrowser_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IShellBrowser;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IShellBrowser : public IOleWindow {
+  public:
+    virtual HRESULT WINAPI InsertMenusSB(HMENU hmenuShared,LPOLEMENUGROUPWIDTHS lpMenuWidths) = 0;
+    virtual HRESULT WINAPI SetMenuSB(HMENU hmenuShared,HOLEMENU holemenuRes,HWND hwndActiveObject) = 0;
+    virtual HRESULT WINAPI RemoveMenusSB(HMENU hmenuShared) = 0;
+    virtual HRESULT WINAPI SetStatusTextSB(LPCOLESTR pszStatusText) = 0;
+    virtual HRESULT WINAPI EnableModelessSB(WINBOOL fEnable) = 0;
+    virtual HRESULT WINAPI TranslateAcceleratorSB(MSG *pmsg,WORD wID) = 0;
+    virtual HRESULT WINAPI BrowseObject(LPCITEMIDLIST pidl,UINT wFlags) = 0;
+    virtual HRESULT WINAPI GetViewStateStream(DWORD grfMode,IStream **ppStrm) = 0;
+    virtual HRESULT WINAPI GetControlWindow(UINT id,HWND *phwnd) = 0;
+    virtual HRESULT WINAPI SendControlMsg(UINT id,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *pret) = 0;
+    virtual HRESULT WINAPI QueryActiveShellView(IShellView **ppshv) = 0;
+    virtual HRESULT WINAPI OnViewWindowActive(IShellView *pshv) = 0;
+    virtual HRESULT WINAPI SetToolbarItems(LPTBBUTTONSB lpButtons,UINT nButtons,UINT uFlags) = 0;
+  };
+#else
+  typedef struct IShellBrowserVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IShellBrowser *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IShellBrowser *This);
+      ULONG (WINAPI *Release)(IShellBrowser *This);
+      HRESULT (WINAPI *GetWindow)(IShellBrowser *This,HWND *phwnd);
+      HRESULT (WINAPI *ContextSensitiveHelp)(IShellBrowser *This,WINBOOL fEnterMode);
+      HRESULT (WINAPI *InsertMenusSB)(IShellBrowser *This,HMENU hmenuShared,LPOLEMENUGROUPWIDTHS lpMenuWidths);
+      HRESULT (WINAPI *SetMenuSB)(IShellBrowser *This,HMENU hmenuShared,HOLEMENU holemenuRes,HWND hwndActiveObject);
+      HRESULT (WINAPI *RemoveMenusSB)(IShellBrowser *This,HMENU hmenuShared);
+      HRESULT (WINAPI *SetStatusTextSB)(IShellBrowser *This,LPCOLESTR pszStatusText);
+      HRESULT (WINAPI *EnableModelessSB)(IShellBrowser *This,WINBOOL fEnable);
+      HRESULT (WINAPI *TranslateAcceleratorSB)(IShellBrowser *This,MSG *pmsg,WORD wID);
+      HRESULT (WINAPI *BrowseObject)(IShellBrowser *This,LPCITEMIDLIST pidl,UINT wFlags);
+      HRESULT (WINAPI *GetViewStateStream)(IShellBrowser *This,DWORD grfMode,IStream **ppStrm);
+      HRESULT (WINAPI *GetControlWindow)(IShellBrowser *This,UINT id,HWND *phwnd);
+      HRESULT (WINAPI *SendControlMsg)(IShellBrowser *This,UINT id,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *pret);
+      HRESULT (WINAPI *QueryActiveShellView)(IShellBrowser *This,IShellView **ppshv);
+      HRESULT (WINAPI *OnViewWindowActive)(IShellBrowser *This,IShellView *pshv);
+      HRESULT (WINAPI *SetToolbarItems)(IShellBrowser *This,LPTBBUTTONSB lpButtons,UINT nButtons,UINT uFlags);
+    END_INTERFACE
+  } IShellBrowserVtbl;
+  struct IShellBrowser {
+    CONST_VTBL struct IShellBrowserVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IShellBrowser_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellBrowser_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellBrowser_Release(This) (This)->lpVtbl->Release(This)
+#define IShellBrowser_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
+#define IShellBrowser_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
+#define IShellBrowser_InsertMenusSB(This,hmenuShared,lpMenuWidths) (This)->lpVtbl->InsertMenusSB(This,hmenuShared,lpMenuWidths)
+#define IShellBrowser_SetMenuSB(This,hmenuShared,holemenuRes,hwndActiveObject) (This)->lpVtbl->SetMenuSB(This,hmenuShared,holemenuRes,hwndActiveObject)
+#define IShellBrowser_RemoveMenusSB(This,hmenuShared) (This)->lpVtbl->RemoveMenusSB(This,hmenuShared)
+#define IShellBrowser_SetStatusTextSB(This,pszStatusText) (This)->lpVtbl->SetStatusTextSB(This,pszStatusText)
+#define IShellBrowser_EnableModelessSB(This,fEnable) (This)->lpVtbl->EnableModelessSB(This,fEnable)
+#define IShellBrowser_TranslateAcceleratorSB(This,pmsg,wID) (This)->lpVtbl->TranslateAcceleratorSB(This,pmsg,wID)
+#define IShellBrowser_BrowseObject(This,pidl,wFlags) (This)->lpVtbl->BrowseObject(This,pidl,wFlags)
+#define IShellBrowser_GetViewStateStream(This,grfMode,ppStrm) (This)->lpVtbl->GetViewStateStream(This,grfMode,ppStrm)
+#define IShellBrowser_GetControlWindow(This,id,phwnd) (This)->lpVtbl->GetControlWindow(This,id,phwnd)
+#define IShellBrowser_SendControlMsg(This,id,uMsg,wParam,lParam,pret) (This)->lpVtbl->SendControlMsg(This,id,uMsg,wParam,lParam,pret)
+#define IShellBrowser_QueryActiveShellView(This,ppshv) (This)->lpVtbl->QueryActiveShellView(This,ppshv)
+#define IShellBrowser_OnViewWindowActive(This,pshv) (This)->lpVtbl->OnViewWindowActive(This,pshv)
+#define IShellBrowser_SetToolbarItems(This,lpButtons,nButtons,uFlags) (This)->lpVtbl->SetToolbarItems(This,lpButtons,nButtons,uFlags)
+#endif
+#endif
+  HRESULT WINAPI IShellBrowser_InsertMenusSB_Proxy(IShellBrowser *This,HMENU hmenuShared,LPOLEMENUGROUPWIDTHS lpMenuWidths);
+  void __RPC_STUB IShellBrowser_InsertMenusSB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellBrowser_SetMenuSB_Proxy(IShellBrowser *This,HMENU hmenuShared,HOLEMENU holemenuRes,HWND hwndActiveObject);
+  void __RPC_STUB IShellBrowser_SetMenuSB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellBrowser_RemoveMenusSB_Proxy(IShellBrowser *This,HMENU hmenuShared);
+  void __RPC_STUB IShellBrowser_RemoveMenusSB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellBrowser_SetStatusTextSB_Proxy(IShellBrowser *This,LPCOLESTR pszStatusText);
+  void __RPC_STUB IShellBrowser_SetStatusTextSB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellBrowser_EnableModelessSB_Proxy(IShellBrowser *This,WINBOOL fEnable);
+  void __RPC_STUB IShellBrowser_EnableModelessSB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellBrowser_TranslateAcceleratorSB_Proxy(IShellBrowser *This,MSG *pmsg,WORD wID);
+  void __RPC_STUB IShellBrowser_TranslateAcceleratorSB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellBrowser_BrowseObject_Proxy(IShellBrowser *This,LPCITEMIDLIST pidl,UINT wFlags);
+  void __RPC_STUB IShellBrowser_BrowseObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellBrowser_GetViewStateStream_Proxy(IShellBrowser *This,DWORD grfMode,IStream **ppStrm);
+  void __RPC_STUB IShellBrowser_GetViewStateStream_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellBrowser_GetControlWindow_Proxy(IShellBrowser *This,UINT id,HWND *phwnd);
+  void __RPC_STUB IShellBrowser_GetControlWindow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellBrowser_SendControlMsg_Proxy(IShellBrowser *This,UINT id,UINT uMsg,WPARAM wParam,LPARAM lParam,LRESULT *pret);
+  void __RPC_STUB IShellBrowser_SendControlMsg_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellBrowser_QueryActiveShellView_Proxy(IShellBrowser *This,IShellView **ppshv);
+  void __RPC_STUB IShellBrowser_QueryActiveShellView_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellBrowser_OnViewWindowActive_Proxy(IShellBrowser *This,IShellView *pshv);
+  void __RPC_STUB IShellBrowser_OnViewWindowActive_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellBrowser_SetToolbarItems_Proxy(IShellBrowser *This,LPTBBUTTONSB lpButtons,UINT nButtons,UINT uFlags);
+  void __RPC_STUB IShellBrowser_SetToolbarItems_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  typedef IShellBrowser *LPSHELLBROWSER;
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0208_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0208_v0_0_s_ifspec;
+#ifndef __IProfferService_INTERFACE_DEFINED__
+#define __IProfferService_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IProfferService;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IProfferService : public IUnknown {
+  public:
+    virtual HRESULT WINAPI ProfferService(REFGUID rguidService,IServiceProvider *psp,DWORD *pdwCookie) = 0;
+    virtual HRESULT WINAPI RevokeService(DWORD dwCookie) = 0;
+  };
+#else
+  typedef struct IProfferServiceVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IProfferService *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IProfferService *This);
+      ULONG (WINAPI *Release)(IProfferService *This);
+      HRESULT (WINAPI *ProfferService)(IProfferService *This,REFGUID rguidService,IServiceProvider *psp,DWORD *pdwCookie);
+      HRESULT (WINAPI *RevokeService)(IProfferService *This,DWORD dwCookie);
+    END_INTERFACE
+  } IProfferServiceVtbl;
+  struct IProfferService {
+    CONST_VTBL struct IProfferServiceVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IProfferService_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IProfferService_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IProfferService_Release(This) (This)->lpVtbl->Release(This)
+#define IProfferService_ProfferService(This,rguidService,psp,pdwCookie) (This)->lpVtbl->ProfferService(This,rguidService,psp,pdwCookie)
+#define IProfferService_RevokeService(This,dwCookie) (This)->lpVtbl->RevokeService(This,dwCookie)
+#endif
+#endif
+  HRESULT WINAPI IProfferService_ProfferService_Proxy(IProfferService *This,REFGUID rguidService,IServiceProvider *psp,DWORD *pdwCookie);
+  void __RPC_STUB IProfferService_ProfferService_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IProfferService_RevokeService_Proxy(IProfferService *This,DWORD dwCookie);
+  void __RPC_STUB IProfferService_RevokeService_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#define SID_SProfferService IID_IProfferService
+  typedef enum __MIDL___MIDL_itf_shobjidl_0209_0001 {
+    PUIFNF_DEFAULT = 0,PUIFNF_MNEMONIC = 0x1
+  } PROPERTYUI_NAME_FLAGS;
+
+  typedef enum __MIDL___MIDL_itf_shobjidl_0209_0002 {
+    PUIF_DEFAULT = 0,PUIF_RIGHTALIGN = 0x1,PUIF_NOLABELININFOTIP = 0x2
+  } PROPERTYUI_FLAGS;
+
+  typedef enum __MIDL___MIDL_itf_shobjidl_0209_0003 {
+    PUIFFDF_DEFAULT = 0,PUIFFDF_RIGHTTOLEFT = 0x1,PUIFFDF_SHORTFORMAT = 0x2,PUIFFDF_NOTIME = 0x4,PUIFFDF_FRIENDLYDATE = 0x8,PUIFFDF_NOUNITS = 0x10
+  } PROPERTYUI_FORMAT_FLAGS;
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0209_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0209_v0_0_s_ifspec;
+#ifndef __IPropertyUI_INTERFACE_DEFINED__
+#define __IPropertyUI_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IPropertyUI;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IPropertyUI : public IUnknown {
+  public:
+    virtual HRESULT WINAPI ParsePropertyName(LPCWSTR pszName,FMTID *pfmtid,PROPID *ppid,ULONG *pchEaten) = 0;
+    virtual HRESULT WINAPI GetCannonicalName(REFFMTID fmtid,PROPID pid,LPWSTR pwszText,DWORD cchText) = 0;
+    virtual HRESULT WINAPI GetDisplayName(REFFMTID fmtid,PROPID pid,PROPERTYUI_NAME_FLAGS flags,LPWSTR pwszText,DWORD cchText) = 0;
+    virtual HRESULT WINAPI GetPropertyDescription(REFFMTID fmtid,PROPID pid,LPWSTR pwszText,DWORD cchText) = 0;
+    virtual HRESULT WINAPI GetDefaultWidth(REFFMTID fmtid,PROPID pid,ULONG *pcxChars) = 0;
+    virtual HRESULT WINAPI GetFlags(REFFMTID fmtid,PROPID pid,PROPERTYUI_FLAGS *pFlags) = 0;
+    virtual HRESULT WINAPI FormatForDisplay(REFFMTID fmtid,PROPID pid,const PROPVARIANT *pvar,PROPERTYUI_FORMAT_FLAGS flags,LPWSTR pwszText,DWORD cchText) = 0;
+    virtual HRESULT WINAPI GetHelpInfo(REFFMTID fmtid,PROPID pid,LPWSTR pwszHelpFile,DWORD cch,UINT *puHelpID) = 0;
+  };
+#else
+  typedef struct IPropertyUIVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IPropertyUI *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IPropertyUI *This);
+      ULONG (WINAPI *Release)(IPropertyUI *This);
+      HRESULT (WINAPI *ParsePropertyName)(IPropertyUI *This,LPCWSTR pszName,FMTID *pfmtid,PROPID *ppid,ULONG *pchEaten);
+      HRESULT (WINAPI *GetCannonicalName)(IPropertyUI *This,REFFMTID fmtid,PROPID pid,LPWSTR pwszText,DWORD cchText);
+      HRESULT (WINAPI *GetDisplayName)(IPropertyUI *This,REFFMTID fmtid,PROPID pid,PROPERTYUI_NAME_FLAGS flags,LPWSTR pwszText,DWORD cchText);
+      HRESULT (WINAPI *GetPropertyDescription)(IPropertyUI *This,REFFMTID fmtid,PROPID pid,LPWSTR pwszText,DWORD cchText);
+      HRESULT (WINAPI *GetDefaultWidth)(IPropertyUI *This,REFFMTID fmtid,PROPID pid,ULONG *pcxChars);
+      HRESULT (WINAPI *GetFlags)(IPropertyUI *This,REFFMTID fmtid,PROPID pid,PROPERTYUI_FLAGS *pFlags);
+      HRESULT (WINAPI *FormatForDisplay)(IPropertyUI *This,REFFMTID fmtid,PROPID pid,const PROPVARIANT *pvar,PROPERTYUI_FORMAT_FLAGS flags,LPWSTR pwszText,DWORD cchText);
+      HRESULT (WINAPI *GetHelpInfo)(IPropertyUI *This,REFFMTID fmtid,PROPID pid,LPWSTR pwszHelpFile,DWORD cch,UINT *puHelpID);
+    END_INTERFACE
+  } IPropertyUIVtbl;
+  struct IPropertyUI {
+    CONST_VTBL struct IPropertyUIVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IPropertyUI_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPropertyUI_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPropertyUI_Release(This) (This)->lpVtbl->Release(This)
+#define IPropertyUI_ParsePropertyName(This,pszName,pfmtid,ppid,pchEaten) (This)->lpVtbl->ParsePropertyName(This,pszName,pfmtid,ppid,pchEaten)
+#define IPropertyUI_GetCannonicalName(This,fmtid,pid,pwszText,cchText) (This)->lpVtbl->GetCannonicalName(This,fmtid,pid,pwszText,cchText)
+#define IPropertyUI_GetDisplayName(This,fmtid,pid,flags,pwszText,cchText) (This)->lpVtbl->GetDisplayName(This,fmtid,pid,flags,pwszText,cchText)
+#define IPropertyUI_GetPropertyDescription(This,fmtid,pid,pwszText,cchText) (This)->lpVtbl->GetPropertyDescription(This,fmtid,pid,pwszText,cchText)
+#define IPropertyUI_GetDefaultWidth(This,fmtid,pid,pcxChars) (This)->lpVtbl->GetDefaultWidth(This,fmtid,pid,pcxChars)
+#define IPropertyUI_GetFlags(This,fmtid,pid,pFlags) (This)->lpVtbl->GetFlags(This,fmtid,pid,pFlags)
+#define IPropertyUI_FormatForDisplay(This,fmtid,pid,pvar,flags,pwszText,cchText) (This)->lpVtbl->FormatForDisplay(This,fmtid,pid,pvar,flags,pwszText,cchText)
+#define IPropertyUI_GetHelpInfo(This,fmtid,pid,pwszHelpFile,cch,puHelpID) (This)->lpVtbl->GetHelpInfo(This,fmtid,pid,pwszHelpFile,cch,puHelpID)
+#endif
+#endif
+  HRESULT WINAPI IPropertyUI_ParsePropertyName_Proxy(IPropertyUI *This,LPCWSTR pszName,FMTID *pfmtid,PROPID *ppid,ULONG *pchEaten);
+  void __RPC_STUB IPropertyUI_ParsePropertyName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IPropertyUI_GetCannonicalName_Proxy(IPropertyUI *This,REFFMTID fmtid,PROPID pid,LPWSTR pwszText,DWORD cchText);
+  void __RPC_STUB IPropertyUI_GetCannonicalName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IPropertyUI_GetDisplayName_Proxy(IPropertyUI *This,REFFMTID fmtid,PROPID pid,PROPERTYUI_NAME_FLAGS flags,LPWSTR pwszText,DWORD cchText);
+  void __RPC_STUB IPropertyUI_GetDisplayName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IPropertyUI_GetPropertyDescription_Proxy(IPropertyUI *This,REFFMTID fmtid,PROPID pid,LPWSTR pwszText,DWORD cchText);
+  void __RPC_STUB IPropertyUI_GetPropertyDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IPropertyUI_GetDefaultWidth_Proxy(IPropertyUI *This,REFFMTID fmtid,PROPID pid,ULONG *pcxChars);
+  void __RPC_STUB IPropertyUI_GetDefaultWidth_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IPropertyUI_GetFlags_Proxy(IPropertyUI *This,REFFMTID fmtid,PROPID pid,PROPERTYUI_FLAGS *pFlags);
+  void __RPC_STUB IPropertyUI_GetFlags_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IPropertyUI_FormatForDisplay_Proxy(IPropertyUI *This,REFFMTID fmtid,PROPID pid,const PROPVARIANT *pvar,PROPERTYUI_FORMAT_FLAGS flags,LPWSTR pwszText,DWORD cchText);
+  void __RPC_STUB IPropertyUI_FormatForDisplay_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IPropertyUI_GetHelpInfo_Proxy(IPropertyUI *This,REFFMTID fmtid,PROPID pid,LPWSTR pwszHelpFile,DWORD cch,UINT *puHelpID);
+  void __RPC_STUB IPropertyUI_GetHelpInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#if (0x501 >= 0x0500)
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0210_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0210_v0_0_s_ifspec;
+#ifndef __ICategoryProvider_INTERFACE_DEFINED__
+#define __ICategoryProvider_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_ICategoryProvider;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct ICategoryProvider : public IUnknown {
+  public:
+    virtual HRESULT WINAPI CanCategorizeOnSCID(SHCOLUMNID *pscid) = 0;
+    virtual HRESULT WINAPI GetDefaultCategory(GUID *pguid,SHCOLUMNID *pscid) = 0;
+    virtual HRESULT WINAPI GetCategoryForSCID(SHCOLUMNID *pscid,GUID *pguid) = 0;
+    virtual HRESULT WINAPI EnumCategories(IEnumGUID **penum) = 0;
+    virtual HRESULT WINAPI GetCategoryName(GUID *pguid,LPWSTR pszName,UINT cch) = 0;
+    virtual HRESULT WINAPI CreateCategory(GUID *pguid,REFIID riid,void **ppv) = 0;
+  };
+#else
+  typedef struct ICategoryProviderVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(ICategoryProvider *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(ICategoryProvider *This);
+      ULONG (WINAPI *Release)(ICategoryProvider *This);
+      HRESULT (WINAPI *CanCategorizeOnSCID)(ICategoryProvider *This,SHCOLUMNID *pscid);
+      HRESULT (WINAPI *GetDefaultCategory)(ICategoryProvider *This,GUID *pguid,SHCOLUMNID *pscid);
+      HRESULT (WINAPI *GetCategoryForSCID)(ICategoryProvider *This,SHCOLUMNID *pscid,GUID *pguid);
+      HRESULT (WINAPI *EnumCategories)(ICategoryProvider *This,IEnumGUID **penum);
+      HRESULT (WINAPI *GetCategoryName)(ICategoryProvider *This,GUID *pguid,LPWSTR pszName,UINT cch);
+      HRESULT (WINAPI *CreateCategory)(ICategoryProvider *This,GUID *pguid,REFIID riid,void **ppv);
+    END_INTERFACE
+  } ICategoryProviderVtbl;
+  struct ICategoryProvider {
+    CONST_VTBL struct ICategoryProviderVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define ICategoryProvider_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ICategoryProvider_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ICategoryProvider_Release(This) (This)->lpVtbl->Release(This)
+#define ICategoryProvider_CanCategorizeOnSCID(This,pscid) (This)->lpVtbl->CanCategorizeOnSCID(This,pscid)
+#define ICategoryProvider_GetDefaultCategory(This,pguid,pscid) (This)->lpVtbl->GetDefaultCategory(This,pguid,pscid)
+#define ICategoryProvider_GetCategoryForSCID(This,pscid,pguid) (This)->lpVtbl->GetCategoryForSCID(This,pscid,pguid)
+#define ICategoryProvider_EnumCategories(This,penum) (This)->lpVtbl->EnumCategories(This,penum)
+#define ICategoryProvider_GetCategoryName(This,pguid,pszName,cch) (This)->lpVtbl->GetCategoryName(This,pguid,pszName,cch)
+#define ICategoryProvider_CreateCategory(This,pguid,riid,ppv) (This)->lpVtbl->CreateCategory(This,pguid,riid,ppv)
+#endif
+#endif
+  HRESULT WINAPI ICategoryProvider_CanCategorizeOnSCID_Proxy(ICategoryProvider *This,SHCOLUMNID *pscid);
+  void __RPC_STUB ICategoryProvider_CanCategorizeOnSCID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ICategoryProvider_GetDefaultCategory_Proxy(ICategoryProvider *This,GUID *pguid,SHCOLUMNID *pscid);
+  void __RPC_STUB ICategoryProvider_GetDefaultCategory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ICategoryProvider_GetCategoryForSCID_Proxy(ICategoryProvider *This,SHCOLUMNID *pscid,GUID *pguid);
+  void __RPC_STUB ICategoryProvider_GetCategoryForSCID_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ICategoryProvider_EnumCategories_Proxy(ICategoryProvider *This,IEnumGUID **penum);
+  void __RPC_STUB ICategoryProvider_EnumCategories_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ICategoryProvider_GetCategoryName_Proxy(ICategoryProvider *This,GUID *pguid,LPWSTR pszName,UINT cch);
+  void __RPC_STUB ICategoryProvider_GetCategoryName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ICategoryProvider_CreateCategory_Proxy(ICategoryProvider *This,GUID *pguid,REFIID riid,void **ppv);
+  void __RPC_STUB ICategoryProvider_CreateCategory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  typedef enum __MIDL___MIDL_itf_shobjidl_0211_0001 {
+    CATINFO_NORMAL = 0,CATINFO_COLLAPSED = 0x1,CATINFO_HIDDEN = 0x2
+  } CATEGORYINFO_FLAGS;
+
+  typedef enum __MIDL___MIDL_itf_shobjidl_0211_0002 {
+    CATSORT_DEFAULT = 0,CATSORT_NAME = 0x1
+  } CATSORT_FLAGS;
+
+  typedef struct __MIDL___MIDL_itf_shobjidl_0211_0003 {
+    CATEGORYINFO_FLAGS cif;
+    WCHAR wszName[260];
+  } CATEGORY_INFO;
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0211_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0211_v0_0_s_ifspec;
+#ifndef __ICategorizer_INTERFACE_DEFINED__
+#define __ICategorizer_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_ICategorizer;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct ICategorizer : public IUnknown {
+  public:
+    virtual HRESULT WINAPI GetDescription(LPWSTR pszDesc,UINT cch) = 0;
+    virtual HRESULT WINAPI GetCategory(UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgCategoryIds) = 0;
+    virtual HRESULT WINAPI GetCategoryInfo(DWORD dwCategoryId,CATEGORY_INFO *pci) = 0;
+    virtual HRESULT WINAPI CompareCategory(CATSORT_FLAGS csfFlags,DWORD dwCategoryId1,DWORD dwCategoryId2) = 0;
+  };
+#else
+  typedef struct ICategorizerVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(ICategorizer *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(ICategorizer *This);
+      ULONG (WINAPI *Release)(ICategorizer *This);
+      HRESULT (WINAPI *GetDescription)(ICategorizer *This,LPWSTR pszDesc,UINT cch);
+      HRESULT (WINAPI *GetCategory)(ICategorizer *This,UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgCategoryIds);
+      HRESULT (WINAPI *GetCategoryInfo)(ICategorizer *This,DWORD dwCategoryId,CATEGORY_INFO *pci);
+      HRESULT (WINAPI *CompareCategory)(ICategorizer *This,CATSORT_FLAGS csfFlags,DWORD dwCategoryId1,DWORD dwCategoryId2);
+    END_INTERFACE
+  } ICategorizerVtbl;
+  struct ICategorizer {
+    CONST_VTBL struct ICategorizerVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define ICategorizer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ICategorizer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ICategorizer_Release(This) (This)->lpVtbl->Release(This)
+#define ICategorizer_GetDescription(This,pszDesc,cch) (This)->lpVtbl->GetDescription(This,pszDesc,cch)
+#define ICategorizer_GetCategory(This,cidl,apidl,rgCategoryIds) (This)->lpVtbl->GetCategory(This,cidl,apidl,rgCategoryIds)
+#define ICategorizer_GetCategoryInfo(This,dwCategoryId,pci) (This)->lpVtbl->GetCategoryInfo(This,dwCategoryId,pci)
+#define ICategorizer_CompareCategory(This,csfFlags,dwCategoryId1,dwCategoryId2) (This)->lpVtbl->CompareCategory(This,csfFlags,dwCategoryId1,dwCategoryId2)
+#endif
+#endif
+  HRESULT WINAPI ICategorizer_GetDescription_Proxy(ICategorizer *This,LPWSTR pszDesc,UINT cch);
+  void __RPC_STUB ICategorizer_GetDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ICategorizer_GetCategory_Proxy(ICategorizer *This,UINT cidl,LPCITEMIDLIST *apidl,DWORD *rgCategoryIds);
+  void __RPC_STUB ICategorizer_GetCategory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ICategorizer_GetCategoryInfo_Proxy(ICategorizer *This,DWORD dwCategoryId,CATEGORY_INFO *pci);
+  void __RPC_STUB ICategorizer_GetCategoryInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ICategorizer_CompareCategory_Proxy(ICategorizer *This,CATSORT_FLAGS csfFlags,DWORD dwCategoryId1,DWORD dwCategoryId2);
+  void __RPC_STUB ICategorizer_CompareCategory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+#endif
+
+#define IShellLink __MINGW_NAME_AW(IShellLink)
+
+  typedef enum __MIDL___MIDL_itf_shobjidl_0212_0001 {
+    SLR_NO_UI = 0x1,SLR_ANY_MATCH = 0x2,SLR_UPDATE = 0x4,SLR_NOUPDATE = 0x8,SLR_NOSEARCH = 0x10,SLR_NOTRACK = 0x20,SLR_NOLINKINFO = 0x40,
+    SLR_INVOKE_MSI = 0x80,SLR_NO_UI_WITH_MSG_PUMP = 0x101
+  } SLR_FLAGS;
+
+  typedef enum __MIDL___MIDL_itf_shobjidl_0212_0002 {
+    SLGP_SHORTPATH = 0x1,SLGP_UNCPRIORITY = 0x2,SLGP_RAWPATH = 0x4
+  } SLGP_FLAGS;
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0212_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0212_v0_0_s_ifspec;
+#ifndef __IShellLinkA_INTERFACE_DEFINED__
+#define __IShellLinkA_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IShellLinkA;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IShellLinkA : public IUnknown {
+  public:
+    virtual HRESULT WINAPI GetPath(LPSTR pszFile,int cch,WIN32_FIND_DATAA *pfd,DWORD fFlags) = 0;
+    virtual HRESULT WINAPI GetIDList(LPITEMIDLIST *ppidl) = 0;
+    virtual HRESULT WINAPI SetIDList(LPCITEMIDLIST pidl) = 0;
+    virtual HRESULT WINAPI GetDescription(LPSTR pszName,int cch) = 0;
+    virtual HRESULT WINAPI SetDescription(LPCSTR pszName) = 0;
+    virtual HRESULT WINAPI GetWorkingDirectory(LPSTR pszDir,int cch) = 0;
+    virtual HRESULT WINAPI SetWorkingDirectory(LPCSTR pszDir) = 0;
+    virtual HRESULT WINAPI GetArguments(LPSTR pszArgs,int cch) = 0;
+    virtual HRESULT WINAPI SetArguments(LPCSTR pszArgs) = 0;
+    virtual HRESULT WINAPI GetHotkey(WORD *pwHotkey) = 0;
+    virtual HRESULT WINAPI SetHotkey(WORD wHotkey) = 0;
+    virtual HRESULT WINAPI GetShowCmd(int *piShowCmd) = 0;
+    virtual HRESULT WINAPI SetShowCmd(int iShowCmd) = 0;
+    virtual HRESULT WINAPI GetIconLocation(LPSTR pszIconPath,int cch,int *piIcon) = 0;
+    virtual HRESULT WINAPI SetIconLocation(LPCSTR pszIconPath,int iIcon) = 0;
+    virtual HRESULT WINAPI SetRelativePath(LPCSTR pszPathRel,DWORD dwReserved) = 0;
+    virtual HRESULT WINAPI Resolve(HWND hwnd,DWORD fFlags) = 0;
+    virtual HRESULT WINAPI SetPath(LPCSTR pszFile) = 0;
+  };
+#else
+  typedef struct IShellLinkAVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IShellLinkA *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IShellLinkA *This);
+      ULONG (WINAPI *Release)(IShellLinkA *This);
+      HRESULT (WINAPI *GetPath)(IShellLinkA *This,LPSTR pszFile,int cch,WIN32_FIND_DATAA *pfd,DWORD fFlags);
+      HRESULT (WINAPI *GetIDList)(IShellLinkA *This,LPITEMIDLIST *ppidl);
+      HRESULT (WINAPI *SetIDList)(IShellLinkA *This,LPCITEMIDLIST pidl);
+      HRESULT (WINAPI *GetDescription)(IShellLinkA *This,LPSTR pszName,int cch);
+      HRESULT (WINAPI *SetDescription)(IShellLinkA *This,LPCSTR pszName);
+      HRESULT (WINAPI *GetWorkingDirectory)(IShellLinkA *This,LPSTR pszDir,int cch);
+      HRESULT (WINAPI *SetWorkingDirectory)(IShellLinkA *This,LPCSTR pszDir);
+      HRESULT (WINAPI *GetArguments)(IShellLinkA *This,LPSTR pszArgs,int cch);
+      HRESULT (WINAPI *SetArguments)(IShellLinkA *This,LPCSTR pszArgs);
+      HRESULT (WINAPI *GetHotkey)(IShellLinkA *This,WORD *pwHotkey);
+      HRESULT (WINAPI *SetHotkey)(IShellLinkA *This,WORD wHotkey);
+      HRESULT (WINAPI *GetShowCmd)(IShellLinkA *This,int *piShowCmd);
+      HRESULT (WINAPI *SetShowCmd)(IShellLinkA *This,int iShowCmd);
+      HRESULT (WINAPI *GetIconLocation)(IShellLinkA *This,LPSTR pszIconPath,int cch,int *piIcon);
+      HRESULT (WINAPI *SetIconLocation)(IShellLinkA *This,LPCSTR pszIconPath,int iIcon);
+      HRESULT (WINAPI *SetRelativePath)(IShellLinkA *This,LPCSTR pszPathRel,DWORD dwReserved);
+      HRESULT (WINAPI *Resolve)(IShellLinkA *This,HWND hwnd,DWORD fFlags);
+      HRESULT (WINAPI *SetPath)(IShellLinkA *This,LPCSTR pszFile);
+    END_INTERFACE
+  } IShellLinkAVtbl;
+  struct IShellLinkA {
+    CONST_VTBL struct IShellLinkAVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IShellLinkA_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellLinkA_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellLinkA_Release(This) (This)->lpVtbl->Release(This)
+#define IShellLinkA_GetPath(This,pszFile,cch,pfd,fFlags) (This)->lpVtbl->GetPath(This,pszFile,cch,pfd,fFlags)
+#define IShellLinkA_GetIDList(This,ppidl) (This)->lpVtbl->GetIDList(This,ppidl)
+#define IShellLinkA_SetIDList(This,pidl) (This)->lpVtbl->SetIDList(This,pidl)
+#define IShellLinkA_GetDescription(This,pszName,cch) (This)->lpVtbl->GetDescription(This,pszName,cch)
+#define IShellLinkA_SetDescription(This,pszName) (This)->lpVtbl->SetDescription(This,pszName)
+#define IShellLinkA_GetWorkingDirectory(This,pszDir,cch) (This)->lpVtbl->GetWorkingDirectory(This,pszDir,cch)
+#define IShellLinkA_SetWorkingDirectory(This,pszDir) (This)->lpVtbl->SetWorkingDirectory(This,pszDir)
+#define IShellLinkA_GetArguments(This,pszArgs,cch) (This)->lpVtbl->GetArguments(This,pszArgs,cch)
+#define IShellLinkA_SetArguments(This,pszArgs) (This)->lpVtbl->SetArguments(This,pszArgs)
+#define IShellLinkA_GetHotkey(This,pwHotkey) (This)->lpVtbl->GetHotkey(This,pwHotkey)
+#define IShellLinkA_SetHotkey(This,wHotkey) (This)->lpVtbl->SetHotkey(This,wHotkey)
+#define IShellLinkA_GetShowCmd(This,piShowCmd) (This)->lpVtbl->GetShowCmd(This,piShowCmd)
+#define IShellLinkA_SetShowCmd(This,iShowCmd) (This)->lpVtbl->SetShowCmd(This,iShowCmd)
+#define IShellLinkA_GetIconLocation(This,pszIconPath,cch,piIcon) (This)->lpVtbl->GetIconLocation(This,pszIconPath,cch,piIcon)
+#define IShellLinkA_SetIconLocation(This,pszIconPath,iIcon) (This)->lpVtbl->SetIconLocation(This,pszIconPath,iIcon)
+#define IShellLinkA_SetRelativePath(This,pszPathRel,dwReserved) (This)->lpVtbl->SetRelativePath(This,pszPathRel,dwReserved)
+#define IShellLinkA_Resolve(This,hwnd,fFlags) (This)->lpVtbl->Resolve(This,hwnd,fFlags)
+#define IShellLinkA_SetPath(This,pszFile) (This)->lpVtbl->SetPath(This,pszFile)
+#endif
+#endif
+  HRESULT WINAPI IShellLinkA_GetPath_Proxy(IShellLinkA *This,LPSTR pszFile,int cch,WIN32_FIND_DATAA *pfd,DWORD fFlags);
+  void __RPC_STUB IShellLinkA_GetPath_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_GetIDList_Proxy(IShellLinkA *This,LPITEMIDLIST *ppidl);
+  void __RPC_STUB IShellLinkA_GetIDList_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_SetIDList_Proxy(IShellLinkA *This,LPCITEMIDLIST pidl);
+  void __RPC_STUB IShellLinkA_SetIDList_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_GetDescription_Proxy(IShellLinkA *This,LPSTR pszName,int cch);
+  void __RPC_STUB IShellLinkA_GetDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_SetDescription_Proxy(IShellLinkA *This,LPCSTR pszName);
+  void __RPC_STUB IShellLinkA_SetDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_GetWorkingDirectory_Proxy(IShellLinkA *This,LPSTR pszDir,int cch);
+  void __RPC_STUB IShellLinkA_GetWorkingDirectory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_SetWorkingDirectory_Proxy(IShellLinkA *This,LPCSTR pszDir);
+  void __RPC_STUB IShellLinkA_SetWorkingDirectory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_GetArguments_Proxy(IShellLinkA *This,LPSTR pszArgs,int cch);
+  void __RPC_STUB IShellLinkA_GetArguments_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_SetArguments_Proxy(IShellLinkA *This,LPCSTR pszArgs);
+  void __RPC_STUB IShellLinkA_SetArguments_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_GetHotkey_Proxy(IShellLinkA *This,WORD *pwHotkey);
+  void __RPC_STUB IShellLinkA_GetHotkey_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_SetHotkey_Proxy(IShellLinkA *This,WORD wHotkey);
+  void __RPC_STUB IShellLinkA_SetHotkey_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_GetShowCmd_Proxy(IShellLinkA *This,int *piShowCmd);
+  void __RPC_STUB IShellLinkA_GetShowCmd_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_SetShowCmd_Proxy(IShellLinkA *This,int iShowCmd);
+  void __RPC_STUB IShellLinkA_SetShowCmd_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_GetIconLocation_Proxy(IShellLinkA *This,LPSTR pszIconPath,int cch,int *piIcon);
+  void __RPC_STUB IShellLinkA_GetIconLocation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_SetIconLocation_Proxy(IShellLinkA *This,LPCSTR pszIconPath,int iIcon);
+  void __RPC_STUB IShellLinkA_SetIconLocation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_SetRelativePath_Proxy(IShellLinkA *This,LPCSTR pszPathRel,DWORD dwReserved);
+  void __RPC_STUB IShellLinkA_SetRelativePath_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_Resolve_Proxy(IShellLinkA *This,HWND hwnd,DWORD fFlags);
+  void __RPC_STUB IShellLinkA_Resolve_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkA_SetPath_Proxy(IShellLinkA *This,LPCSTR pszFile);
+  void __RPC_STUB IShellLinkA_SetPath_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IShellLinkW_INTERFACE_DEFINED__
+#define __IShellLinkW_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IShellLinkW;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IShellLinkW : public IUnknown {
+  public:
+    virtual HRESULT WINAPI GetPath(LPWSTR pszFile,int cch,WIN32_FIND_DATAW *pfd,DWORD fFlags) = 0;
+    virtual HRESULT WINAPI GetIDList(LPITEMIDLIST *ppidl) = 0;
+    virtual HRESULT WINAPI SetIDList(LPCITEMIDLIST pidl) = 0;
+    virtual HRESULT WINAPI GetDescription(LPWSTR pszName,int cch) = 0;
+    virtual HRESULT WINAPI SetDescription(LPCWSTR pszName) = 0;
+    virtual HRESULT WINAPI GetWorkingDirectory(LPWSTR pszDir,int cch) = 0;
+    virtual HRESULT WINAPI SetWorkingDirectory(LPCWSTR pszDir) = 0;
+    virtual HRESULT WINAPI GetArguments(LPWSTR pszArgs,int cch) = 0;
+    virtual HRESULT WINAPI SetArguments(LPCWSTR pszArgs) = 0;
+    virtual HRESULT WINAPI GetHotkey(WORD *pwHotkey) = 0;
+    virtual HRESULT WINAPI SetHotkey(WORD wHotkey) = 0;
+    virtual HRESULT WINAPI GetShowCmd(int *piShowCmd) = 0;
+    virtual HRESULT WINAPI SetShowCmd(int iShowCmd) = 0;
+    virtual HRESULT WINAPI GetIconLocation(LPWSTR pszIconPath,int cch,int *piIcon) = 0;
+    virtual HRESULT WINAPI SetIconLocation(LPCWSTR pszIconPath,int iIcon) = 0;
+    virtual HRESULT WINAPI SetRelativePath(LPCWSTR pszPathRel,DWORD dwReserved) = 0;
+    virtual HRESULT WINAPI Resolve(HWND hwnd,DWORD fFlags) = 0;
+    virtual HRESULT WINAPI SetPath(LPCWSTR pszFile) = 0;
+  };
+#else
+  typedef struct IShellLinkWVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IShellLinkW *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IShellLinkW *This);
+      ULONG (WINAPI *Release)(IShellLinkW *This);
+      HRESULT (WINAPI *GetPath)(IShellLinkW *This,LPWSTR pszFile,int cch,WIN32_FIND_DATAW *pfd,DWORD fFlags);
+      HRESULT (WINAPI *GetIDList)(IShellLinkW *This,LPITEMIDLIST *ppidl);
+      HRESULT (WINAPI *SetIDList)(IShellLinkW *This,LPCITEMIDLIST pidl);
+      HRESULT (WINAPI *GetDescription)(IShellLinkW *This,LPWSTR pszName,int cch);
+      HRESULT (WINAPI *SetDescription)(IShellLinkW *This,LPCWSTR pszName);
+      HRESULT (WINAPI *GetWorkingDirectory)(IShellLinkW *This,LPWSTR pszDir,int cch);
+      HRESULT (WINAPI *SetWorkingDirectory)(IShellLinkW *This,LPCWSTR pszDir);
+      HRESULT (WINAPI *GetArguments)(IShellLinkW *This,LPWSTR pszArgs,int cch);
+      HRESULT (WINAPI *SetArguments)(IShellLinkW *This,LPCWSTR pszArgs);
+      HRESULT (WINAPI *GetHotkey)(IShellLinkW *This,WORD *pwHotkey);
+      HRESULT (WINAPI *SetHotkey)(IShellLinkW *This,WORD wHotkey);
+      HRESULT (WINAPI *GetShowCmd)(IShellLinkW *This,int *piShowCmd);
+      HRESULT (WINAPI *SetShowCmd)(IShellLinkW *This,int iShowCmd);
+      HRESULT (WINAPI *GetIconLocation)(IShellLinkW *This,LPWSTR pszIconPath,int cch,int *piIcon);
+      HRESULT (WINAPI *SetIconLocation)(IShellLinkW *This,LPCWSTR pszIconPath,int iIcon);
+      HRESULT (WINAPI *SetRelativePath)(IShellLinkW *This,LPCWSTR pszPathRel,DWORD dwReserved);
+      HRESULT (WINAPI *Resolve)(IShellLinkW *This,HWND hwnd,DWORD fFlags);
+      HRESULT (WINAPI *SetPath)(IShellLinkW *This,LPCWSTR pszFile);
+    END_INTERFACE
+  } IShellLinkWVtbl;
+  struct IShellLinkW {
+    CONST_VTBL struct IShellLinkWVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IShellLinkW_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellLinkW_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellLinkW_Release(This) (This)->lpVtbl->Release(This)
+#define IShellLinkW_GetPath(This,pszFile,cch,pfd,fFlags) (This)->lpVtbl->GetPath(This,pszFile,cch,pfd,fFlags)
+#define IShellLinkW_GetIDList(This,ppidl) (This)->lpVtbl->GetIDList(This,ppidl)
+#define IShellLinkW_SetIDList(This,pidl) (This)->lpVtbl->SetIDList(This,pidl)
+#define IShellLinkW_GetDescription(This,pszName,cch) (This)->lpVtbl->GetDescription(This,pszName,cch)
+#define IShellLinkW_SetDescription(This,pszName) (This)->lpVtbl->SetDescription(This,pszName)
+#define IShellLinkW_GetWorkingDirectory(This,pszDir,cch) (This)->lpVtbl->GetWorkingDirectory(This,pszDir,cch)
+#define IShellLinkW_SetWorkingDirectory(This,pszDir) (This)->lpVtbl->SetWorkingDirectory(This,pszDir)
+#define IShellLinkW_GetArguments(This,pszArgs,cch) (This)->lpVtbl->GetArguments(This,pszArgs,cch)
+#define IShellLinkW_SetArguments(This,pszArgs) (This)->lpVtbl->SetArguments(This,pszArgs)
+#define IShellLinkW_GetHotkey(This,pwHotkey) (This)->lpVtbl->GetHotkey(This,pwHotkey)
+#define IShellLinkW_SetHotkey(This,wHotkey) (This)->lpVtbl->SetHotkey(This,wHotkey)
+#define IShellLinkW_GetShowCmd(This,piShowCmd) (This)->lpVtbl->GetShowCmd(This,piShowCmd)
+#define IShellLinkW_SetShowCmd(This,iShowCmd) (This)->lpVtbl->SetShowCmd(This,iShowCmd)
+#define IShellLinkW_GetIconLocation(This,pszIconPath,cch,piIcon) (This)->lpVtbl->GetIconLocation(This,pszIconPath,cch,piIcon)
+#define IShellLinkW_SetIconLocation(This,pszIconPath,iIcon) (This)->lpVtbl->SetIconLocation(This,pszIconPath,iIcon)
+#define IShellLinkW_SetRelativePath(This,pszPathRel,dwReserved) (This)->lpVtbl->SetRelativePath(This,pszPathRel,dwReserved)
+#define IShellLinkW_Resolve(This,hwnd,fFlags) (This)->lpVtbl->Resolve(This,hwnd,fFlags)
+#define IShellLinkW_SetPath(This,pszFile) (This)->lpVtbl->SetPath(This,pszFile)
+#endif
+#endif
+  HRESULT WINAPI IShellLinkW_GetPath_Proxy(IShellLinkW *This,LPWSTR pszFile,int cch,WIN32_FIND_DATAW *pfd,DWORD fFlags);
+  void __RPC_STUB IShellLinkW_GetPath_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_GetIDList_Proxy(IShellLinkW *This,LPITEMIDLIST *ppidl);
+  void __RPC_STUB IShellLinkW_GetIDList_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_SetIDList_Proxy(IShellLinkW *This,LPCITEMIDLIST pidl);
+  void __RPC_STUB IShellLinkW_SetIDList_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_GetDescription_Proxy(IShellLinkW *This,LPWSTR pszName,int cch);
+  void __RPC_STUB IShellLinkW_GetDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_SetDescription_Proxy(IShellLinkW *This,LPCWSTR pszName);
+  void __RPC_STUB IShellLinkW_SetDescription_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_GetWorkingDirectory_Proxy(IShellLinkW *This,LPWSTR pszDir,int cch);
+  void __RPC_STUB IShellLinkW_GetWorkingDirectory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_SetWorkingDirectory_Proxy(IShellLinkW *This,LPCWSTR pszDir);
+  void __RPC_STUB IShellLinkW_SetWorkingDirectory_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_GetArguments_Proxy(IShellLinkW *This,LPWSTR pszArgs,int cch);
+  void __RPC_STUB IShellLinkW_GetArguments_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_SetArguments_Proxy(IShellLinkW *This,LPCWSTR pszArgs);
+  void __RPC_STUB IShellLinkW_SetArguments_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_GetHotkey_Proxy(IShellLinkW *This,WORD *pwHotkey);
+  void __RPC_STUB IShellLinkW_GetHotkey_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_SetHotkey_Proxy(IShellLinkW *This,WORD wHotkey);
+  void __RPC_STUB IShellLinkW_SetHotkey_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_GetShowCmd_Proxy(IShellLinkW *This,int *piShowCmd);
+  void __RPC_STUB IShellLinkW_GetShowCmd_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_SetShowCmd_Proxy(IShellLinkW *This,int iShowCmd);
+  void __RPC_STUB IShellLinkW_SetShowCmd_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_GetIconLocation_Proxy(IShellLinkW *This,LPWSTR pszIconPath,int cch,int *piIcon);
+  void __RPC_STUB IShellLinkW_GetIconLocation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_SetIconLocation_Proxy(IShellLinkW *This,LPCWSTR pszIconPath,int iIcon);
+  void __RPC_STUB IShellLinkW_SetIconLocation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_SetRelativePath_Proxy(IShellLinkW *This,LPCWSTR pszPathRel,DWORD dwReserved);
+  void __RPC_STUB IShellLinkW_SetRelativePath_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_Resolve_Proxy(IShellLinkW *This,HWND hwnd,DWORD fFlags);
+  void __RPC_STUB IShellLinkW_Resolve_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellLinkW_SetPath_Proxy(IShellLinkW *This,LPCWSTR pszFile);
+  void __RPC_STUB IShellLinkW_SetPath_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IActionProgressDialog_INTERFACE_DEFINED__
+#define __IActionProgressDialog_INTERFACE_DEFINED__
+  enum __MIDL_IActionProgressDialog_0001 {
+    SPINITF_NORMAL = 0,SPINITF_MODAL = 0x1,SPINITF_NOMINIMIZE = 0x8
+  };
+  typedef DWORD SPINITF;
+
+  EXTERN_C const IID IID_IActionProgressDialog;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IActionProgressDialog : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Initialize(SPINITF flags,LPCWSTR pszTitle,LPCWSTR pszCancel) = 0;
+    virtual HRESULT WINAPI Stop(void) = 0;
+  };
+#else
+  typedef struct IActionProgressDialogVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IActionProgressDialog *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IActionProgressDialog *This);
+      ULONG (WINAPI *Release)(IActionProgressDialog *This);
+      HRESULT (WINAPI *Initialize)(IActionProgressDialog *This,SPINITF flags,LPCWSTR pszTitle,LPCWSTR pszCancel);
+      HRESULT (WINAPI *Stop)(IActionProgressDialog *This);
+    END_INTERFACE
+  } IActionProgressDialogVtbl;
+  struct IActionProgressDialog {
+    CONST_VTBL struct IActionProgressDialogVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IActionProgressDialog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IActionProgressDialog_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IActionProgressDialog_Release(This) (This)->lpVtbl->Release(This)
+#define IActionProgressDialog_Initialize(This,flags,pszTitle,pszCancel) (This)->lpVtbl->Initialize(This,flags,pszTitle,pszCancel)
+#define IActionProgressDialog_Stop(This) (This)->lpVtbl->Stop(This)
+#endif
+#endif
+  HRESULT WINAPI IActionProgressDialog_Initialize_Proxy(IActionProgressDialog *This,SPINITF flags,LPCWSTR pszTitle,LPCWSTR pszCancel);
+  void __RPC_STUB IActionProgressDialog_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IActionProgressDialog_Stop_Proxy(IActionProgressDialog *This);
+  void __RPC_STUB IActionProgressDialog_Stop_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IHWEventHandler_INTERFACE_DEFINED__
+#define __IHWEventHandler_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IHWEventHandler;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IHWEventHandler : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Initialize(LPCWSTR pszParams) = 0;
+    virtual HRESULT WINAPI HandleEvent(LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType) = 0;
+    virtual HRESULT WINAPI HandleEventWithContent(LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType,LPCWSTR pszContentTypeHandler,IDataObject *pdataobject) = 0;
+  };
+#else
+  typedef struct IHWEventHandlerVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IHWEventHandler *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IHWEventHandler *This);
+      ULONG (WINAPI *Release)(IHWEventHandler *This);
+      HRESULT (WINAPI *Initialize)(IHWEventHandler *This,LPCWSTR pszParams);
+      HRESULT (WINAPI *HandleEvent)(IHWEventHandler *This,LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType);
+      HRESULT (WINAPI *HandleEventWithContent)(IHWEventHandler *This,LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType,LPCWSTR pszContentTypeHandler,IDataObject *pdataobject);
+    END_INTERFACE
+  } IHWEventHandlerVtbl;
+  struct IHWEventHandler {
+    CONST_VTBL struct IHWEventHandlerVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IHWEventHandler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IHWEventHandler_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IHWEventHandler_Release(This) (This)->lpVtbl->Release(This)
+#define IHWEventHandler_Initialize(This,pszParams) (This)->lpVtbl->Initialize(This,pszParams)
+#define IHWEventHandler_HandleEvent(This,pszDeviceID,pszAltDeviceID,pszEventType) (This)->lpVtbl->HandleEvent(This,pszDeviceID,pszAltDeviceID,pszEventType)
+#define IHWEventHandler_HandleEventWithContent(This,pszDeviceID,pszAltDeviceID,pszEventType,pszContentTypeHandler,pdataobject) (This)->lpVtbl->HandleEventWithContent(This,pszDeviceID,pszAltDeviceID,pszEventType,pszContentTypeHandler,pdataobject)
+#endif
+#endif
+  HRESULT WINAPI IHWEventHandler_Initialize_Proxy(IHWEventHandler *This,LPCWSTR pszParams);
+  void __RPC_STUB IHWEventHandler_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IHWEventHandler_HandleEvent_Proxy(IHWEventHandler *This,LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType);
+  void __RPC_STUB IHWEventHandler_HandleEvent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IHWEventHandler_HandleEventWithContent_Proxy(IHWEventHandler *This,LPCWSTR pszDeviceID,LPCWSTR pszAltDeviceID,LPCWSTR pszEventType,LPCWSTR pszContentTypeHandler,IDataObject *pdataobject);
+  void __RPC_STUB IHWEventHandler_HandleEventWithContent_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#define ARCONTENT_AUTORUNINF 0x00000002
+#define ARCONTENT_AUDIOCD 0x00000004
+#define ARCONTENT_DVDMOVIE 0x00000008
+#define ARCONTENT_BLANKCD 0x00000010
+#define ARCONTENT_BLANKDVD 0x00000020
+#define ARCONTENT_UNKNOWNCONTENT 0x00000040
+#define ARCONTENT_AUTOPLAYPIX 0x00000080
+#define ARCONTENT_AUTOPLAYMUSIC 0x00000100
+#define ARCONTENT_AUTOPLAYVIDEO 0x00000200
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0216_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0216_v0_0_s_ifspec;
+#ifndef __IQueryCancelAutoPlay_INTERFACE_DEFINED__
+#define __IQueryCancelAutoPlay_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IQueryCancelAutoPlay;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IQueryCancelAutoPlay : public IUnknown {
+  public:
+    virtual HRESULT WINAPI AllowAutoPlay(LPCWSTR pszPath,DWORD dwContentType,LPCWSTR pszLabel,DWORD dwSerialNumber) = 0;
+  };
+#else
+  typedef struct IQueryCancelAutoPlayVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IQueryCancelAutoPlay *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IQueryCancelAutoPlay *This);
+      ULONG (WINAPI *Release)(IQueryCancelAutoPlay *This);
+      HRESULT (WINAPI *AllowAutoPlay)(IQueryCancelAutoPlay *This,LPCWSTR pszPath,DWORD dwContentType,LPCWSTR pszLabel,DWORD dwSerialNumber);
+    END_INTERFACE
+  } IQueryCancelAutoPlayVtbl;
+  struct IQueryCancelAutoPlay {
+    CONST_VTBL struct IQueryCancelAutoPlayVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IQueryCancelAutoPlay_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IQueryCancelAutoPlay_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IQueryCancelAutoPlay_Release(This) (This)->lpVtbl->Release(This)
+#define IQueryCancelAutoPlay_AllowAutoPlay(This,pszPath,dwContentType,pszLabel,dwSerialNumber) (This)->lpVtbl->AllowAutoPlay(This,pszPath,dwContentType,pszLabel,dwSerialNumber)
+#endif
+#endif
+  HRESULT WINAPI IQueryCancelAutoPlay_AllowAutoPlay_Proxy(IQueryCancelAutoPlay *This,LPCWSTR pszPath,DWORD dwContentType,LPCWSTR pszLabel,DWORD dwSerialNumber);
+  void __RPC_STUB IQueryCancelAutoPlay_AllowAutoPlay_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IActionProgress_INTERFACE_DEFINED__
+#define __IActionProgress_INTERFACE_DEFINED__
+  enum __MIDL_IActionProgress_0001 {
+    SPBEGINF_NORMAL = 0,SPBEGINF_AUTOTIME = 0x2,SPBEGINF_NOPROGRESSBAR = 0x10,SPBEGINF_MARQUEEPROGRESS = 0x20
+  };
+  typedef DWORD SPBEGINF;
+
+  typedef enum _SPACTION {
+    SPACTION_NONE = 0,
+    SPACTION_MOVING,SPACTION_COPYING,SPACTION_RECYCLING,SPACTION_APPLYINGATTRIBS,
+    SPACTION_DOWNLOADING,SPACTION_SEARCHING_INTERNET,SPACTION_CALCULATING,
+    SPACTION_UPLOADING,SPACTION_SEARCHING_FILES
+  } SPACTION;
+  typedef enum _SPTEXT {
+    SPTEXT_ACTIONDESCRIPTION = 1,SPTEXT_ACTIONDETAIL = SPTEXT_ACTIONDESCRIPTION + 1
+  } SPTEXT;
+
+  EXTERN_C const IID IID_IActionProgress;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IActionProgress : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Begin(SPACTION action,SPBEGINF flags) = 0;
+    virtual HRESULT WINAPI UpdateProgress(ULONGLONG ulCompleted,ULONGLONG ulTotal) = 0;
+    virtual HRESULT WINAPI UpdateText(SPTEXT sptext,LPCWSTR pszText,WINBOOL fMayCompact) = 0;
+    virtual HRESULT WINAPI QueryCancel(WINBOOL *pfCancelled) = 0;
+    virtual HRESULT WINAPI ResetCancel(void) = 0;
+    virtual HRESULT WINAPI End(void) = 0;
+  };
+#else
+  typedef struct IActionProgressVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IActionProgress *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IActionProgress *This);
+      ULONG (WINAPI *Release)(IActionProgress *This);
+      HRESULT (WINAPI *Begin)(IActionProgress *This,SPACTION action,SPBEGINF flags);
+      HRESULT (WINAPI *UpdateProgress)(IActionProgress *This,ULONGLONG ulCompleted,ULONGLONG ulTotal);
+      HRESULT (WINAPI *UpdateText)(IActionProgress *This,SPTEXT sptext,LPCWSTR pszText,WINBOOL fMayCompact);
+      HRESULT (WINAPI *QueryCancel)(IActionProgress *This,WINBOOL *pfCancelled);
+      HRESULT (WINAPI *ResetCancel)(IActionProgress *This);
+      HRESULT (WINAPI *End)(IActionProgress *This);
+    END_INTERFACE
+  } IActionProgressVtbl;
+  struct IActionProgress {
+    CONST_VTBL struct IActionProgressVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IActionProgress_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IActionProgress_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IActionProgress_Release(This) (This)->lpVtbl->Release(This)
+#define IActionProgress_Begin(This,action,flags) (This)->lpVtbl->Begin(This,action,flags)
+#define IActionProgress_UpdateProgress(This,ulCompleted,ulTotal) (This)->lpVtbl->UpdateProgress(This,ulCompleted,ulTotal)
+#define IActionProgress_UpdateText(This,sptext,pszText,fMayCompact) (This)->lpVtbl->UpdateText(This,sptext,pszText,fMayCompact)
+#define IActionProgress_QueryCancel(This,pfCancelled) (This)->lpVtbl->QueryCancel(This,pfCancelled)
+#define IActionProgress_ResetCancel(This) (This)->lpVtbl->ResetCancel(This)
+#define IActionProgress_End(This) (This)->lpVtbl->End(This)
+#endif
+#endif
+  HRESULT WINAPI IActionProgress_Begin_Proxy(IActionProgress *This,SPACTION action,SPBEGINF flags);
+  void __RPC_STUB IActionProgress_Begin_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IActionProgress_UpdateProgress_Proxy(IActionProgress *This,ULONGLONG ulCompleted,ULONGLONG ulTotal);
+  void __RPC_STUB IActionProgress_UpdateProgress_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IActionProgress_UpdateText_Proxy(IActionProgress *This,SPTEXT sptext,LPCWSTR pszText,WINBOOL fMayCompact);
+  void __RPC_STUB IActionProgress_UpdateText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IActionProgress_QueryCancel_Proxy(IActionProgress *This,WINBOOL *pfCancelled);
+  void __RPC_STUB IActionProgress_QueryCancel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IActionProgress_ResetCancel_Proxy(IActionProgress *This);
+  void __RPC_STUB IActionProgress_ResetCancel_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IActionProgress_End_Proxy(IActionProgress *This);
+  void __RPC_STUB IActionProgress_End_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IShellExtInit_INTERFACE_DEFINED__
+#define __IShellExtInit_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IShellExtInit;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IShellExtInit : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Initialize(LPCITEMIDLIST pidlFolder,IDataObject *pdtobj,HKEY hkeyProgID) = 0;
+  };
+#else
+  typedef struct IShellExtInitVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IShellExtInit *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IShellExtInit *This);
+      ULONG (WINAPI *Release)(IShellExtInit *This);
+      HRESULT (WINAPI *Initialize)(IShellExtInit *This,LPCITEMIDLIST pidlFolder,IDataObject *pdtobj,HKEY hkeyProgID);
+    END_INTERFACE
+  } IShellExtInitVtbl;
+  struct IShellExtInit {
+    CONST_VTBL struct IShellExtInitVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IShellExtInit_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellExtInit_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellExtInit_Release(This) (This)->lpVtbl->Release(This)
+#define IShellExtInit_Initialize(This,pidlFolder,pdtobj,hkeyProgID) (This)->lpVtbl->Initialize(This,pidlFolder,pdtobj,hkeyProgID)
+#endif
+#endif
+  HRESULT WINAPI IShellExtInit_Initialize_Proxy(IShellExtInit *This,LPCITEMIDLIST pidlFolder,IDataObject *pdtobj,HKEY hkeyProgID);
+  void __RPC_STUB IShellExtInit_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  typedef IShellExtInit *LPSHELLEXTINIT;
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0219_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0219_v0_0_s_ifspec;
+#ifndef __IShellPropSheetExt_INTERFACE_DEFINED__
+#define __IShellPropSheetExt_INTERFACE_DEFINED__
+  enum __MIDL_IShellPropSheetExt_0001 {
+    EXPPS_FILETYPES = 0x1
+  };
+  typedef UINT EXPPS;
+
+  EXTERN_C const IID IID_IShellPropSheetExt;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IShellPropSheetExt : public IUnknown {
+  public:
+    virtual HRESULT WINAPI AddPages(LPFNSVADDPROPSHEETPAGE pfnAddPage,LPARAM lParam) = 0;
+    virtual HRESULT WINAPI ReplacePage(EXPPS uPageID,LPFNSVADDPROPSHEETPAGE pfnReplaceWith,LPARAM lParam) = 0;
+  };
+#else
+  typedef struct IShellPropSheetExtVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IShellPropSheetExt *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IShellPropSheetExt *This);
+      ULONG (WINAPI *Release)(IShellPropSheetExt *This);
+      HRESULT (WINAPI *AddPages)(IShellPropSheetExt *This,LPFNSVADDPROPSHEETPAGE pfnAddPage,LPARAM lParam);
+      HRESULT (WINAPI *ReplacePage)(IShellPropSheetExt *This,EXPPS uPageID,LPFNSVADDPROPSHEETPAGE pfnReplaceWith,LPARAM lParam);
+    END_INTERFACE
+  } IShellPropSheetExtVtbl;
+  struct IShellPropSheetExt {
+    CONST_VTBL struct IShellPropSheetExtVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IShellPropSheetExt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellPropSheetExt_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellPropSheetExt_Release(This) (This)->lpVtbl->Release(This)
+#define IShellPropSheetExt_AddPages(This,pfnAddPage,lParam) (This)->lpVtbl->AddPages(This,pfnAddPage,lParam)
+#define IShellPropSheetExt_ReplacePage(This,uPageID,pfnReplaceWith,lParam) (This)->lpVtbl->ReplacePage(This,uPageID,pfnReplaceWith,lParam)
+#endif
+#endif
+  HRESULT WINAPI IShellPropSheetExt_AddPages_Proxy(IShellPropSheetExt *This,LPFNSVADDPROPSHEETPAGE pfnAddPage,LPARAM lParam);
+  void __RPC_STUB IShellPropSheetExt_AddPages_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellPropSheetExt_ReplacePage_Proxy(IShellPropSheetExt *This,EXPPS uPageID,LPFNSVADDPROPSHEETPAGE pfnReplaceWith,LPARAM lParam);
+  void __RPC_STUB IShellPropSheetExt_ReplacePage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  typedef IShellPropSheetExt *LPSHELLPROPSHEETEXT;
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0220_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0220_v0_0_s_ifspec;
+#ifndef __IRemoteComputer_INTERFACE_DEFINED__
+#define __IRemoteComputer_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IRemoteComputer;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IRemoteComputer : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Initialize(LPCWSTR pszMachine,WINBOOL bEnumerating) = 0;
+  };
+#else
+  typedef struct IRemoteComputerVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IRemoteComputer *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IRemoteComputer *This);
+      ULONG (WINAPI *Release)(IRemoteComputer *This);
+      HRESULT (WINAPI *Initialize)(IRemoteComputer *This,LPCWSTR pszMachine,WINBOOL bEnumerating);
+    END_INTERFACE
+  } IRemoteComputerVtbl;
+  struct IRemoteComputer {
+    CONST_VTBL struct IRemoteComputerVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IRemoteComputer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRemoteComputer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRemoteComputer_Release(This) (This)->lpVtbl->Release(This)
+#define IRemoteComputer_Initialize(This,pszMachine,bEnumerating) (This)->lpVtbl->Initialize(This,pszMachine,bEnumerating)
+#endif
+#endif
+  HRESULT WINAPI IRemoteComputer_Initialize_Proxy(IRemoteComputer *This,LPCWSTR pszMachine,WINBOOL bEnumerating);
+  void __RPC_STUB IRemoteComputer_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IQueryContinue_INTERFACE_DEFINED__
+#define __IQueryContinue_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IQueryContinue;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IQueryContinue : public IUnknown {
+  public:
+    virtual HRESULT WINAPI QueryContinue(void) = 0;
+  };
+#else
+  typedef struct IQueryContinueVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IQueryContinue *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IQueryContinue *This);
+      ULONG (WINAPI *Release)(IQueryContinue *This);
+      HRESULT (WINAPI *QueryContinue)(IQueryContinue *This);
+    END_INTERFACE
+  } IQueryContinueVtbl;
+  struct IQueryContinue {
+    CONST_VTBL struct IQueryContinueVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IQueryContinue_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IQueryContinue_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IQueryContinue_Release(This) (This)->lpVtbl->Release(This)
+#define IQueryContinue_QueryContinue(This) (This)->lpVtbl->QueryContinue(This)
+#endif
+#endif
+  HRESULT WINAPI IQueryContinue_QueryContinue_Proxy(IQueryContinue *This);
+  void __RPC_STUB IQueryContinue_QueryContinue_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IUserNotification_INTERFACE_DEFINED__
+#define __IUserNotification_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IUserNotification;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IUserNotification : public IUnknown {
+  public:
+    virtual HRESULT WINAPI SetBalloonInfo(LPCWSTR pszTitle,LPCWSTR pszText,DWORD dwInfoFlags) = 0;
+    virtual HRESULT WINAPI SetBalloonRetry(DWORD dwShowTime,DWORD dwInterval,UINT cRetryCount) = 0;
+    virtual HRESULT WINAPI SetIconInfo(HICON hIcon,LPCWSTR pszToolTip) = 0;
+    virtual HRESULT WINAPI Show(IQueryContinue *pqc,DWORD dwContinuePollInterval) = 0;
+    virtual HRESULT WINAPI PlaySound(LPCWSTR pszSoundName) = 0;
+  };
+#else
+  typedef struct IUserNotificationVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IUserNotification *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IUserNotification *This);
+      ULONG (WINAPI *Release)(IUserNotification *This);
+      HRESULT (WINAPI *SetBalloonInfo)(IUserNotification *This,LPCWSTR pszTitle,LPCWSTR pszText,DWORD dwInfoFlags);
+      HRESULT (WINAPI *SetBalloonRetry)(IUserNotification *This,DWORD dwShowTime,DWORD dwInterval,UINT cRetryCount);
+      HRESULT (WINAPI *SetIconInfo)(IUserNotification *This,HICON hIcon,LPCWSTR pszToolTip);
+      HRESULT (WINAPI *Show)(IUserNotification *This,IQueryContinue *pqc,DWORD dwContinuePollInterval);
+      HRESULT (WINAPI *PlaySound)(IUserNotification *This,LPCWSTR pszSoundName);
+    END_INTERFACE
+  } IUserNotificationVtbl;
+  struct IUserNotification {
+    CONST_VTBL struct IUserNotificationVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IUserNotification_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IUserNotification_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IUserNotification_Release(This) (This)->lpVtbl->Release(This)
+#define IUserNotification_SetBalloonInfo(This,pszTitle,pszText,dwInfoFlags) (This)->lpVtbl->SetBalloonInfo(This,pszTitle,pszText,dwInfoFlags)
+#define IUserNotification_SetBalloonRetry(This,dwShowTime,dwInterval,cRetryCount) (This)->lpVtbl->SetBalloonRetry(This,dwShowTime,dwInterval,cRetryCount)
+#define IUserNotification_SetIconInfo(This,hIcon,pszToolTip) (This)->lpVtbl->SetIconInfo(This,hIcon,pszToolTip)
+#define IUserNotification_Show(This,pqc,dwContinuePollInterval) (This)->lpVtbl->Show(This,pqc,dwContinuePollInterval)
+#define IUserNotification_PlaySound(This,pszSoundName) (This)->lpVtbl->PlaySound(This,pszSoundName)
+#endif
+#endif
+  HRESULT WINAPI IUserNotification_SetBalloonInfo_Proxy(IUserNotification *This,LPCWSTR pszTitle,LPCWSTR pszText,DWORD dwInfoFlags);
+  void __RPC_STUB IUserNotification_SetBalloonInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IUserNotification_SetBalloonRetry_Proxy(IUserNotification *This,DWORD dwShowTime,DWORD dwInterval,UINT cRetryCount);
+  void __RPC_STUB IUserNotification_SetBalloonRetry_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IUserNotification_SetIconInfo_Proxy(IUserNotification *This,HICON hIcon,LPCWSTR pszToolTip);
+  void __RPC_STUB IUserNotification_SetIconInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IUserNotification_Show_Proxy(IUserNotification *This,IQueryContinue *pqc,DWORD dwContinuePollInterval);
+  void __RPC_STUB IUserNotification_Show_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IUserNotification_PlaySound_Proxy(IUserNotification *This,LPCWSTR pszSoundName);
+  void __RPC_STUB IUserNotification_PlaySound_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IItemNameLimits_INTERFACE_DEFINED__
+#define __IItemNameLimits_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IItemNameLimits;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IItemNameLimits : public IUnknown {
+  public:
+    virtual HRESULT WINAPI GetValidCharacters(LPWSTR *ppwszValidChars,LPWSTR *ppwszInvalidChars) = 0;
+    virtual HRESULT WINAPI GetMaxLength(LPCWSTR pszName,int *piMaxNameLen) = 0;
+  };
+#else
+  typedef struct IItemNameLimitsVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IItemNameLimits *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IItemNameLimits *This);
+      ULONG (WINAPI *Release)(IItemNameLimits *This);
+      HRESULT (WINAPI *GetValidCharacters)(IItemNameLimits *This,LPWSTR *ppwszValidChars,LPWSTR *ppwszInvalidChars);
+      HRESULT (WINAPI *GetMaxLength)(IItemNameLimits *This,LPCWSTR pszName,int *piMaxNameLen);
+    END_INTERFACE
+  } IItemNameLimitsVtbl;
+  struct IItemNameLimits {
+    CONST_VTBL struct IItemNameLimitsVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IItemNameLimits_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IItemNameLimits_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IItemNameLimits_Release(This) (This)->lpVtbl->Release(This)
+#define IItemNameLimits_GetValidCharacters(This,ppwszValidChars,ppwszInvalidChars) (This)->lpVtbl->GetValidCharacters(This,ppwszValidChars,ppwszInvalidChars)
+#define IItemNameLimits_GetMaxLength(This,pszName,piMaxNameLen) (This)->lpVtbl->GetMaxLength(This,pszName,piMaxNameLen)
+#endif
+#endif
+  HRESULT WINAPI IItemNameLimits_GetValidCharacters_Proxy(IItemNameLimits *This,LPWSTR *ppwszValidChars,LPWSTR *ppwszInvalidChars);
+  void __RPC_STUB IItemNameLimits_GetValidCharacters_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IItemNameLimits_GetMaxLength_Proxy(IItemNameLimits *This,LPCWSTR pszName,int *piMaxNameLen);
+  void __RPC_STUB IItemNameLimits_GetMaxLength_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#define SNCF_REFRESHLIST 0x00000001
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0224_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0224_v0_0_s_ifspec;
+#ifndef __INetCrawler_INTERFACE_DEFINED__
+#define __INetCrawler_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_INetCrawler;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct INetCrawler : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Update(DWORD dwFlags) = 0;
+  };
+#else
+  typedef struct INetCrawlerVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(INetCrawler *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(INetCrawler *This);
+      ULONG (WINAPI *Release)(INetCrawler *This);
+      HRESULT (WINAPI *Update)(INetCrawler *This,DWORD dwFlags);
+    END_INTERFACE
+  } INetCrawlerVtbl;
+  struct INetCrawler {
+    CONST_VTBL struct INetCrawlerVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define INetCrawler_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define INetCrawler_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define INetCrawler_Release(This) (This)->lpVtbl->Release(This)
+#define INetCrawler_Update(This,dwFlags) (This)->lpVtbl->Update(This,dwFlags)
+#endif
+#endif
+  HRESULT WINAPI INetCrawler_Update_Proxy(INetCrawler *This,DWORD dwFlags);
+  void __RPC_STUB INetCrawler_Update_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#if (0x501 >= 0x0400)
+#define IEI_PRIORITY_MAX ITSAT_MAX_PRIORITY
+#define IEI_PRIORITY_MIN ITSAT_MIN_PRIORITY
+#define IEIT_PRIORITY_NORMAL ITSAT_DEFAULT_PRIORITY
+#define IEIFLAG_ASYNC 0x0001
+#define IEIFLAG_CACHE 0x0002
+#define IEIFLAG_ASPECT 0x0004
+#define IEIFLAG_OFFLINE 0x0008
+#define IEIFLAG_GLEAM 0x0010
+#define IEIFLAG_SCREEN 0x0020
+#define IEIFLAG_ORIGSIZE 0x0040
+#define IEIFLAG_NOSTAMP 0x0080
+#define IEIFLAG_NOBORDER 0x0100
+#define IEIFLAG_QUALITY 0x0200
+#define IEIFLAG_REFRESH 0x0400
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0225_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0225_v0_0_s_ifspec;
+#ifndef __IExtractImage_INTERFACE_DEFINED__
+#define __IExtractImage_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IExtractImage;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IExtractImage : public IUnknown {
+  public:
+    virtual HRESULT WINAPI GetLocation(LPWSTR pszPathBuffer,DWORD cch,DWORD *pdwPriority,const SIZE *prgSize,DWORD dwRecClrDepth,DWORD *pdwFlags) = 0;
+    virtual HRESULT WINAPI Extract(HBITMAP *phBmpThumbnail) = 0;
+  };
+#else
+  typedef struct IExtractImageVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IExtractImage *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IExtractImage *This);
+      ULONG (WINAPI *Release)(IExtractImage *This);
+      HRESULT (WINAPI *GetLocation)(IExtractImage *This,LPWSTR pszPathBuffer,DWORD cch,DWORD *pdwPriority,const SIZE *prgSize,DWORD dwRecClrDepth,DWORD *pdwFlags);
+      HRESULT (WINAPI *Extract)(IExtractImage *This,HBITMAP *phBmpThumbnail);
+    END_INTERFACE
+  } IExtractImageVtbl;
+  struct IExtractImage {
+    CONST_VTBL struct IExtractImageVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IExtractImage_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IExtractImage_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IExtractImage_Release(This) (This)->lpVtbl->Release(This)
+#define IExtractImage_GetLocation(This,pszPathBuffer,cch,pdwPriority,prgSize,dwRecClrDepth,pdwFlags) (This)->lpVtbl->GetLocation(This,pszPathBuffer,cch,pdwPriority,prgSize,dwRecClrDepth,pdwFlags)
+#define IExtractImage_Extract(This,phBmpThumbnail) (This)->lpVtbl->Extract(This,phBmpThumbnail)
+#endif
+#endif
+  HRESULT WINAPI IExtractImage_GetLocation_Proxy(IExtractImage *This,LPWSTR pszPathBuffer,DWORD cch,DWORD *pdwPriority,const SIZE *prgSize,DWORD dwRecClrDepth,DWORD *pdwFlags);
+  void __RPC_STUB IExtractImage_GetLocation_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IExtractImage_Extract_Proxy(IExtractImage *This,HBITMAP *phBmpThumbnail);
+  void __RPC_STUB IExtractImage_Extract_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  typedef IExtractImage *LPEXTRACTIMAGE;
+#endif
+#if (0x501 >= 0x0500)
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0226_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0226_v0_0_s_ifspec;
+#ifndef __IExtractImage2_INTERFACE_DEFINED__
+#define __IExtractImage2_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IExtractImage2;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IExtractImage2 : public IExtractImage {
+  public:
+    virtual HRESULT WINAPI GetDateStamp(FILETIME *pDateStamp) = 0;
+  };
+#else
+  typedef struct IExtractImage2Vtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IExtractImage2 *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IExtractImage2 *This);
+      ULONG (WINAPI *Release)(IExtractImage2 *This);
+      HRESULT (WINAPI *GetLocation)(IExtractImage2 *This,LPWSTR pszPathBuffer,DWORD cch,DWORD *pdwPriority,const SIZE *prgSize,DWORD dwRecClrDepth,DWORD *pdwFlags);
+      HRESULT (WINAPI *Extract)(IExtractImage2 *This,HBITMAP *phBmpThumbnail);
+      HRESULT (WINAPI *GetDateStamp)(IExtractImage2 *This,FILETIME *pDateStamp);
+    END_INTERFACE
+  } IExtractImage2Vtbl;
+  struct IExtractImage2 {
+    CONST_VTBL struct IExtractImage2Vtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IExtractImage2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IExtractImage2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IExtractImage2_Release(This) (This)->lpVtbl->Release(This)
+#define IExtractImage2_GetLocation(This,pszPathBuffer,cch,pdwPriority,prgSize,dwRecClrDepth,pdwFlags) (This)->lpVtbl->GetLocation(This,pszPathBuffer,cch,pdwPriority,prgSize,dwRecClrDepth,pdwFlags)
+#define IExtractImage2_Extract(This,phBmpThumbnail) (This)->lpVtbl->Extract(This,phBmpThumbnail)
+#define IExtractImage2_GetDateStamp(This,pDateStamp) (This)->lpVtbl->GetDateStamp(This,pDateStamp)
+#endif
+#endif
+  HRESULT WINAPI IExtractImage2_GetDateStamp_Proxy(IExtractImage2 *This,FILETIME *pDateStamp);
+  void __RPC_STUB IExtractImage2_GetDateStamp_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  typedef IExtractImage2 *LPEXTRACTIMAGE2;
+#endif
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0227_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0227_v0_0_s_ifspec;
+#ifndef __IUserEventTimerCallback_INTERFACE_DEFINED__
+#define __IUserEventTimerCallback_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IUserEventTimerCallback;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IUserEventTimerCallback : public IUnknown {
+  public:
+    virtual HRESULT WINAPI UserEventTimerProc(ULONG uUserEventTimerID,UINT uTimerElapse) = 0;
+  };
+#else
+  typedef struct IUserEventTimerCallbackVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IUserEventTimerCallback *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IUserEventTimerCallback *This);
+      ULONG (WINAPI *Release)(IUserEventTimerCallback *This);
+      HRESULT (WINAPI *UserEventTimerProc)(IUserEventTimerCallback *This,ULONG uUserEventTimerID,UINT uTimerElapse);
+    END_INTERFACE
+  } IUserEventTimerCallbackVtbl;
+  struct IUserEventTimerCallback {
+    CONST_VTBL struct IUserEventTimerCallbackVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IUserEventTimerCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IUserEventTimerCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IUserEventTimerCallback_Release(This) (This)->lpVtbl->Release(This)
+#define IUserEventTimerCallback_UserEventTimerProc(This,uUserEventTimerID,uTimerElapse) (This)->lpVtbl->UserEventTimerProc(This,uUserEventTimerID,uTimerElapse)
+#endif
+#endif
+  HRESULT WINAPI IUserEventTimerCallback_UserEventTimerProc_Proxy(IUserEventTimerCallback *This,ULONG uUserEventTimerID,UINT uTimerElapse);
+  void __RPC_STUB IUserEventTimerCallback_UserEventTimerProc_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0228_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0228_v0_0_s_ifspec;
+#ifndef __IUserEventTimer_INTERFACE_DEFINED__
+#define __IUserEventTimer_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IUserEventTimer;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IUserEventTimer : public IUnknown {
+  public:
+    virtual HRESULT WINAPI SetUserEventTimer(HWND hWnd,UINT uCallbackMessage,UINT uTimerElapse,IUserEventTimerCallback *pUserEventTimerCallback,ULONG *puUserEventTimerID) = 0;
+    virtual HRESULT WINAPI KillUserEventTimer(HWND hWnd,ULONG uUserEventTimerID) = 0;
+    virtual HRESULT WINAPI GetUserEventTimerElapsed(HWND hWnd,ULONG uUserEventTimerID,UINT *puTimerElapsed) = 0;
+    virtual HRESULT WINAPI InitTimerTickInterval(UINT uTimerTickIntervalMs) = 0;
+  };
+#else
+  typedef struct IUserEventTimerVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IUserEventTimer *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IUserEventTimer *This);
+      ULONG (WINAPI *Release)(IUserEventTimer *This);
+      HRESULT (WINAPI *SetUserEventTimer)(IUserEventTimer *This,HWND hWnd,UINT uCallbackMessage,UINT uTimerElapse,IUserEventTimerCallback *pUserEventTimerCallback,ULONG *puUserEventTimerID);
+      HRESULT (WINAPI *KillUserEventTimer)(IUserEventTimer *This,HWND hWnd,ULONG uUserEventTimerID);
+      HRESULT (WINAPI *GetUserEventTimerElapsed)(IUserEventTimer *This,HWND hWnd,ULONG uUserEventTimerID,UINT *puTimerElapsed);
+      HRESULT (WINAPI *InitTimerTickInterval)(IUserEventTimer *This,UINT uTimerTickIntervalMs);
+    END_INTERFACE
+  } IUserEventTimerVtbl;
+  struct IUserEventTimer {
+    CONST_VTBL struct IUserEventTimerVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IUserEventTimer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IUserEventTimer_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IUserEventTimer_Release(This) (This)->lpVtbl->Release(This)
+#define IUserEventTimer_SetUserEventTimer(This,hWnd,uCallbackMessage,uTimerElapse,pUserEventTimerCallback,puUserEventTimerID) (This)->lpVtbl->SetUserEventTimer(This,hWnd,uCallbackMessage,uTimerElapse,pUserEventTimerCallback,puUserEventTimerID)
+#define IUserEventTimer_KillUserEventTimer(This,hWnd,uUserEventTimerID) (This)->lpVtbl->KillUserEventTimer(This,hWnd,uUserEventTimerID)
+#define IUserEventTimer_GetUserEventTimerElapsed(This,hWnd,uUserEventTimerID,puTimerElapsed) (This)->lpVtbl->GetUserEventTimerElapsed(This,hWnd,uUserEventTimerID,puTimerElapsed)
+#define IUserEventTimer_InitTimerTickInterval(This,uTimerTickIntervalMs) (This)->lpVtbl->InitTimerTickInterval(This,uTimerTickIntervalMs)
+#endif
+#endif
+  HRESULT WINAPI IUserEventTimer_SetUserEventTimer_Proxy(IUserEventTimer *This,HWND hWnd,UINT uCallbackMessage,UINT uTimerElapse,IUserEventTimerCallback *pUserEventTimerCallback,ULONG *puUserEventTimerID);
+  void __RPC_STUB IUserEventTimer_SetUserEventTimer_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IUserEventTimer_KillUserEventTimer_Proxy(IUserEventTimer *This,HWND hWnd,ULONG uUserEventTimerID);
+  void __RPC_STUB IUserEventTimer_KillUserEventTimer_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IUserEventTimer_GetUserEventTimerElapsed_Proxy(IUserEventTimer *This,HWND hWnd,ULONG uUserEventTimerID,UINT *puTimerElapsed);
+  void __RPC_STUB IUserEventTimer_GetUserEventTimerElapsed_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IUserEventTimer_InitTimerTickInterval_Proxy(IUserEventTimer *This,UINT uTimerTickIntervalMs);
+  void __RPC_STUB IUserEventTimer_InitTimerTickInterval_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IDockingWindow_INTERFACE_DEFINED__
+#define __IDockingWindow_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IDockingWindow;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IDockingWindow : public IOleWindow {
+  public:
+    virtual HRESULT WINAPI ShowDW(WINBOOL fShow) = 0;
+    virtual HRESULT WINAPI CloseDW(DWORD dwReserved) = 0;
+    virtual HRESULT WINAPI ResizeBorderDW(LPCRECT prcBorder,IUnknown *punkToolbarSite,WINBOOL fReserved) = 0;
+  };
+#else
+  typedef struct IDockingWindowVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IDockingWindow *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IDockingWindow *This);
+      ULONG (WINAPI *Release)(IDockingWindow *This);
+      HRESULT (WINAPI *GetWindow)(IDockingWindow *This,HWND *phwnd);
+      HRESULT (WINAPI *ContextSensitiveHelp)(IDockingWindow *This,WINBOOL fEnterMode);
+      HRESULT (WINAPI *ShowDW)(IDockingWindow *This,WINBOOL fShow);
+      HRESULT (WINAPI *CloseDW)(IDockingWindow *This,DWORD dwReserved);
+      HRESULT (WINAPI *ResizeBorderDW)(IDockingWindow *This,LPCRECT prcBorder,IUnknown *punkToolbarSite,WINBOOL fReserved);
+    END_INTERFACE
+  } IDockingWindowVtbl;
+  struct IDockingWindow {
+    CONST_VTBL struct IDockingWindowVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IDockingWindow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDockingWindow_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDockingWindow_Release(This) (This)->lpVtbl->Release(This)
+#define IDockingWindow_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
+#define IDockingWindow_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
+#define IDockingWindow_ShowDW(This,fShow) (This)->lpVtbl->ShowDW(This,fShow)
+#define IDockingWindow_CloseDW(This,dwReserved) (This)->lpVtbl->CloseDW(This,dwReserved)
+#define IDockingWindow_ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved) (This)->lpVtbl->ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved)
+#endif
+#endif
+  HRESULT WINAPI IDockingWindow_ShowDW_Proxy(IDockingWindow *This,WINBOOL fShow);
+  void __RPC_STUB IDockingWindow_ShowDW_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IDockingWindow_CloseDW_Proxy(IDockingWindow *This,DWORD dwReserved);
+  void __RPC_STUB IDockingWindow_CloseDW_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IDockingWindow_ResizeBorderDW_Proxy(IDockingWindow *This,LPCRECT prcBorder,IUnknown *punkToolbarSite,WINBOOL fReserved);
+  void __RPC_STUB IDockingWindow_ResizeBorderDW_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#define DBIM_MINSIZE 0x0001
+#define DBIM_MAXSIZE 0x0002
+#define DBIM_INTEGRAL 0x0004
+#define DBIM_ACTUAL 0x0008
+#define DBIM_TITLE 0x0010
+#define DBIM_MODEFLAGS 0x0020
+#define DBIM_BKCOLOR 0x0040
+
+#include <pshpack8.h>
+
+  typedef struct __MIDL___MIDL_itf_shobjidl_0230_0001 {
+    DWORD dwMask;
+    POINTL ptMinSize;
+    POINTL ptMaxSize;
+    POINTL ptIntegral;
+    POINTL ptActual;
+    WCHAR wszTitle[256];
+    DWORD dwModeFlags;
+    COLORREF crBkgnd;
+  } DESKBANDINFO;
+
+#include <poppack.h>
+#define DBIMF_NORMAL 0x0000
+#define DBIMF_FIXED 0x0001
+#define DBIMF_FIXEDBMP 0x0004
+#define DBIMF_VARIABLEHEIGHT 0x0008
+#define DBIMF_UNDELETEABLE 0x0010
+#define DBIMF_DEBOSSED 0x0020
+#define DBIMF_BKCOLOR 0x0040
+#define DBIMF_USECHEVRON 0x0080
+#define DBIMF_BREAK 0x0100
+#define DBIMF_ADDTOFRONT 0x0200
+#define DBIMF_TOPALIGN 0x0400
+#define DBIF_VIEWMODE_NORMAL 0x0000
+#define DBIF_VIEWMODE_VERTICAL 0x0001
+#define DBIF_VIEWMODE_FLOATING 0x0002
+#define DBIF_VIEWMODE_TRANSPARENT 0x0004
+
+  enum __MIDL___MIDL_itf_shobjidl_0230_0002 {
+    DBID_BANDINFOCHANGED = 0,DBID_SHOWONLY = 1,DBID_MAXIMIZEBAND = 2,DBID_PUSHCHEVRON = 3,DBID_DELAYINIT = 4,DBID_FINISHINIT = 5,
+    DBID_SETWINDOWTHEME = 6,DBID_PERMITAUTOHIDE = 7
+  };
+#define DBPC_SELECTFIRST (DWORD)-1
+#define DBPC_SELECTLAST (DWORD)-2
+#define CGID_DeskBand IID_IDeskBand
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0230_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0230_v0_0_s_ifspec;
+#ifndef __IDeskBand_INTERFACE_DEFINED__
+#define __IDeskBand_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IDeskBand;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IDeskBand : public IDockingWindow {
+  public:
+    virtual HRESULT WINAPI GetBandInfo(DWORD dwBandID,DWORD dwViewMode,DESKBANDINFO *pdbi) = 0;
+  };
+#else
+  typedef struct IDeskBandVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IDeskBand *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IDeskBand *This);
+      ULONG (WINAPI *Release)(IDeskBand *This);
+      HRESULT (WINAPI *GetWindow)(IDeskBand *This,HWND *phwnd);
+      HRESULT (WINAPI *ContextSensitiveHelp)(IDeskBand *This,WINBOOL fEnterMode);
+      HRESULT (WINAPI *ShowDW)(IDeskBand *This,WINBOOL fShow);
+      HRESULT (WINAPI *CloseDW)(IDeskBand *This,DWORD dwReserved);
+      HRESULT (WINAPI *ResizeBorderDW)(IDeskBand *This,LPCRECT prcBorder,IUnknown *punkToolbarSite,WINBOOL fReserved);
+      HRESULT (WINAPI *GetBandInfo)(IDeskBand *This,DWORD dwBandID,DWORD dwViewMode,DESKBANDINFO *pdbi);
+    END_INTERFACE
+  } IDeskBandVtbl;
+  struct IDeskBand {
+    CONST_VTBL struct IDeskBandVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IDeskBand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDeskBand_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDeskBand_Release(This) (This)->lpVtbl->Release(This)
+#define IDeskBand_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
+#define IDeskBand_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
+#define IDeskBand_ShowDW(This,fShow) (This)->lpVtbl->ShowDW(This,fShow)
+#define IDeskBand_CloseDW(This,dwReserved) (This)->lpVtbl->CloseDW(This,dwReserved)
+#define IDeskBand_ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved) (This)->lpVtbl->ResizeBorderDW(This,prcBorder,punkToolbarSite,fReserved)
+#define IDeskBand_GetBandInfo(This,dwBandID,dwViewMode,pdbi) (This)->lpVtbl->GetBandInfo(This,dwBandID,dwViewMode,pdbi)
+#endif
+#endif
+  HRESULT WINAPI IDeskBand_GetBandInfo_Proxy(IDeskBand *This,DWORD dwBandID,DWORD dwViewMode,DESKBANDINFO *pdbi);
+  void __RPC_STUB IDeskBand_GetBandInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __ITaskbarList_INTERFACE_DEFINED__
+#define __ITaskbarList_INTERFACE_DEFINED__
+  DEFINE_GUID(IID_ITaskbarList,0x56FDF342L,0xFD6D,0x11D0,0x95,0x8A,0x00,0x60,0x97,0xC9,0xA0,0x90);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct ITaskbarList : public IUnknown {
+  public:
+    virtual HRESULT WINAPI HrInit(void) = 0;
+    virtual HRESULT WINAPI AddTab(HWND hwnd) = 0;
+    virtual HRESULT WINAPI DeleteTab(HWND hwnd) = 0;
+    virtual HRESULT WINAPI ActivateTab(HWND hwnd) = 0;
+    virtual HRESULT WINAPI SetActiveAlt(HWND hwnd) = 0;
+  };
+#else
+  typedef struct ITaskbarListVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(ITaskbarList *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(ITaskbarList *This);
+      ULONG (WINAPI *Release)(ITaskbarList *This);
+      HRESULT (WINAPI *HrInit)(ITaskbarList *This);
+      HRESULT (WINAPI *AddTab)(ITaskbarList *This,HWND hwnd);
+      HRESULT (WINAPI *DeleteTab)(ITaskbarList *This,HWND hwnd);
+      HRESULT (WINAPI *ActivateTab)(ITaskbarList *This,HWND hwnd);
+      HRESULT (WINAPI *SetActiveAlt)(ITaskbarList *This,HWND hwnd);
+    END_INTERFACE
+  } ITaskbarListVtbl;
+  struct ITaskbarList {
+    CONST_VTBL struct ITaskbarListVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define ITaskbarList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITaskbarList_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITaskbarList_Release(This) (This)->lpVtbl->Release(This)
+#define ITaskbarList_HrInit(This) (This)->lpVtbl->HrInit(This)
+#define ITaskbarList_AddTab(This,hwnd) (This)->lpVtbl->AddTab(This,hwnd)
+#define ITaskbarList_DeleteTab(This,hwnd) (This)->lpVtbl->DeleteTab(This,hwnd)
+#define ITaskbarList_ActivateTab(This,hwnd) (This)->lpVtbl->ActivateTab(This,hwnd)
+#define ITaskbarList_SetActiveAlt(This,hwnd) (This)->lpVtbl->SetActiveAlt(This,hwnd)
+#endif
+#endif
+  HRESULT WINAPI ITaskbarList_HrInit_Proxy(ITaskbarList *This);
+  void __RPC_STUB ITaskbarList_HrInit_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ITaskbarList_AddTab_Proxy(ITaskbarList *This,HWND hwnd);
+  void __RPC_STUB ITaskbarList_AddTab_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ITaskbarList_DeleteTab_Proxy(ITaskbarList *This,HWND hwnd);
+  void __RPC_STUB ITaskbarList_DeleteTab_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ITaskbarList_ActivateTab_Proxy(ITaskbarList *This,HWND hwnd);
+  void __RPC_STUB ITaskbarList_ActivateTab_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ITaskbarList_SetActiveAlt_Proxy(ITaskbarList *This,HWND hwnd);
+  void __RPC_STUB ITaskbarList_SetActiveAlt_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __ITaskbarList2_INTERFACE_DEFINED__
+#define __ITaskbarList2_INTERFACE_DEFINED__
+  DEFINE_GUID(IID_ITaskbarList2,0x602D4995L,0xB13A,0x429b,0xA6,0x6E,0x19,0x35,0xE4,0x4F,0x43,0x17);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct ITaskbarList2 : public ITaskbarList {
+  public:
+    virtual HRESULT WINAPI MarkFullscreenWindow(HWND hwnd,WINBOOL fFullscreen) = 0;
+  };
+#else
+  typedef struct ITaskbarList2Vtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(ITaskbarList2 *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(ITaskbarList2 *This);
+      ULONG (WINAPI *Release)(ITaskbarList2 *This);
+      HRESULT (WINAPI *HrInit)(ITaskbarList2 *This);
+      HRESULT (WINAPI *AddTab)(ITaskbarList2 *This,HWND hwnd);
+      HRESULT (WINAPI *DeleteTab)(ITaskbarList2 *This,HWND hwnd);
+      HRESULT (WINAPI *ActivateTab)(ITaskbarList2 *This,HWND hwnd);
+      HRESULT (WINAPI *SetActiveAlt)(ITaskbarList2 *This,HWND hwnd);
+      HRESULT (WINAPI *MarkFullscreenWindow)(ITaskbarList2 *This,HWND hwnd,WINBOOL fFullscreen);
+    END_INTERFACE
+  } ITaskbarList2Vtbl;
+  struct ITaskbarList2 {
+    CONST_VTBL struct ITaskbarList2Vtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define ITaskbarList2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITaskbarList2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITaskbarList2_Release(This) (This)->lpVtbl->Release(This)
+#define ITaskbarList2_HrInit(This) (This)->lpVtbl->HrInit(This)
+#define ITaskbarList2_AddTab(This,hwnd) (This)->lpVtbl->AddTab(This,hwnd)
+#define ITaskbarList2_DeleteTab(This,hwnd) (This)->lpVtbl->DeleteTab(This,hwnd)
+#define ITaskbarList2_ActivateTab(This,hwnd) (This)->lpVtbl->ActivateTab(This,hwnd)
+#define ITaskbarList2_SetActiveAlt(This,hwnd) (This)->lpVtbl->SetActiveAlt(This,hwnd)
+#define ITaskbarList2_MarkFullscreenWindow(This,hwnd,fFullscreen) (This)->lpVtbl->MarkFullscreenWindow(This,hwnd,fFullscreen)
+#endif
+#endif
+  HRESULT WINAPI ITaskbarList2_MarkFullscreenWindow_Proxy(ITaskbarList2 *This,HWND hwnd,WINBOOL fFullscreen);
+  void __RPC_STUB ITaskbarList2_MarkFullscreenWindow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifdef MIDL_PASS
+typedef IUnknown *HIMAGELIST;
+#endif
+
+typedef enum THUMBBUTTONFLAGS {
+    THBF_ENABLED = 0x0,
+    THBF_DISABLED = 0x1,
+    THBF_DISMISSONCLICK = 0x2,
+    THBF_NOBACKGROUND = 0x4,
+    THBF_HIDDEN = 0x8,
+    THBF_NONINTERACTIVE = 0x10
+} THUMBBUTTONFLAGS;
+DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONFLAGS)
+
+typedef enum THUMBBUTTONMASK {
+    THB_BITMAP = 0x1,
+    THB_ICON = 0x2,
+    THB_TOOLTIP = 0x4,
+    THB_FLAGS = 0x8
+} THUMBBUTTONMASK;
+DEFINE_ENUM_FLAG_OPERATORS(THUMBBUTTONMASK)
+
+#include <pshpack8.h>
+typedef struct THUMBBUTTON {
+    THUMBBUTTONMASK dwMask;
+    UINT iId;
+    UINT iBitmap;
+    HICON hIcon;
+    WCHAR szTip[260];
+    THUMBBUTTONFLAGS dwFlags;
+} THUMBBUTTON;
+typedef struct THUMBBUTTON *LPTHUMBBUTTON;
+#include <poppack.h>
+
+#define THBN_CLICKED 0x1800
+
+/*****************************************************************************
+ * ITaskbarList3 interface
+ */
+#ifndef __ITaskbarList3_INTERFACE_DEFINED__
+#define __ITaskbarList3_INTERFACE_DEFINED__
+
+typedef enum TBPFLAG {
+    TBPF_NOPROGRESS = 0x0,
+    TBPF_INDETERMINATE = 0x1,
+    TBPF_NORMAL = 0x2,
+    TBPF_ERROR = 0x4,
+    TBPF_PAUSED = 0x8
+} TBPFLAG;
+DEFINE_ENUM_FLAG_OPERATORS(TBPFLAG)
+
+DEFINE_GUID(IID_ITaskbarList3, 0xea1afb91, 0x9e28, 0x4b86, 0x90,0xe9, 0x9e,0x9f,0x8a,0x5e,0xef,0xaf);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ITaskbarList3 : public ITaskbarList2
+{
+    virtual HRESULT STDMETHODCALLTYPE SetProgressValue(
+        HWND hwnd,
+        ULONGLONG ullCompleted,
+        ULONGLONG ullTotal) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetProgressState(
+        HWND hwnd,
+        TBPFLAG tbpFlags) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RegisterTab(
+        HWND hwndTab,
+        HWND hwndMDI) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE UnregisterTab(
+        HWND hwndTab) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTabOrder(
+        HWND hwndTab,
+        HWND hwndInsertBefore) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTabActive(
+        HWND hwndTab,
+        HWND hwndMDI,
+        DWORD dwReserved) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ThumbBarAddButtons(
+        HWND hwnd,
+        UINT cButtons,
+        LPTHUMBBUTTON pButton) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ThumbBarUpdateButtons(
+        HWND hwnd,
+        UINT cButtons,
+        LPTHUMBBUTTON pButton) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ThumbBarSetImageList(
+        HWND hwnd,
+        HIMAGELIST himl) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetOverlayIcon(
+        HWND hwnd,
+        HICON hIcon,
+        LPCWSTR pszDescription) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetThumbnailTooltip(
+        HWND hwnd,
+        LPCWSTR pszTip) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetThumbnailClip(
+        HWND hwnd,
+        RECT *prcClip) = 0;
+
+};
+#else
+typedef struct ITaskbarList3Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITaskbarList3* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITaskbarList3* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITaskbarList3* This);
+
+    /*** ITaskbarList methods ***/
+    HRESULT (STDMETHODCALLTYPE *HrInit)(
+        ITaskbarList3* This);
+
+    HRESULT (STDMETHODCALLTYPE *AddTab)(
+        ITaskbarList3* This,
+        HWND hwnd);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteTab)(
+        ITaskbarList3* This,
+        HWND hwnd);
+
+    HRESULT (STDMETHODCALLTYPE *ActivateTab)(
+        ITaskbarList3* This,
+        HWND hwnd);
+
+    HRESULT (STDMETHODCALLTYPE *SetActiveAlt)(
+        ITaskbarList3* This,
+        HWND hwnd);
+
+    /*** ITaskbarList2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *MarkFullscreenWindow)(
+        ITaskbarList3* This,
+        HWND hwnd,
+        BOOL fullscreen);
+
+    /*** ITaskbarList3 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetProgressValue)(
+        ITaskbarList3* This,
+        HWND hwnd,
+        ULONGLONG ullCompleted,
+        ULONGLONG ullTotal);
+
+    HRESULT (STDMETHODCALLTYPE *SetProgressState)(
+        ITaskbarList3* This,
+        HWND hwnd,
+        TBPFLAG tbpFlags);
+
+    HRESULT (STDMETHODCALLTYPE *RegisterTab)(
+        ITaskbarList3* This,
+        HWND hwndTab,
+        HWND hwndMDI);
+
+    HRESULT (STDMETHODCALLTYPE *UnregisterTab)(
+        ITaskbarList3* This,
+        HWND hwndTab);
+
+    HRESULT (STDMETHODCALLTYPE *SetTabOrder)(
+        ITaskbarList3* This,
+        HWND hwndTab,
+        HWND hwndInsertBefore);
+
+    HRESULT (STDMETHODCALLTYPE *SetTabActive)(
+        ITaskbarList3* This,
+        HWND hwndTab,
+        HWND hwndMDI,
+        DWORD dwReserved);
+
+    HRESULT (STDMETHODCALLTYPE *ThumbBarAddButtons)(
+        ITaskbarList3* This,
+        HWND hwnd,
+        UINT cButtons,
+        LPTHUMBBUTTON pButton);
+
+    HRESULT (STDMETHODCALLTYPE *ThumbBarUpdateButtons)(
+        ITaskbarList3* This,
+        HWND hwnd,
+        UINT cButtons,
+        LPTHUMBBUTTON pButton);
+
+    HRESULT (STDMETHODCALLTYPE *ThumbBarSetImageList)(
+        ITaskbarList3* This,
+        HWND hwnd,
+        HIMAGELIST himl);
+
+    HRESULT (STDMETHODCALLTYPE *SetOverlayIcon)(
+        ITaskbarList3* This,
+        HWND hwnd,
+        HICON hIcon,
+        LPCWSTR pszDescription);
+
+    HRESULT (STDMETHODCALLTYPE *SetThumbnailTooltip)(
+        ITaskbarList3* This,
+        HWND hwnd,
+        LPCWSTR pszTip);
+
+    HRESULT (STDMETHODCALLTYPE *SetThumbnailClip)(
+        ITaskbarList3* This,
+        HWND hwnd,
+        RECT *prcClip);
+
+    END_INTERFACE
+} ITaskbarList3Vtbl;
+interface ITaskbarList3 {
+    CONST_VTBL ITaskbarList3Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ITaskbarList3_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITaskbarList3_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITaskbarList3_Release(This) (This)->lpVtbl->Release(This)
+/*** ITaskbarList methods ***/
+#define ITaskbarList3_HrInit(This) (This)->lpVtbl->HrInit(This)
+#define ITaskbarList3_AddTab(This,hwnd) (This)->lpVtbl->AddTab(This,hwnd)
+#define ITaskbarList3_DeleteTab(This,hwnd) (This)->lpVtbl->DeleteTab(This,hwnd)
+#define ITaskbarList3_ActivateTab(This,hwnd) (This)->lpVtbl->ActivateTab(This,hwnd)
+#define ITaskbarList3_SetActiveAlt(This,hwnd) (This)->lpVtbl->SetActiveAlt(This,hwnd)
+/*** ITaskbarList2 methods ***/
+#define ITaskbarList3_MarkFullscreenWindow(This,hwnd,fullscreen) (This)->lpVtbl->MarkFullscreenWindow(This,hwnd,fullscreen)
+/*** ITaskbarList3 methods ***/
+#define ITaskbarList3_SetProgressValue(This,hwnd,ullCompleted,ullTotal) (This)->lpVtbl->SetProgressValue(This,hwnd,ullCompleted,ullTotal)
+#define ITaskbarList3_SetProgressState(This,hwnd,tbpFlags) (This)->lpVtbl->SetProgressState(This,hwnd,tbpFlags)
+#define ITaskbarList3_RegisterTab(This,hwndTab,hwndMDI) (This)->lpVtbl->RegisterTab(This,hwndTab,hwndMDI)
+#define ITaskbarList3_UnregisterTab(This,hwndTab) (This)->lpVtbl->UnregisterTab(This,hwndTab)
+#define ITaskbarList3_SetTabOrder(This,hwndTab,hwndInsertBefore) (This)->lpVtbl->SetTabOrder(This,hwndTab,hwndInsertBefore)
+#define ITaskbarList3_SetTabActive(This,hwndTab,hwndMDI,dwReserved) (This)->lpVtbl->SetTabActive(This,hwndTab,hwndMDI,dwReserved)
+#define ITaskbarList3_ThumbBarAddButtons(This,hwnd,cButtons,pButton) (This)->lpVtbl->ThumbBarAddButtons(This,hwnd,cButtons,pButton)
+#define ITaskbarList3_ThumbBarUpdateButtons(This,hwnd,cButtons,pButton) (This)->lpVtbl->ThumbBarUpdateButtons(This,hwnd,cButtons,pButton)
+#define ITaskbarList3_ThumbBarSetImageList(This,hwnd,himl) (This)->lpVtbl->ThumbBarSetImageList(This,hwnd,himl)
+#define ITaskbarList3_SetOverlayIcon(This,hwnd,hIcon,pszDescription) (This)->lpVtbl->SetOverlayIcon(This,hwnd,hIcon,pszDescription)
+#define ITaskbarList3_SetThumbnailTooltip(This,hwnd,pszTip) (This)->lpVtbl->SetThumbnailTooltip(This,hwnd,pszTip)
+#define ITaskbarList3_SetThumbnailClip(This,hwnd,prcClip) (This)->lpVtbl->SetThumbnailClip(This,hwnd,prcClip)
+#endif
+
+#endif
+#endif  /* __ITaskbarList3_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ITaskbarList4 interface
+ */
+#ifndef __ITaskbarList4_INTERFACE_DEFINED__
+#define __ITaskbarList4_INTERFACE_DEFINED__
+
+typedef enum STPFLAG {
+    STPF_NONE = 0x0,
+    STPF_USEAPPTHUMBNAILALWAYS = 0x1,
+    STPF_USEAPPTHUMBNAILWHENACTIVE = 0x2,
+    STPF_USEAPPPEEKALWAYS = 0x4,
+    STPF_USEAPPPEEKWHENACTIVE = 0x8
+} STPFLAG;
+DEFINE_ENUM_FLAG_OPERATORS(STPFLAG)
+
+DEFINE_GUID(IID_ITaskbarList4, 0xc43dc798, 0x95d1, 0x4bea, 0x90,0x30, 0xbb,0x99,0xe2,0x98,0x3a,0x1a);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ITaskbarList4 : public ITaskbarList3
+{
+    virtual HRESULT STDMETHODCALLTYPE SetTabProperties(
+        HWND hwndTab,
+        STPFLAG stpFlags) = 0;
+
+};
+#else
+typedef struct ITaskbarList4Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ITaskbarList4* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ITaskbarList4* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ITaskbarList4* This);
+
+    /*** ITaskbarList methods ***/
+    HRESULT (STDMETHODCALLTYPE *HrInit)(
+        ITaskbarList4* This);
+
+    HRESULT (STDMETHODCALLTYPE *AddTab)(
+        ITaskbarList4* This,
+        HWND hwnd);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteTab)(
+        ITaskbarList4* This,
+        HWND hwnd);
+
+    HRESULT (STDMETHODCALLTYPE *ActivateTab)(
+        ITaskbarList4* This,
+        HWND hwnd);
+
+    HRESULT (STDMETHODCALLTYPE *SetActiveAlt)(
+        ITaskbarList4* This,
+        HWND hwnd);
+
+    /*** ITaskbarList2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *MarkFullscreenWindow)(
+        ITaskbarList4* This,
+        HWND hwnd,
+        BOOL fullscreen);
+
+    /*** ITaskbarList3 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetProgressValue)(
+        ITaskbarList4* This,
+        HWND hwnd,
+        ULONGLONG ullCompleted,
+        ULONGLONG ullTotal);
+
+    HRESULT (STDMETHODCALLTYPE *SetProgressState)(
+        ITaskbarList4* This,
+        HWND hwnd,
+        TBPFLAG tbpFlags);
+
+    HRESULT (STDMETHODCALLTYPE *RegisterTab)(
+        ITaskbarList4* This,
+        HWND hwndTab,
+        HWND hwndMDI);
+
+    HRESULT (STDMETHODCALLTYPE *UnregisterTab)(
+        ITaskbarList4* This,
+        HWND hwndTab);
+
+    HRESULT (STDMETHODCALLTYPE *SetTabOrder)(
+        ITaskbarList4* This,
+        HWND hwndTab,
+        HWND hwndInsertBefore);
+
+    HRESULT (STDMETHODCALLTYPE *SetTabActive)(
+        ITaskbarList4* This,
+        HWND hwndTab,
+        HWND hwndMDI,
+        DWORD dwReserved);
+
+    HRESULT (STDMETHODCALLTYPE *ThumbBarAddButtons)(
+        ITaskbarList4* This,
+        HWND hwnd,
+        UINT cButtons,
+        LPTHUMBBUTTON pButton);
+
+    HRESULT (STDMETHODCALLTYPE *ThumbBarUpdateButtons)(
+        ITaskbarList4* This,
+        HWND hwnd,
+        UINT cButtons,
+        LPTHUMBBUTTON pButton);
+
+    HRESULT (STDMETHODCALLTYPE *ThumbBarSetImageList)(
+        ITaskbarList4* This,
+        HWND hwnd,
+        HIMAGELIST himl);
+
+    HRESULT (STDMETHODCALLTYPE *SetOverlayIcon)(
+        ITaskbarList4* This,
+        HWND hwnd,
+        HICON hIcon,
+        LPCWSTR pszDescription);
+
+    HRESULT (STDMETHODCALLTYPE *SetThumbnailTooltip)(
+        ITaskbarList4* This,
+        HWND hwnd,
+        LPCWSTR pszTip);
+
+    HRESULT (STDMETHODCALLTYPE *SetThumbnailClip)(
+        ITaskbarList4* This,
+        HWND hwnd,
+        RECT *prcClip);
+
+    /*** ITaskbarList4 methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetTabProperties)(
+        ITaskbarList4* This,
+        HWND hwndTab,
+        STPFLAG stpFlags);
+
+    END_INTERFACE
+} ITaskbarList4Vtbl;
+interface ITaskbarList4 {
+    CONST_VTBL ITaskbarList4Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ITaskbarList4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ITaskbarList4_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ITaskbarList4_Release(This) (This)->lpVtbl->Release(This)
+/*** ITaskbarList methods ***/
+#define ITaskbarList4_HrInit(This) (This)->lpVtbl->HrInit(This)
+#define ITaskbarList4_AddTab(This,hwnd) (This)->lpVtbl->AddTab(This,hwnd)
+#define ITaskbarList4_DeleteTab(This,hwnd) (This)->lpVtbl->DeleteTab(This,hwnd)
+#define ITaskbarList4_ActivateTab(This,hwnd) (This)->lpVtbl->ActivateTab(This,hwnd)
+#define ITaskbarList4_SetActiveAlt(This,hwnd) (This)->lpVtbl->SetActiveAlt(This,hwnd)
+/*** ITaskbarList2 methods ***/
+#define ITaskbarList4_MarkFullscreenWindow(This,hwnd,fullscreen) (This)->lpVtbl->MarkFullscreenWindow(This,hwnd,fullscreen)
+/*** ITaskbarList3 methods ***/
+#define ITaskbarList4_SetProgressValue(This,hwnd,ullCompleted,ullTotal) (This)->lpVtbl->SetProgressValue(This,hwnd,ullCompleted,ullTotal)
+#define ITaskbarList4_SetProgressState(This,hwnd,tbpFlags) (This)->lpVtbl->SetProgressState(This,hwnd,tbpFlags)
+#define ITaskbarList4_RegisterTab(This,hwndTab,hwndMDI) (This)->lpVtbl->RegisterTab(This,hwndTab,hwndMDI)
+#define ITaskbarList4_UnregisterTab(This,hwndTab) (This)->lpVtbl->UnregisterTab(This,hwndTab)
+#define ITaskbarList4_SetTabOrder(This,hwndTab,hwndInsertBefore) (This)->lpVtbl->SetTabOrder(This,hwndTab,hwndInsertBefore)
+#define ITaskbarList4_SetTabActive(This,hwndTab,hwndMDI,dwReserved) (This)->lpVtbl->SetTabActive(This,hwndTab,hwndMDI,dwReserved)
+#define ITaskbarList4_ThumbBarAddButtons(This,hwnd,cButtons,pButton) (This)->lpVtbl->ThumbBarAddButtons(This,hwnd,cButtons,pButton)
+#define ITaskbarList4_ThumbBarUpdateButtons(This,hwnd,cButtons,pButton) (This)->lpVtbl->ThumbBarUpdateButtons(This,hwnd,cButtons,pButton)
+#define ITaskbarList4_ThumbBarSetImageList(This,hwnd,himl) (This)->lpVtbl->ThumbBarSetImageList(This,hwnd,himl)
+#define ITaskbarList4_SetOverlayIcon(This,hwnd,hIcon,pszDescription) (This)->lpVtbl->SetOverlayIcon(This,hwnd,hIcon,pszDescription)
+#define ITaskbarList4_SetThumbnailTooltip(This,hwnd,pszTip) (This)->lpVtbl->SetThumbnailTooltip(This,hwnd,pszTip)
+#define ITaskbarList4_SetThumbnailClip(This,hwnd,prcClip) (This)->lpVtbl->SetThumbnailClip(This,hwnd,prcClip)
+/*** ITaskbarList4 methods ***/
+#define ITaskbarList4_SetTabProperties(This,hwndTab,stpFlags) (This)->lpVtbl->SetTabProperties(This,hwndTab,stpFlags)
+#endif
+
+#endif
+#endif  /* __ITaskbarList4_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IApplicationAssociationRegistrationUI interface
+ */
+#ifndef __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__
+#define __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IApplicationAssociationRegistrationUI, 0x1f76a169, 0xf994, 0x40ac, 0x8f, 0xc8, 0x09, 0x59, 0xe8, 0x87, 0x47, 0x10);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IApplicationAssociationRegistrationUI : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE LaunchAdvancedAssociationUI(
+        LPCWSTR pszAppRegName) = 0;
+
+};
+#else
+typedef struct IApplicationAssociationRegistrationUIVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IApplicationAssociationRegistrationUI* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IApplicationAssociationRegistrationUI* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IApplicationAssociationRegistrationUI* This);
+
+    /*** IApplicationAssociationRegistrationUI methods ***/
+    HRESULT (STDMETHODCALLTYPE *LaunchAdvancedAssociationUI)(
+        IApplicationAssociationRegistrationUI* This,
+        LPCWSTR pszAppRegName);
+
+    END_INTERFACE
+} IApplicationAssociationRegistrationUIVtbl;
+interface IApplicationAssociationRegistrationUI {
+    CONST_VTBL IApplicationAssociationRegistrationUIVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IApplicationAssociationRegistrationUI_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IApplicationAssociationRegistrationUI_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IApplicationAssociationRegistrationUI_Release(This) (This)->lpVtbl->Release(This)
+/*** IApplicationAssociationRegistrationUI methods ***/
+#define IApplicationAssociationRegistrationUI_LaunchAdvancedAssociationUI(This) (This)->lpVtbl->LaunchAdvancedAssociationUI(This)
+#endif
+
+#endif
+#endif  /* __IApplicationAssociationRegistrationUI_INTERFACE_DEFINED__ */
+
+#ifndef __ICDBurn_INTERFACE_DEFINED__
+#define __ICDBurn_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_ICDBurn;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct ICDBurn : public IUnknown {
+  public:
+    virtual HRESULT WINAPI GetRecorderDriveLetter(LPWSTR pszDrive,UINT cch) = 0;
+    virtual HRESULT WINAPI Burn(HWND hwnd) = 0;
+    virtual HRESULT WINAPI HasRecordableDrive(WINBOOL *pfHasRecorder) = 0;
+  };
+#else
+  typedef struct ICDBurnVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(ICDBurn *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(ICDBurn *This);
+      ULONG (WINAPI *Release)(ICDBurn *This);
+      HRESULT (WINAPI *GetRecorderDriveLetter)(ICDBurn *This,LPWSTR pszDrive,UINT cch);
+      HRESULT (WINAPI *Burn)(ICDBurn *This,HWND hwnd);
+      HRESULT (WINAPI *HasRecordableDrive)(ICDBurn *This,WINBOOL *pfHasRecorder);
+    END_INTERFACE
+  } ICDBurnVtbl;
+  struct ICDBurn {
+    CONST_VTBL struct ICDBurnVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define ICDBurn_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ICDBurn_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ICDBurn_Release(This) (This)->lpVtbl->Release(This)
+#define ICDBurn_GetRecorderDriveLetter(This,pszDrive,cch) (This)->lpVtbl->GetRecorderDriveLetter(This,pszDrive,cch)
+#define ICDBurn_Burn(This,hwnd) (This)->lpVtbl->Burn(This,hwnd)
+#define ICDBurn_HasRecordableDrive(This,pfHasRecorder) (This)->lpVtbl->HasRecordableDrive(This,pfHasRecorder)
+#endif
+#endif
+  HRESULT WINAPI ICDBurn_GetRecorderDriveLetter_Proxy(ICDBurn *This,LPWSTR pszDrive,UINT cch);
+  void __RPC_STUB ICDBurn_GetRecorderDriveLetter_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ICDBurn_Burn_Proxy(ICDBurn *This,HWND hwnd);
+  void __RPC_STUB ICDBurn_Burn_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI ICDBurn_HasRecordableDrive_Proxy(ICDBurn *This,WINBOOL *pfHasRecorder);
+  void __RPC_STUB ICDBurn_HasRecordableDrive_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#define IDD_WIZEXTN_FIRST 0x5000
+#define IDD_WIZEXTN_LAST 0x5100
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0234_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0234_v0_0_s_ifspec;
+#ifndef __IWizardSite_INTERFACE_DEFINED__
+#define __IWizardSite_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IWizardSite;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IWizardSite : public IUnknown {
+  public:
+    virtual HRESULT WINAPI GetPreviousPage(HPROPSHEETPAGE *phpage) = 0;
+    virtual HRESULT WINAPI GetNextPage(HPROPSHEETPAGE *phpage) = 0;
+    virtual HRESULT WINAPI GetCancelledPage(HPROPSHEETPAGE *phpage) = 0;
+  };
+#else
+  typedef struct IWizardSiteVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IWizardSite *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IWizardSite *This);
+      ULONG (WINAPI *Release)(IWizardSite *This);
+      HRESULT (WINAPI *GetPreviousPage)(IWizardSite *This,HPROPSHEETPAGE *phpage);
+      HRESULT (WINAPI *GetNextPage)(IWizardSite *This,HPROPSHEETPAGE *phpage);
+      HRESULT (WINAPI *GetCancelledPage)(IWizardSite *This,HPROPSHEETPAGE *phpage);
+    END_INTERFACE
+  } IWizardSiteVtbl;
+  struct IWizardSite {
+    CONST_VTBL struct IWizardSiteVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IWizardSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWizardSite_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWizardSite_Release(This) (This)->lpVtbl->Release(This)
+#define IWizardSite_GetPreviousPage(This,phpage) (This)->lpVtbl->GetPreviousPage(This,phpage)
+#define IWizardSite_GetNextPage(This,phpage) (This)->lpVtbl->GetNextPage(This,phpage)
+#define IWizardSite_GetCancelledPage(This,phpage) (This)->lpVtbl->GetCancelledPage(This,phpage)
+#endif
+#endif
+  HRESULT WINAPI IWizardSite_GetPreviousPage_Proxy(IWizardSite *This,HPROPSHEETPAGE *phpage);
+  void __RPC_STUB IWizardSite_GetPreviousPage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IWizardSite_GetNextPage_Proxy(IWizardSite *This,HPROPSHEETPAGE *phpage);
+  void __RPC_STUB IWizardSite_GetNextPage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IWizardSite_GetCancelledPage_Proxy(IWizardSite *This,HPROPSHEETPAGE *phpage);
+  void __RPC_STUB IWizardSite_GetCancelledPage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IWizardExtension_INTERFACE_DEFINED__
+#define __IWizardExtension_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IWizardExtension;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IWizardExtension : public IUnknown {
+  public:
+    virtual HRESULT WINAPI AddPages(HPROPSHEETPAGE *aPages,UINT cPages,UINT *pnPagesAdded) = 0;
+    virtual HRESULT WINAPI GetFirstPage(HPROPSHEETPAGE *phpage) = 0;
+    virtual HRESULT WINAPI GetLastPage(HPROPSHEETPAGE *phpage) = 0;
+  };
+#else
+  typedef struct IWizardExtensionVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IWizardExtension *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IWizardExtension *This);
+      ULONG (WINAPI *Release)(IWizardExtension *This);
+      HRESULT (WINAPI *AddPages)(IWizardExtension *This,HPROPSHEETPAGE *aPages,UINT cPages,UINT *pnPagesAdded);
+      HRESULT (WINAPI *GetFirstPage)(IWizardExtension *This,HPROPSHEETPAGE *phpage);
+      HRESULT (WINAPI *GetLastPage)(IWizardExtension *This,HPROPSHEETPAGE *phpage);
+    END_INTERFACE
+  } IWizardExtensionVtbl;
+  struct IWizardExtension {
+    CONST_VTBL struct IWizardExtensionVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IWizardExtension_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWizardExtension_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWizardExtension_Release(This) (This)->lpVtbl->Release(This)
+#define IWizardExtension_AddPages(This,aPages,cPages,pnPagesAdded) (This)->lpVtbl->AddPages(This,aPages,cPages,pnPagesAdded)
+#define IWizardExtension_GetFirstPage(This,phpage) (This)->lpVtbl->GetFirstPage(This,phpage)
+#define IWizardExtension_GetLastPage(This,phpage) (This)->lpVtbl->GetLastPage(This,phpage)
+#endif
+#endif
+  HRESULT WINAPI IWizardExtension_AddPages_Proxy(IWizardExtension *This,HPROPSHEETPAGE *aPages,UINT cPages,UINT *pnPagesAdded);
+  void __RPC_STUB IWizardExtension_AddPages_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IWizardExtension_GetFirstPage_Proxy(IWizardExtension *This,HPROPSHEETPAGE *phpage);
+  void __RPC_STUB IWizardExtension_GetFirstPage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IWizardExtension_GetLastPage_Proxy(IWizardExtension *This,HPROPSHEETPAGE *phpage);
+  void __RPC_STUB IWizardExtension_GetLastPage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IWebWizardExtension_INTERFACE_DEFINED__
+#define __IWebWizardExtension_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IWebWizardExtension;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IWebWizardExtension : public IWizardExtension {
+  public:
+    virtual HRESULT WINAPI SetInitialURL(LPCWSTR pszURL) = 0;
+    virtual HRESULT WINAPI SetErrorURL(LPCWSTR pszErrorURL) = 0;
+  };
+#else
+  typedef struct IWebWizardExtensionVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IWebWizardExtension *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IWebWizardExtension *This);
+      ULONG (WINAPI *Release)(IWebWizardExtension *This);
+      HRESULT (WINAPI *AddPages)(IWebWizardExtension *This,HPROPSHEETPAGE *aPages,UINT cPages,UINT *pnPagesAdded);
+      HRESULT (WINAPI *GetFirstPage)(IWebWizardExtension *This,HPROPSHEETPAGE *phpage);
+      HRESULT (WINAPI *GetLastPage)(IWebWizardExtension *This,HPROPSHEETPAGE *phpage);
+      HRESULT (WINAPI *SetInitialURL)(IWebWizardExtension *This,LPCWSTR pszURL);
+      HRESULT (WINAPI *SetErrorURL)(IWebWizardExtension *This,LPCWSTR pszErrorURL);
+    END_INTERFACE
+  } IWebWizardExtensionVtbl;
+  struct IWebWizardExtension {
+    CONST_VTBL struct IWebWizardExtensionVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IWebWizardExtension_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IWebWizardExtension_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IWebWizardExtension_Release(This) (This)->lpVtbl->Release(This)
+#define IWebWizardExtension_AddPages(This,aPages,cPages,pnPagesAdded) (This)->lpVtbl->AddPages(This,aPages,cPages,pnPagesAdded)
+#define IWebWizardExtension_GetFirstPage(This,phpage) (This)->lpVtbl->GetFirstPage(This,phpage)
+#define IWebWizardExtension_GetLastPage(This,phpage) (This)->lpVtbl->GetLastPage(This,phpage)
+#define IWebWizardExtension_SetInitialURL(This,pszURL) (This)->lpVtbl->SetInitialURL(This,pszURL)
+#define IWebWizardExtension_SetErrorURL(This,pszErrorURL) (This)->lpVtbl->SetErrorURL(This,pszErrorURL)
+#endif
+#endif
+  HRESULT WINAPI IWebWizardExtension_SetInitialURL_Proxy(IWebWizardExtension *This,LPCWSTR pszURL);
+  void __RPC_STUB IWebWizardExtension_SetInitialURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IWebWizardExtension_SetErrorURL_Proxy(IWebWizardExtension *This,LPCWSTR pszErrorURL);
+  void __RPC_STUB IWebWizardExtension_SetErrorURL_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#define SID_WebWizardHost IID_IWebWizardExtension
+#define SHPWHF_NORECOMPRESS 0x00000001
+#define SHPWHF_NONETPLACECREATE 0x00000002
+#define SHPWHF_NOFILESELECTOR 0x00000004
+#define SHPWHF_VALIDATEVIAWEBFOLDERS 0x00010000
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0237_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0237_v0_0_s_ifspec;
+#ifndef __IPublishingWizard_INTERFACE_DEFINED__
+#define __IPublishingWizard_INTERFACE_DEFINED__
+
+  EXTERN_C const IID IID_IPublishingWizard;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IPublishingWizard : public IWizardExtension {
+  public:
+    virtual HRESULT WINAPI Initialize(IDataObject *pdo,DWORD dwOptions,LPCWSTR pszServiceProvider) = 0;
+    virtual HRESULT WINAPI GetTransferManifest(HRESULT *phrFromTransfer,IXMLDOMDocument **pdocManifest) = 0;
+  };
+#else
+  typedef struct IPublishingWizardVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IPublishingWizard *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IPublishingWizard *This);
+      ULONG (WINAPI *Release)(IPublishingWizard *This);
+      HRESULT (WINAPI *AddPages)(IPublishingWizard *This,HPROPSHEETPAGE *aPages,UINT cPages,UINT *pnPagesAdded);
+      HRESULT (WINAPI *GetFirstPage)(IPublishingWizard *This,HPROPSHEETPAGE *phpage);
+      HRESULT (WINAPI *GetLastPage)(IPublishingWizard *This,HPROPSHEETPAGE *phpage);
+      HRESULT (WINAPI *Initialize)(IPublishingWizard *This,IDataObject *pdo,DWORD dwOptions,LPCWSTR pszServiceProvider);
+      HRESULT (WINAPI *GetTransferManifest)(IPublishingWizard *This,HRESULT *phrFromTransfer,IXMLDOMDocument **pdocManifest);
+    END_INTERFACE
+  } IPublishingWizardVtbl;
+  struct IPublishingWizard {
+    CONST_VTBL struct IPublishingWizardVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IPublishingWizard_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPublishingWizard_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPublishingWizard_Release(This) (This)->lpVtbl->Release(This)
+#define IPublishingWizard_AddPages(This,aPages,cPages,pnPagesAdded) (This)->lpVtbl->AddPages(This,aPages,cPages,pnPagesAdded)
+#define IPublishingWizard_GetFirstPage(This,phpage) (This)->lpVtbl->GetFirstPage(This,phpage)
+#define IPublishingWizard_GetLastPage(This,phpage) (This)->lpVtbl->GetLastPage(This,phpage)
+#define IPublishingWizard_Initialize(This,pdo,dwOptions,pszServiceProvider) (This)->lpVtbl->Initialize(This,pdo,dwOptions,pszServiceProvider)
+#define IPublishingWizard_GetTransferManifest(This,phrFromTransfer,pdocManifest) (This)->lpVtbl->GetTransferManifest(This,phrFromTransfer,pdocManifest)
+#endif
+#endif
+  HRESULT WINAPI IPublishingWizard_Initialize_Proxy(IPublishingWizard *This,IDataObject *pdo,DWORD dwOptions,LPCWSTR pszServiceProvider);
+  void __RPC_STUB IPublishingWizard_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IPublishingWizard_GetTransferManifest_Proxy(IPublishingWizard *This,HRESULT *phrFromTransfer,IXMLDOMDocument **pdocManifest);
+  void __RPC_STUB IPublishingWizard_GetTransferManifest_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IFolderViewHost_INTERFACE_DEFINED__
+#define __IFolderViewHost_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IFolderViewHost;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IFolderViewHost : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Initialize(HWND hwndParent,IDataObject *pdo,RECT *prc) = 0;
+  };
+#else
+  typedef struct IFolderViewHostVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IFolderViewHost *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IFolderViewHost *This);
+      ULONG (WINAPI *Release)(IFolderViewHost *This);
+      HRESULT (WINAPI *Initialize)(IFolderViewHost *This,HWND hwndParent,IDataObject *pdo,RECT *prc);
+    END_INTERFACE
+  } IFolderViewHostVtbl;
+  struct IFolderViewHost {
+    CONST_VTBL struct IFolderViewHostVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IFolderViewHost_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFolderViewHost_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFolderViewHost_Release(This) (This)->lpVtbl->Release(This)
+#define IFolderViewHost_Initialize(This,hwndParent,pdo,prc) (This)->lpVtbl->Initialize(This,hwndParent,pdo,prc)
+#endif
+#endif
+  HRESULT WINAPI IFolderViewHost_Initialize_Proxy(IFolderViewHost *This,HWND hwndParent,IDataObject *pdo,RECT *prc);
+  void __RPC_STUB IFolderViewHost_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#define ACDD_VISIBLE 0x0001
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0239_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0239_v0_0_s_ifspec;
+#ifndef __IAutoCompleteDropDown_INTERFACE_DEFINED__
+#define __IAutoCompleteDropDown_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IAutoCompleteDropDown;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IAutoCompleteDropDown : public IUnknown {
+  public:
+    virtual HRESULT WINAPI GetDropDownStatus(DWORD *pdwFlags,LPWSTR *ppwszString) = 0;
+    virtual HRESULT WINAPI ResetEnumerator(void) = 0;
+  };
+#else
+  typedef struct IAutoCompleteDropDownVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IAutoCompleteDropDown *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IAutoCompleteDropDown *This);
+      ULONG (WINAPI *Release)(IAutoCompleteDropDown *This);
+      HRESULT (WINAPI *GetDropDownStatus)(IAutoCompleteDropDown *This,DWORD *pdwFlags,LPWSTR *ppwszString);
+      HRESULT (WINAPI *ResetEnumerator)(IAutoCompleteDropDown *This);
+    END_INTERFACE
+  } IAutoCompleteDropDownVtbl;
+  struct IAutoCompleteDropDown {
+    CONST_VTBL struct IAutoCompleteDropDownVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IAutoCompleteDropDown_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAutoCompleteDropDown_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAutoCompleteDropDown_Release(This) (This)->lpVtbl->Release(This)
+#define IAutoCompleteDropDown_GetDropDownStatus(This,pdwFlags,ppwszString) (This)->lpVtbl->GetDropDownStatus(This,pdwFlags,ppwszString)
+#define IAutoCompleteDropDown_ResetEnumerator(This) (This)->lpVtbl->ResetEnumerator(This)
+#endif
+#endif
+  HRESULT WINAPI IAutoCompleteDropDown_GetDropDownStatus_Proxy(IAutoCompleteDropDown *This,DWORD *pdwFlags,LPWSTR *ppwszString);
+  void __RPC_STUB IAutoCompleteDropDown_GetDropDownStatus_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IAutoCompleteDropDown_ResetEnumerator_Proxy(IAutoCompleteDropDown *This);
+  void __RPC_STUB IAutoCompleteDropDown_ResetEnumerator_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#define PPW_LAUNCHEDBYUSER 0x00000001
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0240_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0240_v0_0_s_ifspec;
+
+/*****************************************************************************
+ * IShellItemArray interface
+ */
+#ifndef __IShellItemArray_INTERFACE_DEFINED__
+#define __IShellItemArray_INTERFACE_DEFINED__
+
+typedef enum SIATTRIBFLAGS {
+    SIATTRIBFLAGS_AND = 0x1,
+    SIATTRIBFLAGS_OR = 0x2,
+    SIATTRIBFLAGS_APPCOMPAT = 0x3,
+    SIATTRIBFLAGS_MASK = 0x3,
+    SIATTRIBFLAGS_ALLITEMS = 0x4000
+} SIATTRIBFLAGS;
+DEFINE_ENUM_FLAG_OPERATORS(SIATTRIBFLAGS)
+DEFINE_GUID(IID_IShellItemArray, 0xb63ea76d, 0x1f85, 0x456f, 0xa1,0x9c, 0x48,0x15,0x9e,0xfa,0x85,0x8b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("b63ea76d-1f85-456f-a19c-48159efa858b")
+IShellItemArray : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE BindToHandler(
+        IBindCtx *pbc,
+        REFGUID bhid,
+        REFIID riid,
+        void **ppvOut) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPropertyStore(
+        GETPROPERTYSTOREFLAGS flags,
+        REFIID riid,
+        void **ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPropertyDescriptionList(
+        REFPROPERTYKEY keyType,
+        REFIID riid,
+        void **ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAttributes(
+        SIATTRIBFLAGS AttribFlags,
+        SFGAOF sfgaoMask,
+        SFGAOF *psfgaoAttribs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCount(
+        DWORD *pdwNumItems) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetItemAt(
+        DWORD dwIndex,
+        IShellItem **ppsi) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE EnumItems(
+        IEnumShellItems **ppenumShellItems) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IShellItemArray, 0xb63ea76d, 0x1f85, 0x456f, 0xa1,0x9c, 0x48,0x15,0x9e,0xfa,0x85,0x8b)
+#endif
+#else
+typedef struct IShellItemArrayVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IShellItemArray* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IShellItemArray* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IShellItemArray* This);
+    /*** IShellItemArray methods ***/
+    HRESULT (STDMETHODCALLTYPE *BindToHandler)(
+        IShellItemArray* This,
+        IBindCtx *pbc,
+        REFGUID bhid,
+        REFIID riid,
+        void **ppvOut);
+
+    HRESULT (STDMETHODCALLTYPE *GetPropertyStore)(
+        IShellItemArray* This,
+        GETPROPERTYSTOREFLAGS flags,
+        REFIID riid,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *GetPropertyDescriptionList)(
+        IShellItemArray* This,
+        REFPROPERTYKEY keyType,
+        REFIID riid,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *GetAttributes)(
+        IShellItemArray* This,
+        SIATTRIBFLAGS AttribFlags,
+        SFGAOF sfgaoMask,
+        SFGAOF *psfgaoAttribs);
+
+    HRESULT (STDMETHODCALLTYPE *GetCount)(
+        IShellItemArray* This,
+        DWORD *pdwNumItems);
+
+    HRESULT (STDMETHODCALLTYPE *GetItemAt)(
+        IShellItemArray* This,
+        DWORD dwIndex,
+        IShellItem **ppsi);
+
+    HRESULT (STDMETHODCALLTYPE *EnumItems)(
+        IShellItemArray* This,
+        IEnumShellItems **ppenumShellItems);
+
+    END_INTERFACE
+} IShellItemArrayVtbl;
+interface IShellItemArray {
+    CONST_VTBL IShellItemArrayVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IShellItemArray_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellItemArray_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellItemArray_Release(This) (This)->lpVtbl->Release(This)
+/*** IShellItemArray methods ***/
+#define IShellItemArray_BindToHandler(This,pbc,bhid,riid,ppvOut) (This)->lpVtbl->BindToHandler(This,pbc,bhid,riid,ppvOut)
+#define IShellItemArray_GetPropertyStore(This,flags,riid,ppv) (This)->lpVtbl->GetPropertyStore(This,flags,riid,ppv)
+#define IShellItemArray_GetPropertyDescriptionList(This,keyType,riid,ppv) (This)->lpVtbl->GetPropertyDescriptionList(This,keyType,riid,ppv)
+#define IShellItemArray_GetAttributes(This,AttribFlags,sfgaoMask,psfgaoAttribs) (This)->lpVtbl->GetAttributes(This,AttribFlags,sfgaoMask,psfgaoAttribs)
+#define IShellItemArray_GetCount(This,pdwNumItems) (This)->lpVtbl->GetCount(This,pdwNumItems)
+#define IShellItemArray_GetItemAt(This,dwIndex,ppsi) (This)->lpVtbl->GetItemAt(This,dwIndex,ppsi)
+#define IShellItemArray_EnumItems(This,ppenumShellItems) (This)->lpVtbl->EnumItems(This,ppenumShellItems)
+#endif
+
+#endif
+
+#endif  /* __IShellItemArray_INTERFACE_DEFINED__ */
+
+#ifndef __IModalWindow_INTERFACE_DEFINED__
+#define __IModalWindow_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IModalWindow;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IModalWindow : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Show(HWND hwndParent) = 0;
+  };
+#else
+  typedef struct IModalWindowVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IModalWindow *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IModalWindow *This);
+      ULONG (WINAPI *Release)(IModalWindow *This);
+      HRESULT (WINAPI *Show)(IModalWindow *This,HWND hwndParent);
+    END_INTERFACE
+  } IModalWindowVtbl;
+  struct IModalWindow {
+    CONST_VTBL struct IModalWindowVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IModalWindow_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IModalWindow_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IModalWindow_Release(This) (This)->lpVtbl->Release(This)
+#define IModalWindow_Show(This,hwndParent) (This)->lpVtbl->Show(This,hwndParent)
+#endif
+#endif
+  HRESULT WINAPI IModalWindow_Show_Proxy(IModalWindow *This,HWND hwndParent);
+  void __RPC_STUB IModalWindow_Show_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+typedef enum FDAP {
+    FDAP_BOTTOM = 0,
+    FDAP_TOP = 1
+} FDAP;
+
+/*****************************************************************************
+ * IFileDialog interface
+ */
+#ifndef __IFileDialog_INTERFACE_DEFINED__
+#define __IFileDialog_INTERFACE_DEFINED__
+
+enum _FILEOPENDIALOGOPTIONS {
+    FOS_OVERWRITEPROMPT = 0x2,
+    FOS_STRICTFILETYPES = 0x4,
+    FOS_NOCHANGEDIR = 0x8,
+    FOS_PICKFOLDERS = 0x20,
+    FOS_FORCEFILESYSTEM = 0x40,
+    FOS_ALLNONSTORAGEITEMS = 0x80,
+    FOS_NOVALIDATE = 0x100,
+    FOS_ALLOWMULTISELECT = 0x200,
+    FOS_PATHMUSTEXIST = 0x800,
+    FOS_FILEMUSTEXIST = 0x1000,
+    FOS_CREATEPROMPT = 0x2000,
+    FOS_SHAREAWARE = 0x4000,
+    FOS_NOREADONLYRETURN = 0x8000,
+    FOS_NOTESTFILECREATE = 0x10000,
+    FOS_HIDEMRUPLACES = 0x20000,
+    FOS_HIDEPINNEDPLACES = 0x40000,
+    FOS_NODEREFERENCELINKS = 0x100000,
+    FOS_DONTADDTORECENT = 0x2000000,
+    FOS_FORCESHOWHIDDEN = 0x10000000,
+    FOS_DEFAULTNOMINIMODE = 0x20000000,
+    FOS_FORCEPREVIEWPANEON = 0x40000000
+};
+
+typedef DWORD FILEOPENDIALOGOPTIONS;
+DEFINE_GUID(IID_IFileDialog, 0x42f85136, 0xdb7e, 0x439c, 0x85,0xf1, 0xe4,0x07,0x5d,0x13,0x5f,0xc8);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("42f85136-db7e-439c-85f1-e4075d135fc8")
+IFileDialog : public IModalWindow
+{
+    virtual HRESULT STDMETHODCALLTYPE SetFileTypes(
+        UINT cFileTypes,
+        const COMDLG_FILTERSPEC *rgFilterSpec) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFileTypeIndex(
+        UINT iFileType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFileTypeIndex(
+        UINT *piFileType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Advise(
+        IFileDialogEvents *pfde,
+        DWORD *pdwCookie) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Unadvise(
+        DWORD dwCookie) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetOptions(
+        FILEOPENDIALOGOPTIONS fos) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetOptions(
+        FILEOPENDIALOGOPTIONS *pfos) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDefaultFolder(
+        IShellItem *psi) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFolder(
+        IShellItem *psi) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFolder(
+        IShellItem **ppsi) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCurrentSelection(
+        IShellItem **ppsi) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFileName(
+        LPCWSTR pszName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFileName(
+        LPWSTR *pszName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetTitle(
+        LPCWSTR pszTitle) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetOkButtonLabel(
+        LPCWSTR pszText) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFileNameLabel(
+        LPCWSTR pszLabel) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetResult(
+        IShellItem **ppsi) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddPlace(
+        IShellItem *psi,
+        FDAP fdap) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDefaultExtension(
+        LPCWSTR pszDefaultExtension) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Close(
+        HRESULT hr) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetClientGuid(
+        REFGUID guid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ClearClientData(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFilter(
+        IShellItemFilter *pFilter) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFileDialog, 0x42f85136, 0xdb7e, 0x439c, 0x85,0xf1, 0xe4,0x07,0x5d,0x13,0x5f,0xc8)
+#endif
+#else
+typedef struct IFileDialogVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFileDialog* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFileDialog* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFileDialog* This);
+
+    /*** IModalWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *Show)(
+        IFileDialog* This,
+        HWND hwndOwner);
+
+    /*** IFileDialog methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetFileTypes)(
+        IFileDialog* This,
+        UINT cFileTypes,
+        const COMDLG_FILTERSPEC *rgFilterSpec);
+    HRESULT (STDMETHODCALLTYPE *SetFileTypeIndex)(
+        IFileDialog* This,
+        UINT iFileType);
+
+    HRESULT (STDMETHODCALLTYPE *GetFileTypeIndex)(
+        IFileDialog* This,
+        UINT *piFileType);
+
+    HRESULT (STDMETHODCALLTYPE *Advise)(
+        IFileDialog* This,
+        IFileDialogEvents *pfde,
+        DWORD *pdwCookie);
+
+    HRESULT (STDMETHODCALLTYPE *Unadvise)(
+        IFileDialog* This,
+        DWORD dwCookie);
+
+    HRESULT (STDMETHODCALLTYPE *SetOptions)(
+        IFileDialog* This,
+        FILEOPENDIALOGOPTIONS fos);
+
+    HRESULT (STDMETHODCALLTYPE *GetOptions)(
+        IFileDialog* This,
+        FILEOPENDIALOGOPTIONS *pfos);
+
+    HRESULT (STDMETHODCALLTYPE *SetDefaultFolder)(
+        IFileDialog* This,
+        IShellItem *psi);
+
+    HRESULT (STDMETHODCALLTYPE *SetFolder)(
+        IFileDialog* This,
+        IShellItem *psi);
+
+    HRESULT (STDMETHODCALLTYPE *GetFolder)(
+        IFileDialog* This,
+        IShellItem **ppsi);
+
+    HRESULT (STDMETHODCALLTYPE *GetCurrentSelection)(
+        IFileDialog* This,
+        IShellItem **ppsi);
+
+    HRESULT (STDMETHODCALLTYPE *SetFileName)(
+        IFileDialog* This,
+        LPCWSTR pszName);
+
+    HRESULT (STDMETHODCALLTYPE *GetFileName)(
+        IFileDialog* This,
+        LPWSTR *pszName);
+
+    HRESULT (STDMETHODCALLTYPE *SetTitle)(
+        IFileDialog* This,
+        LPCWSTR pszTitle);
+
+    HRESULT (STDMETHODCALLTYPE *SetOkButtonLabel)(
+        IFileDialog* This,
+        LPCWSTR pszText);
+
+    HRESULT (STDMETHODCALLTYPE *SetFileNameLabel)(
+        IFileDialog* This,
+        LPCWSTR pszLabel);
+
+    HRESULT (STDMETHODCALLTYPE *GetResult)(
+        IFileDialog* This,
+        IShellItem **ppsi);
+
+    HRESULT (STDMETHODCALLTYPE *AddPlace)(
+        IFileDialog* This,
+        IShellItem *psi,
+        FDAP fdap);
+   HRESULT (STDMETHODCALLTYPE *SetDefaultExtension)(
+        IFileDialog* This,
+        LPCWSTR pszDefaultExtension);
+
+    HRESULT (STDMETHODCALLTYPE *Close)(
+        IFileDialog* This,
+        HRESULT hr);
+
+    HRESULT (STDMETHODCALLTYPE *SetClientGuid)(
+        IFileDialog* This,
+        REFGUID guid);
+
+    HRESULT (STDMETHODCALLTYPE *ClearClientData)(
+        IFileDialog* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetFilter)(
+        IFileDialog* This,
+        IShellItemFilter *pFilter);
+
+    END_INTERFACE
+} IFileDialogVtbl;
+interface IFileDialog {
+    CONST_VTBL IFileDialogVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IFileDialog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFileDialog_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFileDialog_Release(This) (This)->lpVtbl->Release(This)
+/*** IModalWindow methods ***/
+#define IFileDialog_Show(This,hwndOwner) (This)->lpVtbl->Show(This,hwndOwner)
+/*** IFileDialog methods ***/
+#define IFileDialog_SetFileTypes(This,cFileTypes,rgFilterSpec) (This)->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec)
+#define IFileDialog_SetFileTypeIndex(This,iFileType) (This)->lpVtbl->SetFileTypeIndex(This,iFileType)
+#define IFileDialog_GetFileTypeIndex(This,piFileType) (This)->lpVtbl->GetFileTypeIndex(This,piFileType)
+#define IFileDialog_Advise(This,pfde,pdwCookie) (This)->lpVtbl->Advise(This,pfde,pdwCookie)
+#define IFileDialog_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)
+#define IFileDialog_SetOptions(This,fos) (This)->lpVtbl->SetOptions(This,fos)
+#define IFileDialog_GetOptions(This,pfos) (This)->lpVtbl->GetOptions(This,pfos)
+#define IFileDialog_SetDefaultFolder(This,psi) (This)->lpVtbl->SetDefaultFolder(This,psi)
+#define IFileDialog_SetFolder(This,psi) (This)->lpVtbl->SetFolder(This,psi)
+#define IFileDialog_GetFolder(This,ppsi) (This)->lpVtbl->GetFolder(This,ppsi)
+#define IFileDialog_GetCurrentSelection(This,ppsi) (This)->lpVtbl->GetCurrentSelection(This,ppsi)
+#define IFileDialog_SetFileName(This,pszName) (This)->lpVtbl->SetFileName(This,pszName)
+#define IFileDialog_GetFileName(This,pszName) (This)->lpVtbl->GetFileName(This,pszName)
+#define IFileDialog_SetTitle(This,pszTitle) (This)->lpVtbl->SetTitle(This,pszTitle)
+#define IFileDialog_SetOkButtonLabel(This,pszText) (This)->lpVtbl->SetOkButtonLabel(This,pszText)
+#define IFileDialog_SetFileNameLabel(This,pszLabel) (This)->lpVtbl->SetFileNameLabel(This,pszLabel)
+#define IFileDialog_GetResult(This,ppsi) (This)->lpVtbl->GetResult(This,ppsi)
+#define IFileDialog_AddPlace(This,psi,fdap) (This)->lpVtbl->AddPlace(This,psi,fdap)
+#define IFileDialog_SetDefaultExtension(This,pszDefaultExtension) (This)->lpVtbl->SetDefaultExtension(This,pszDefaultExtension)
+#define IFileDialog_Close(This,hr) (This)->lpVtbl->Close(This,hr)
+#define IFileDialog_SetClientGuid(This,guid) (This)->lpVtbl->SetClientGuid(This,guid)
+#define IFileDialog_ClearClientData(This) (This)->lpVtbl->ClearClientData(This)
+#define IFileDialog_SetFilter(This,pFilter) (This)->lpVtbl->SetFilter(This,pFilter)
+#endif
+
+#endif
+
+#endif  /* __IFileDialog_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFileSaveDialog interface
+ */
+#ifndef __IFileSaveDialog_INTERFACE_DEFINED__
+#define __IFileSaveDialog_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFileSaveDialog, 0x84bccd23, 0x5fde, 0x4cdb, 0xae,0xa4, 0xaf,0x64,0xb8,0x3d,0x78,0xab);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("84bccd23-5fde-4cdb-aea4-af64b83d78ab")
+IFileSaveDialog : public IFileDialog
+{
+    virtual HRESULT STDMETHODCALLTYPE SetSaveAsItem(
+        IShellItem *psi) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetProperties(
+        IPropertyStore *pStore) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetCollectedProperties(
+        IPropertyDescriptionList *pList,
+        BOOL fAppendDefault) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetProperties(
+        IPropertyStore **ppStore) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ApplyProperties(
+        IShellItem *psi,
+        IPropertyStore *pStore,
+        HWND hwnd,
+        IFileOperationProgressSink *pSink) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFileSaveDialog, 0x84bccd23, 0x5fde, 0x4cdb, 0xae,0xa4, 0xaf,0x64,0xb8,0x3d,0x78,0xab)
+#endif
+#else
+typedef struct IFileSaveDialogVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFileSaveDialog* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFileSaveDialog* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFileSaveDialog* This);
+
+    /*** IModalWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *Show)(
+        IFileSaveDialog* This,
+        HWND hwndOwner);
+
+    /*** IFileDialog methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetFileTypes)(
+        IFileSaveDialog* This,
+        UINT cFileTypes,
+        const COMDLG_FILTERSPEC *rgFilterSpec);
+
+    HRESULT (STDMETHODCALLTYPE *SetFileTypeIndex)(
+        IFileSaveDialog* This,
+        UINT iFileType);
+
+    HRESULT (STDMETHODCALLTYPE *GetFileTypeIndex)(
+        IFileSaveDialog* This,
+        UINT *piFileType);
+
+    HRESULT (STDMETHODCALLTYPE *Advise)(
+        IFileSaveDialog* This,
+        IFileDialogEvents *pfde,
+        DWORD *pdwCookie);
+
+    HRESULT (STDMETHODCALLTYPE *Unadvise)(
+        IFileSaveDialog* This,
+        DWORD dwCookie);
+
+    HRESULT (STDMETHODCALLTYPE *SetOptions)(
+        IFileSaveDialog* This,
+        FILEOPENDIALOGOPTIONS fos);
+
+    HRESULT (STDMETHODCALLTYPE *GetOptions)(
+        IFileSaveDialog* This,
+        FILEOPENDIALOGOPTIONS *pfos);
+
+    HRESULT (STDMETHODCALLTYPE *SetDefaultFolder)(
+        IFileSaveDialog* This,
+        IShellItem *psi);
+
+    HRESULT (STDMETHODCALLTYPE *SetFolder)(
+        IFileSaveDialog* This,
+        IShellItem *psi);
+
+    HRESULT (STDMETHODCALLTYPE *GetFolder)(
+        IFileSaveDialog* This,
+        IShellItem **ppsi);
+
+    HRESULT (STDMETHODCALLTYPE *GetCurrentSelection)(
+        IFileSaveDialog* This,
+        IShellItem **ppsi);
+
+    HRESULT (STDMETHODCALLTYPE *SetFileName)(
+        IFileSaveDialog* This,
+        LPCWSTR pszName);
+
+    HRESULT (STDMETHODCALLTYPE *GetFileName)(
+        IFileSaveDialog* This,
+        LPWSTR *pszName);
+
+    HRESULT (STDMETHODCALLTYPE *SetTitle)(
+        IFileSaveDialog* This,
+        LPCWSTR pszTitle);
+
+    HRESULT (STDMETHODCALLTYPE *SetOkButtonLabel)(
+        IFileSaveDialog* This,
+        LPCWSTR pszText);
+
+    HRESULT (STDMETHODCALLTYPE *SetFileNameLabel)(
+        IFileSaveDialog* This,
+        LPCWSTR pszLabel);
+
+    HRESULT (STDMETHODCALLTYPE *GetResult)(
+        IFileSaveDialog* This,
+        IShellItem **ppsi);
+
+    HRESULT (STDMETHODCALLTYPE *AddPlace)(
+        IFileSaveDialog* This,
+        IShellItem *psi,
+        FDAP fdap);
+
+    HRESULT (STDMETHODCALLTYPE *SetDefaultExtension)(
+        IFileSaveDialog* This,
+        LPCWSTR pszDefaultExtension);
+
+    HRESULT (STDMETHODCALLTYPE *Close)(
+        IFileSaveDialog* This,
+        HRESULT hr);
+
+   HRESULT (STDMETHODCALLTYPE *SetClientGuid)(
+        IFileSaveDialog* This,
+        REFGUID guid);
+
+    HRESULT (STDMETHODCALLTYPE *ClearClientData)(
+        IFileSaveDialog* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetFilter)(
+        IFileSaveDialog* This,
+        IShellItemFilter *pFilter);
+
+    /*** IFileSaveDialog methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetSaveAsItem)(
+        IFileSaveDialog* This,
+        IShellItem *psi);
+
+    HRESULT (STDMETHODCALLTYPE *SetProperties)(
+        IFileSaveDialog* This,
+        IPropertyStore *pStore);
+
+    HRESULT (STDMETHODCALLTYPE *SetCollectedProperties)(
+        IFileSaveDialog* This,
+        IPropertyDescriptionList *pList,
+        BOOL fAppendDefault);
+
+    HRESULT (STDMETHODCALLTYPE *GetProperties)(
+        IFileSaveDialog* This,
+        IPropertyStore **ppStore);
+
+    HRESULT (STDMETHODCALLTYPE *ApplyProperties)(
+        IFileSaveDialog* This,
+        IShellItem *psi,
+        IPropertyStore *pStore,
+        HWND hwnd,
+        IFileOperationProgressSink *pSink);
+
+    END_INTERFACE
+} IFileSaveDialogVtbl;
+interface IFileSaveDialog {
+    CONST_VTBL IFileSaveDialogVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IFileSaveDialog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFileSaveDialog_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFileSaveDialog_Release(This) (This)->lpVtbl->Release(This)
+/*** IModalWindow methods ***/
+#define IFileSaveDialog_Show(This,hwndOwner) (This)->lpVtbl->Show(This,hwndOwner)
+/*** IFileDialog methods ***/
+#define IFileSaveDialog_SetFileTypes(This,cFileTypes,rgFilterSpec) (This)->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec)
+#define IFileSaveDialog_SetFileTypeIndex(This,iFileType) (This)->lpVtbl->SetFileTypeIndex(This,iFileType)
+#define IFileSaveDialog_GetFileTypeIndex(This,piFileType) (This)->lpVtbl->GetFileTypeIndex(This,piFileType)
+#define IFileSaveDialog_Advise(This,pfde,pdwCookie) (This)->lpVtbl->Advise(This,pfde,pdwCookie)
+#define IFileSaveDialog_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)
+#define IFileSaveDialog_SetOptions(This,fos) (This)->lpVtbl->SetOptions(This,fos)
+#define IFileSaveDialog_GetOptions(This,pfos) (This)->lpVtbl->GetOptions(This,pfos)
+#define IFileSaveDialog_SetDefaultFolder(This,psi) (This)->lpVtbl->SetDefaultFolder(This,psi)
+#define IFileSaveDialog_SetFolder(This,psi) (This)->lpVtbl->SetFolder(This,psi)
+#define IFileSaveDialog_GetFolder(This,ppsi) (This)->lpVtbl->GetFolder(This,ppsi)
+#define IFileSaveDialog_GetCurrentSelection(This,ppsi) (This)->lpVtbl->GetCurrentSelection(This,ppsi)
+#define IFileSaveDialog_SetFileName(This,pszName) (This)->lpVtbl->SetFileName(This,pszName)
+#define IFileSaveDialog_GetFileName(This,pszName) (This)->lpVtbl->GetFileName(This,pszName)
+#define IFileSaveDialog_SetTitle(This,pszTitle) (This)->lpVtbl->SetTitle(This,pszTitle)
+#define IFileSaveDialog_SetOkButtonLabel(This,pszText) (This)->lpVtbl->SetOkButtonLabel(This,pszText)
+#define IFileSaveDialog_SetFileNameLabel(This,pszLabel) (This)->lpVtbl->SetFileNameLabel(This,pszLabel)
+#define IFileSaveDialog_GetResult(This,ppsi) (This)->lpVtbl->GetResult(This,ppsi)
+#define IFileSaveDialog_AddPlace(This,psi,fdap) (This)->lpVtbl->AddPlace(This,psi,fdap)
+#define IFileSaveDialog_SetDefaultExtension(This,pszDefaultExtension) (This)->lpVtbl->SetDefaultExtension(This,pszDefaultExtension)
+#define IFileSaveDialog_Close(This,hr) (This)->lpVtbl->Close(This,hr)
+#define IFileSaveDialog_SetClientGuid(This,guid) (This)->lpVtbl->SetClientGuid(This,guid)
+#define IFileSaveDialog_ClearClientData(This) (This)->lpVtbl->ClearClientData(This)
+#define IFileSaveDialog_SetFilter(This,pFilter) (This)->lpVtbl->SetFilter(This,pFilter)
+/*** IFileSaveDialog methods ***/
+#define IFileSaveDialog_SetSaveAsItem(This,psi) (This)->lpVtbl->SetSaveAsItem(This,psi)
+#define IFileSaveDialog_SetProperties(This,pStore) (This)->lpVtbl->SetProperties(This,pStore)
+#define IFileSaveDialog_SetCollectedProperties(This,pList,fAppendDefault) (This)->lpVtbl->SetCollectedProperties(This,pList,fAppendDefault)
+#define IFileSaveDialog_GetProperties(This,ppStore) (This)->lpVtbl->GetProperties(This,ppStore)
+#define IFileSaveDialog_ApplyProperties(This,psi,pStore,hwnd,pSink) (This)->lpVtbl->ApplyProperties(This,psi,pStore,hwnd,pSink)
+#endif
+
+#endif
+
+#endif  /* __IFileSaveDialog_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IFileOpenDialog interface
+ */
+#ifndef __IFileOpenDialog_INTERFACE_DEFINED__
+#define __IFileOpenDialog_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFileOpenDialog, 0xd57c7288, 0xd4ad, 0x4768, 0xbe,0x02, 0x9d,0x96,0x95,0x32,0xd9,0x60);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("d57c7288-d4ad-4768-be02-9d969532d960")
+IFileOpenDialog : public IFileDialog
+{
+    virtual HRESULT STDMETHODCALLTYPE GetResults(
+        IShellItemArray **ppenum) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetSelectedItems(
+        IShellItemArray **ppsai) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFileOpenDialog, 0xd57c7288, 0xd4ad, 0x4768, 0xbe,0x02, 0x9d,0x96,0x95,0x32,0xd9,0x60)
+#endif
+#else
+typedef struct IFileOpenDialogVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFileOpenDialog* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFileOpenDialog* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFileOpenDialog* This);
+
+    /*** IModalWindow methods ***/
+    HRESULT (STDMETHODCALLTYPE *Show)(
+        IFileOpenDialog* This,
+        HWND hwndOwner);
+
+    /*** IFileDialog methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetFileTypes)(
+        IFileOpenDialog* This,
+        UINT cFileTypes,
+        const COMDLG_FILTERSPEC *rgFilterSpec);
+
+    HRESULT (STDMETHODCALLTYPE *SetFileTypeIndex)(
+        IFileOpenDialog* This,
+        UINT iFileType);
+
+    HRESULT (STDMETHODCALLTYPE *GetFileTypeIndex)(
+        IFileOpenDialog* This,
+        UINT *piFileType);
+
+    HRESULT (STDMETHODCALLTYPE *Advise)(
+        IFileOpenDialog* This,
+        IFileDialogEvents *pfde,
+        DWORD *pdwCookie);
+
+    HRESULT (STDMETHODCALLTYPE *Unadvise)(
+        IFileOpenDialog* This,
+        DWORD dwCookie);
+
+    HRESULT (STDMETHODCALLTYPE *SetOptions)(
+        IFileOpenDialog* This,
+        FILEOPENDIALOGOPTIONS fos);
+
+    HRESULT (STDMETHODCALLTYPE *GetOptions)(
+        IFileOpenDialog* This,
+        FILEOPENDIALOGOPTIONS *pfos);
+
+    HRESULT (STDMETHODCALLTYPE *SetDefaultFolder)(
+        IFileOpenDialog* This,
+        IShellItem *psi);
+
+    HRESULT (STDMETHODCALLTYPE *SetFolder)(
+        IFileOpenDialog* This,
+        IShellItem *psi);
+
+    HRESULT (STDMETHODCALLTYPE *GetFolder)(
+        IFileOpenDialog* This,
+        IShellItem **ppsi);
+
+    HRESULT (STDMETHODCALLTYPE *GetCurrentSelection)(
+        IFileOpenDialog* This,
+        IShellItem **ppsi);
+
+    HRESULT (STDMETHODCALLTYPE *SetFileName)(
+        IFileOpenDialog* This,
+        LPCWSTR pszName);
+
+    HRESULT (STDMETHODCALLTYPE *GetFileName)(
+        IFileOpenDialog* This,
+        LPWSTR *pszName);
+
+    HRESULT (STDMETHODCALLTYPE *SetTitle)(
+        IFileOpenDialog* This,
+        LPCWSTR pszTitle);
+
+    HRESULT (STDMETHODCALLTYPE *SetOkButtonLabel)(
+        IFileOpenDialog* This,
+        LPCWSTR pszText);
+
+    HRESULT (STDMETHODCALLTYPE *SetFileNameLabel)(
+        IFileOpenDialog* This,
+        LPCWSTR pszLabel);
+
+    HRESULT (STDMETHODCALLTYPE *GetResult)(
+        IFileOpenDialog* This,
+        IShellItem **ppsi);
+
+    HRESULT (STDMETHODCALLTYPE *AddPlace)(
+        IFileOpenDialog* This,
+        IShellItem *psi,
+        FDAP fdap);
+
+    HRESULT (STDMETHODCALLTYPE *SetDefaultExtension)(
+        IFileOpenDialog* This,
+        LPCWSTR pszDefaultExtension);
+
+    HRESULT (STDMETHODCALLTYPE *Close)(
+        IFileOpenDialog* This,
+        HRESULT hr);
+
+    HRESULT (STDMETHODCALLTYPE *SetClientGuid)(
+        IFileOpenDialog* This,
+        REFGUID guid);
+
+    HRESULT (STDMETHODCALLTYPE *ClearClientData)(
+        IFileOpenDialog* This);
+
+    HRESULT (STDMETHODCALLTYPE *SetFilter)(
+        IFileOpenDialog* This,
+        IShellItemFilter *pFilter);
+
+    /*** IFileOpenDialog methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetResults)(
+        IFileOpenDialog* This,
+        IShellItemArray **ppenum);
+
+    HRESULT (STDMETHODCALLTYPE *GetSelectedItems)(
+        IFileOpenDialog* This,
+        IShellItemArray **ppsai);
+
+    END_INTERFACE
+} IFileOpenDialogVtbl;
+interface IFileOpenDialog {
+    CONST_VTBL IFileOpenDialogVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IFileOpenDialog_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFileOpenDialog_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFileOpenDialog_Release(This) (This)->lpVtbl->Release(This)
+/*** IModalWindow methods ***/
+#define IFileOpenDialog_Show(This,hwndOwner) (This)->lpVtbl->Show(This,hwndOwner)
+/*** IFileDialog methods ***/
+#define IFileOpenDialog_SetFileTypes(This,cFileTypes,rgFilterSpec) (This)->lpVtbl->SetFileTypes(This,cFileTypes,rgFilterSpec)
+#define IFileOpenDialog_SetFileTypeIndex(This,iFileType) (This)->lpVtbl->SetFileTypeIndex(This,iFileType)
+#define IFileOpenDialog_GetFileTypeIndex(This,piFileType) (This)->lpVtbl->GetFileTypeIndex(This,piFileType)
+#define IFileOpenDialog_Advise(This,pfde,pdwCookie) (This)->lpVtbl->Advise(This,pfde,pdwCookie)
+#define IFileOpenDialog_Unadvise(This,dwCookie) (This)->lpVtbl->Unadvise(This,dwCookie)
+#define IFileOpenDialog_SetOptions(This,fos) (This)->lpVtbl->SetOptions(This,fos)
+#define IFileOpenDialog_GetOptions(This,pfos) (This)->lpVtbl->GetOptions(This,pfos)
+#define IFileOpenDialog_SetDefaultFolder(This,psi) (This)->lpVtbl->SetDefaultFolder(This,psi)
+#define IFileOpenDialog_SetFolder(This,psi) (This)->lpVtbl->SetFolder(This,psi)
+#define IFileOpenDialog_GetFolder(This,ppsi) (This)->lpVtbl->GetFolder(This,ppsi)
+#define IFileOpenDialog_GetCurrentSelection(This,ppsi) (This)->lpVtbl->GetCurrentSelection(This,ppsi)
+#define IFileOpenDialog_SetFileName(This,pszName) (This)->lpVtbl->SetFileName(This,pszName)
+#define IFileOpenDialog_GetFileName(This,pszName) (This)->lpVtbl->GetFileName(This,pszName)
+#define IFileOpenDialog_SetTitle(This,pszTitle) (This)->lpVtbl->SetTitle(This,pszTitle)
+#define IFileOpenDialog_SetOkButtonLabel(This,pszText) (This)->lpVtbl->SetOkButtonLabel(This,pszText)
+#define IFileOpenDialog_SetFileNameLabel(This,pszLabel) (This)->lpVtbl->SetFileNameLabel(This,pszLabel)
+#define IFileOpenDialog_GetResult(This,ppsi) (This)->lpVtbl->GetResult(This,ppsi)
+#define IFileOpenDialog_AddPlace(This,psi,fdap) (This)->lpVtbl->AddPlace(This,psi,fdap)
+#define IFileOpenDialog_SetDefaultExtension(This,pszDefaultExtension) (This)->lpVtbl->SetDefaultExtension(This,pszDefaultExtension)
+#define IFileOpenDialog_Close(This,hr) (This)->lpVtbl->Close(This,hr)
+#define IFileOpenDialog_SetClientGuid(This,guid) (This)->lpVtbl->SetClientGuid(This,guid)
+#define IFileOpenDialog_ClearClientData(This) (This)->lpVtbl->ClearClientData(This)
+#define IFileOpenDialog_SetFilter(This,pFilter) (This)->lpVtbl->SetFilter(This,pFilter)
+/*** IFileOpenDialog methods ***/
+#define IFileOpenDialog_GetResults(This,ppenum) (This)->lpVtbl->GetResults(This,ppenum)
+#define IFileOpenDialog_GetSelectedItems(This,ppsai) (This)->lpVtbl->GetSelectedItems(This,ppsai)
+#endif
+
+#endif
+
+#endif  /* __IFileOpenDialog_INTERFACE_DEFINED__ */
+
+#ifndef __IPassportWizard_INTERFACE_DEFINED__
+#define __IPassportWizard_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IPassportWizard;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IPassportWizard : public IModalWindow {
+  public:
+    virtual HRESULT WINAPI SetOptions(DWORD dwOptions) = 0;
+  };
+#else
+  typedef struct IPassportWizardVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IPassportWizard *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IPassportWizard *This);
+      ULONG (WINAPI *Release)(IPassportWizard *This);
+      HRESULT (WINAPI *Show)(IPassportWizard *This,HWND hwndParent);
+      HRESULT (WINAPI *SetOptions)(IPassportWizard *This,DWORD dwOptions);
+    END_INTERFACE
+  } IPassportWizardVtbl;
+  struct IPassportWizard {
+    CONST_VTBL struct IPassportWizardVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IPassportWizard_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IPassportWizard_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IPassportWizard_Release(This) (This)->lpVtbl->Release(This)
+#define IPassportWizard_Show(This,hwndParent) (This)->lpVtbl->Show(This,hwndParent)
+#define IPassportWizard_SetOptions(This,dwOptions) (This)->lpVtbl->SetOptions(This,dwOptions)
+#endif
+#endif
+  HRESULT WINAPI IPassportWizard_SetOptions_Proxy(IPassportWizard *This,DWORD dwOptions);
+  void __RPC_STUB IPassportWizard_SetOptions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#define PROPSTR_EXTENSIONCOMPLETIONSTATE L"ExtensionCompletionState"
+
+  enum __MIDL___MIDL_itf_shobjidl_0241_0001 {
+    CDBE_RET_DEFAULT = 0,CDBE_RET_DONTRUNOTHEREXTS = 0x1,CDBE_RET_STOPWIZARD = 0x2
+  };
+#define SID_CDWizardHost IID_ICDBurnExt
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0241_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0241_v0_0_s_ifspec;
+#ifndef __ICDBurnExt_INTERFACE_DEFINED__
+#define __ICDBurnExt_INTERFACE_DEFINED__
+  enum __MIDL_ICDBurnExt_0002 {
+    CDBE_TYPE_MUSIC = 0x1,CDBE_TYPE_DATA = 0x2,CDBE_TYPE_ALL = 0xffffffff
+  };
+
+  EXTERN_C const IID IID_ICDBurnExt;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct ICDBurnExt : public IUnknown {
+  public:
+    virtual HRESULT WINAPI GetSupportedActionTypes(DWORD *pdwActions) = 0;
+  };
+#else
+  typedef struct ICDBurnExtVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(ICDBurnExt *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(ICDBurnExt *This);
+      ULONG (WINAPI *Release)(ICDBurnExt *This);
+      HRESULT (WINAPI *GetSupportedActionTypes)(ICDBurnExt *This,DWORD *pdwActions);
+    END_INTERFACE
+  } ICDBurnExtVtbl;
+  struct ICDBurnExt {
+    CONST_VTBL struct ICDBurnExtVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define ICDBurnExt_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ICDBurnExt_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ICDBurnExt_Release(This) (This)->lpVtbl->Release(This)
+#define ICDBurnExt_GetSupportedActionTypes(This,pdwActions) (This)->lpVtbl->GetSupportedActionTypes(This,pdwActions)
+#endif
+#endif
+  HRESULT WINAPI ICDBurnExt_GetSupportedActionTypes_Proxy(ICDBurnExt *This,DWORD *pdwActions);
+  void __RPC_STUB ICDBurnExt_GetSupportedActionTypes_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  typedef void (*PFDVENUMREADYBALLBACK)(LPVOID pvData);
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0242_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0242_v0_0_s_ifspec;
+#ifndef __IDVGetEnum_INTERFACE_DEFINED__
+#define __IDVGetEnum_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IDVGetEnum;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IDVGetEnum : public IUnknown {
+  public:
+    virtual HRESULT WINAPI SetEnumReadyCallback(PFDVENUMREADYBALLBACK pfn,LPVOID pvData) = 0;
+    virtual HRESULT WINAPI CreateEnumIDListFromContents(LPCITEMIDLIST pidlFolder,DWORD dwEnumFlags,IEnumIDList **ppEnumIDList) = 0;
+  };
+#else
+  typedef struct IDVGetEnumVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IDVGetEnum *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IDVGetEnum *This);
+      ULONG (WINAPI *Release)(IDVGetEnum *This);
+      HRESULT (WINAPI *SetEnumReadyCallback)(IDVGetEnum *This,PFDVENUMREADYBALLBACK pfn,LPVOID pvData);
+      HRESULT (WINAPI *CreateEnumIDListFromContents)(IDVGetEnum *This,LPCITEMIDLIST pidlFolder,DWORD dwEnumFlags,IEnumIDList **ppEnumIDList);
+    END_INTERFACE
+  } IDVGetEnumVtbl;
+  struct IDVGetEnum {
+    CONST_VTBL struct IDVGetEnumVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IDVGetEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDVGetEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDVGetEnum_Release(This) (This)->lpVtbl->Release(This)
+#define IDVGetEnum_SetEnumReadyCallback(This,pfn,pvData) (This)->lpVtbl->SetEnumReadyCallback(This,pfn,pvData)
+#define IDVGetEnum_CreateEnumIDListFromContents(This,pidlFolder,dwEnumFlags,ppEnumIDList) (This)->lpVtbl->CreateEnumIDListFromContents(This,pidlFolder,dwEnumFlags,ppEnumIDList)
+#endif
+#endif
+  HRESULT WINAPI IDVGetEnum_SetEnumReadyCallback_Proxy(IDVGetEnum *This,PFDVENUMREADYBALLBACK pfn,LPVOID pvData);
+  void __RPC_STUB IDVGetEnum_SetEnumReadyCallback_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IDVGetEnum_CreateEnumIDListFromContents_Proxy(IDVGetEnum *This,LPCITEMIDLIST pidlFolder,DWORD dwEnumFlags,IEnumIDList **ppEnumIDList);
+  void __RPC_STUB IDVGetEnum_CreateEnumIDListFromContents_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IInsertItem_INTERFACE_DEFINED__
+#define __IInsertItem_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IInsertItem;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IInsertItem : public IUnknown {
+  public:
+    virtual HRESULT WINAPI InsertItem(LPCITEMIDLIST pidl) = 0;
+  };
+#else
+  typedef struct IInsertItemVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IInsertItem *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IInsertItem *This);
+      ULONG (WINAPI *Release)(IInsertItem *This);
+      HRESULT (WINAPI *InsertItem)(IInsertItem *This,LPCITEMIDLIST pidl);
+    END_INTERFACE
+  } IInsertItemVtbl;
+  struct IInsertItem {
+    CONST_VTBL struct IInsertItemVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IInsertItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IInsertItem_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IInsertItem_Release(This) (This)->lpVtbl->Release(This)
+#define IInsertItem_InsertItem(This,pidl) (This)->lpVtbl->InsertItem(This,pidl)
+#endif
+#endif
+  HRESULT WINAPI IInsertItem_InsertItem_Proxy(IInsertItem *This,LPCITEMIDLIST pidl);
+  void __RPC_STUB IInsertItem_InsertItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IDeskBar_INTERFACE_DEFINED__
+#define __IDeskBar_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IDeskBar;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IDeskBar : public IOleWindow {
+  public:
+    virtual HRESULT WINAPI SetClient(IUnknown *punkClient) = 0;
+    virtual HRESULT WINAPI GetClient(IUnknown **ppunkClient) = 0;
+    virtual HRESULT WINAPI OnPosRectChangeDB(LPRECT prc) = 0;
+  };
+#else
+  typedef struct IDeskBarVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IDeskBar *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IDeskBar *This);
+      ULONG (WINAPI *Release)(IDeskBar *This);
+      HRESULT (WINAPI *GetWindow)(IDeskBar *This,HWND *phwnd);
+      HRESULT (WINAPI *ContextSensitiveHelp)(IDeskBar *This,WINBOOL fEnterMode);
+      HRESULT (WINAPI *SetClient)(IDeskBar *This,IUnknown *punkClient);
+      HRESULT (WINAPI *GetClient)(IDeskBar *This,IUnknown **ppunkClient);
+      HRESULT (WINAPI *OnPosRectChangeDB)(IDeskBar *This,LPRECT prc);
+    END_INTERFACE
+  } IDeskBarVtbl;
+  struct IDeskBar {
+    CONST_VTBL struct IDeskBarVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IDeskBar_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDeskBar_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDeskBar_Release(This) (This)->lpVtbl->Release(This)
+#define IDeskBar_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
+#define IDeskBar_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
+#define IDeskBar_SetClient(This,punkClient) (This)->lpVtbl->SetClient(This,punkClient)
+#define IDeskBar_GetClient(This,ppunkClient) (This)->lpVtbl->GetClient(This,ppunkClient)
+#define IDeskBar_OnPosRectChangeDB(This,prc) (This)->lpVtbl->OnPosRectChangeDB(This,prc)
+#endif
+#endif
+  HRESULT WINAPI IDeskBar_SetClient_Proxy(IDeskBar *This,IUnknown *punkClient);
+  void __RPC_STUB IDeskBar_SetClient_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IDeskBar_GetClient_Proxy(IDeskBar *This,IUnknown **ppunkClient);
+  void __RPC_STUB IDeskBar_GetClient_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IDeskBar_OnPosRectChangeDB_Proxy(IDeskBar *This,LPRECT prc);
+  void __RPC_STUB IDeskBar_OnPosRectChangeDB_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IMenuBand_INTERFACE_DEFINED__
+#define __IMenuBand_INTERFACE_DEFINED__
+  enum __MIDL_IMenuBand_0001 {
+    MBHANDCID_PIDLSELECT = 0
+  };
+
+  EXTERN_C const IID IID_IMenuBand;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IMenuBand : public IUnknown {
+  public:
+    virtual HRESULT WINAPI IsMenuMessage(MSG *pmsg) = 0;
+    virtual HRESULT WINAPI TranslateMenuMessage(MSG *pmsg,LRESULT *plRet) = 0;
+  };
+#else
+  typedef struct IMenuBandVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IMenuBand *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IMenuBand *This);
+      ULONG (WINAPI *Release)(IMenuBand *This);
+      HRESULT (WINAPI *IsMenuMessage)(IMenuBand *This,MSG *pmsg);
+      HRESULT (WINAPI *TranslateMenuMessage)(IMenuBand *This,MSG *pmsg,LRESULT *plRet);
+    END_INTERFACE
+  } IMenuBandVtbl;
+  struct IMenuBand {
+    CONST_VTBL struct IMenuBandVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IMenuBand_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMenuBand_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMenuBand_Release(This) (This)->lpVtbl->Release(This)
+#define IMenuBand_IsMenuMessage(This,pmsg) (This)->lpVtbl->IsMenuMessage(This,pmsg)
+#define IMenuBand_TranslateMenuMessage(This,pmsg,plRet) (This)->lpVtbl->TranslateMenuMessage(This,pmsg,plRet)
+#endif
+#endif
+  HRESULT WINAPI IMenuBand_IsMenuMessage_Proxy(IMenuBand *This,MSG *pmsg);
+  void __RPC_STUB IMenuBand_IsMenuMessage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IMenuBand_TranslateMenuMessage_Proxy(IMenuBand *This,MSG *pmsg,LRESULT *plRet);
+  void __RPC_STUB IMenuBand_TranslateMenuMessage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IFolderBandPriv_INTERFACE_DEFINED__
+#define __IFolderBandPriv_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IFolderBandPriv;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IFolderBandPriv : public IUnknown {
+  public:
+    virtual HRESULT WINAPI SetCascade(WINBOOL f) = 0;
+    virtual HRESULT WINAPI SetAccelerators(WINBOOL f) = 0;
+    virtual HRESULT WINAPI SetNoIcons(WINBOOL f) = 0;
+    virtual HRESULT WINAPI SetNoText(WINBOOL f) = 0;
+  };
+#else
+  typedef struct IFolderBandPrivVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IFolderBandPriv *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IFolderBandPriv *This);
+      ULONG (WINAPI *Release)(IFolderBandPriv *This);
+      HRESULT (WINAPI *SetCascade)(IFolderBandPriv *This,WINBOOL f);
+      HRESULT (WINAPI *SetAccelerators)(IFolderBandPriv *This,WINBOOL f);
+      HRESULT (WINAPI *SetNoIcons)(IFolderBandPriv *This,WINBOOL f);
+      HRESULT (WINAPI *SetNoText)(IFolderBandPriv *This,WINBOOL f);
+    END_INTERFACE
+  } IFolderBandPrivVtbl;
+  struct IFolderBandPriv {
+    CONST_VTBL struct IFolderBandPrivVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IFolderBandPriv_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFolderBandPriv_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFolderBandPriv_Release(This) (This)->lpVtbl->Release(This)
+#define IFolderBandPriv_SetCascade(This,f) (This)->lpVtbl->SetCascade(This,f)
+#define IFolderBandPriv_SetAccelerators(This,f) (This)->lpVtbl->SetAccelerators(This,f)
+#define IFolderBandPriv_SetNoIcons(This,f) (This)->lpVtbl->SetNoIcons(This,f)
+#define IFolderBandPriv_SetNoText(This,f) (This)->lpVtbl->SetNoText(This,f)
+#endif
+#endif
+  HRESULT WINAPI IFolderBandPriv_SetCascade_Proxy(IFolderBandPriv *This,WINBOOL f);
+  void __RPC_STUB IFolderBandPriv_SetCascade_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderBandPriv_SetAccelerators_Proxy(IFolderBandPriv *This,WINBOOL f);
+  void __RPC_STUB IFolderBandPriv_SetAccelerators_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderBandPriv_SetNoIcons_Proxy(IFolderBandPriv *This,WINBOOL f);
+  void __RPC_STUB IFolderBandPriv_SetNoIcons_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IFolderBandPriv_SetNoText_Proxy(IFolderBandPriv *This,WINBOOL f);
+  void __RPC_STUB IFolderBandPriv_SetNoText_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#if 0x501 >= 0x0400
+#include <pshpack8.h>
+  typedef struct tagBANDSITEINFO {
+    DWORD dwMask;
+    DWORD dwState;
+    DWORD dwStyle;
+  } BANDSITEINFO;
+
+#include <poppack.h>
+
+  enum __MIDL___MIDL_itf_shobjidl_0247_0001 {
+    BSID_BANDADDED = 0,BSID_BANDREMOVED = BSID_BANDADDED + 1
+  };
+#define BSIM_STATE 0x00000001
+#define BSIM_STYLE 0x00000002
+#define BSSF_VISIBLE 0x00000001
+#define BSSF_NOTITLE 0x00000002
+#define BSSF_UNDELETEABLE 0x00001000
+#define BSIS_AUTOGRIPPER 0x00000000
+#define BSIS_NOGRIPPER 0x00000001
+#define BSIS_ALWAYSGRIPPER 0x00000002
+#define BSIS_LEFTALIGN 0x00000004
+#define BSIS_SINGLECLICK 0x00000008
+#define BSIS_NOCONTEXTMENU 0x00000010
+#define BSIS_NODROPTARGET 0x00000020
+#define BSIS_NOCAPTION 0x00000040
+#define BSIS_PREFERNOLINEBREAK 0x00000080
+#define BSIS_LOCKED 0x00000100
+#define SID_SBandSite IID_IBandSite
+#define CGID_BandSite IID_IBandSite
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0247_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0247_v0_0_s_ifspec;
+#ifndef __IBandSite_INTERFACE_DEFINED__
+#define __IBandSite_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IBandSite;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IBandSite : public IUnknown {
+  public:
+    virtual HRESULT WINAPI AddBand(IUnknown *punk) = 0;
+    virtual HRESULT WINAPI EnumBands(UINT uBand,DWORD *pdwBandID) = 0;
+    virtual HRESULT WINAPI QueryBand(DWORD dwBandID,IDeskBand **ppstb,DWORD *pdwState,LPWSTR pszName,int cchName) = 0;
+    virtual HRESULT WINAPI SetBandState(DWORD dwBandID,DWORD dwMask,DWORD dwState) = 0;
+    virtual HRESULT WINAPI RemoveBand(DWORD dwBandID) = 0;
+    virtual HRESULT WINAPI GetBandObject(DWORD dwBandID,REFIID riid,void **ppv) = 0;
+    virtual HRESULT WINAPI SetBandSiteInfo(const BANDSITEINFO *pbsinfo) = 0;
+    virtual HRESULT WINAPI GetBandSiteInfo(BANDSITEINFO *pbsinfo) = 0;
+  };
+#else
+  typedef struct IBandSiteVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IBandSite *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IBandSite *This);
+      ULONG (WINAPI *Release)(IBandSite *This);
+      HRESULT (WINAPI *AddBand)(IBandSite *This,IUnknown *punk);
+      HRESULT (WINAPI *EnumBands)(IBandSite *This,UINT uBand,DWORD *pdwBandID);
+      HRESULT (WINAPI *QueryBand)(IBandSite *This,DWORD dwBandID,IDeskBand **ppstb,DWORD *pdwState,LPWSTR pszName,int cchName);
+      HRESULT (WINAPI *SetBandState)(IBandSite *This,DWORD dwBandID,DWORD dwMask,DWORD dwState);
+      HRESULT (WINAPI *RemoveBand)(IBandSite *This,DWORD dwBandID);
+      HRESULT (WINAPI *GetBandObject)(IBandSite *This,DWORD dwBandID,REFIID riid,void **ppv);
+      HRESULT (WINAPI *SetBandSiteInfo)(IBandSite *This,const BANDSITEINFO *pbsinfo);
+      HRESULT (WINAPI *GetBandSiteInfo)(IBandSite *This,BANDSITEINFO *pbsinfo);
+    END_INTERFACE
+  } IBandSiteVtbl;
+  struct IBandSite {
+    CONST_VTBL struct IBandSiteVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IBandSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBandSite_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBandSite_Release(This) (This)->lpVtbl->Release(This)
+#define IBandSite_AddBand(This,punk) (This)->lpVtbl->AddBand(This,punk)
+#define IBandSite_EnumBands(This,uBand,pdwBandID) (This)->lpVtbl->EnumBands(This,uBand,pdwBandID)
+#define IBandSite_QueryBand(This,dwBandID,ppstb,pdwState,pszName,cchName) (This)->lpVtbl->QueryBand(This,dwBandID,ppstb,pdwState,pszName,cchName)
+#define IBandSite_SetBandState(This,dwBandID,dwMask,dwState) (This)->lpVtbl->SetBandState(This,dwBandID,dwMask,dwState)
+#define IBandSite_RemoveBand(This,dwBandID) (This)->lpVtbl->RemoveBand(This,dwBandID)
+#define IBandSite_GetBandObject(This,dwBandID,riid,ppv) (This)->lpVtbl->GetBandObject(This,dwBandID,riid,ppv)
+#define IBandSite_SetBandSiteInfo(This,pbsinfo) (This)->lpVtbl->SetBandSiteInfo(This,pbsinfo)
+#define IBandSite_GetBandSiteInfo(This,pbsinfo) (This)->lpVtbl->GetBandSiteInfo(This,pbsinfo)
+#endif
+#endif
+  HRESULT WINAPI IBandSite_AddBand_Proxy(IBandSite *This,IUnknown *punk);
+  void __RPC_STUB IBandSite_AddBand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IBandSite_EnumBands_Proxy(IBandSite *This,UINT uBand,DWORD *pdwBandID);
+  void __RPC_STUB IBandSite_EnumBands_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IBandSite_QueryBand_Proxy(IBandSite *This,DWORD dwBandID,IDeskBand **ppstb,DWORD *pdwState,LPWSTR pszName,int cchName);
+  void __RPC_STUB IBandSite_QueryBand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IBandSite_SetBandState_Proxy(IBandSite *This,DWORD dwBandID,DWORD dwMask,DWORD dwState);
+  void __RPC_STUB IBandSite_SetBandState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IBandSite_RemoveBand_Proxy(IBandSite *This,DWORD dwBandID);
+  void __RPC_STUB IBandSite_RemoveBand_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IBandSite_GetBandObject_Proxy(IBandSite *This,DWORD dwBandID,REFIID riid,void **ppv);
+  void __RPC_STUB IBandSite_GetBandObject_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IBandSite_SetBandSiteInfo_Proxy(IBandSite *This,const BANDSITEINFO *pbsinfo);
+  void __RPC_STUB IBandSite_SetBandSiteInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IBandSite_GetBandSiteInfo_Proxy(IBandSite *This,BANDSITEINFO *pbsinfo);
+  void __RPC_STUB IBandSite_GetBandSiteInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+#endif
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0248_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0248_v0_0_s_ifspec;
+#ifndef __INamespaceWalkCB_INTERFACE_DEFINED__
+#define __INamespaceWalkCB_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_INamespaceWalkCB;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct INamespaceWalkCB : public IUnknown {
+  public:
+    virtual HRESULT WINAPI FoundItem(IShellFolder *psf,LPCITEMIDLIST pidl) = 0;
+    virtual HRESULT WINAPI EnterFolder(IShellFolder *psf,LPCITEMIDLIST pidl) = 0;
+    virtual HRESULT WINAPI LeaveFolder(IShellFolder *psf,LPCITEMIDLIST pidl) = 0;
+    virtual HRESULT WINAPI InitializeProgressDialog(LPWSTR *ppszTitle,LPWSTR *ppszCancel) = 0;
+  };
+#else
+  typedef struct INamespaceWalkCBVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(INamespaceWalkCB *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(INamespaceWalkCB *This);
+      ULONG (WINAPI *Release)(INamespaceWalkCB *This);
+      HRESULT (WINAPI *FoundItem)(INamespaceWalkCB *This,IShellFolder *psf,LPCITEMIDLIST pidl);
+      HRESULT (WINAPI *EnterFolder)(INamespaceWalkCB *This,IShellFolder *psf,LPCITEMIDLIST pidl);
+      HRESULT (WINAPI *LeaveFolder)(INamespaceWalkCB *This,IShellFolder *psf,LPCITEMIDLIST pidl);
+      HRESULT (WINAPI *InitializeProgressDialog)(INamespaceWalkCB *This,LPWSTR *ppszTitle,LPWSTR *ppszCancel);
+    END_INTERFACE
+  } INamespaceWalkCBVtbl;
+  struct INamespaceWalkCB {
+    CONST_VTBL struct INamespaceWalkCBVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define INamespaceWalkCB_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define INamespaceWalkCB_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define INamespaceWalkCB_Release(This) (This)->lpVtbl->Release(This)
+#define INamespaceWalkCB_FoundItem(This,psf,pidl) (This)->lpVtbl->FoundItem(This,psf,pidl)
+#define INamespaceWalkCB_EnterFolder(This,psf,pidl) (This)->lpVtbl->EnterFolder(This,psf,pidl)
+#define INamespaceWalkCB_LeaveFolder(This,psf,pidl) (This)->lpVtbl->LeaveFolder(This,psf,pidl)
+#define INamespaceWalkCB_InitializeProgressDialog(This,ppszTitle,ppszCancel) (This)->lpVtbl->InitializeProgressDialog(This,ppszTitle,ppszCancel)
+#endif
+#endif
+  HRESULT WINAPI INamespaceWalkCB_FoundItem_Proxy(INamespaceWalkCB *This,IShellFolder *psf,LPCITEMIDLIST pidl);
+  void __RPC_STUB INamespaceWalkCB_FoundItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI INamespaceWalkCB_EnterFolder_Proxy(INamespaceWalkCB *This,IShellFolder *psf,LPCITEMIDLIST pidl);
+  void __RPC_STUB INamespaceWalkCB_EnterFolder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI INamespaceWalkCB_LeaveFolder_Proxy(INamespaceWalkCB *This,IShellFolder *psf,LPCITEMIDLIST pidl);
+  void __RPC_STUB INamespaceWalkCB_LeaveFolder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI INamespaceWalkCB_InitializeProgressDialog_Proxy(INamespaceWalkCB *This,LPWSTR *ppszTitle,LPWSTR *ppszCancel);
+  void __RPC_STUB INamespaceWalkCB_InitializeProgressDialog_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __INamespaceWalk_INTERFACE_DEFINED__
+#define __INamespaceWalk_INTERFACE_DEFINED__
+  enum __MIDL_INamespaceWalk_0001 {
+    NSWF_NONE_IMPLIES_ALL = 0x1,NSWF_ONE_IMPLIES_ALL = 0x2,NSWF_DONT_TRAVERSE_LINKS = 0x4,NSWF_DONT_ACCUMULATE_RESULT = 0x8,
+    NSWF_TRAVERSE_STREAM_JUNCTIONS = 0x10,NSWF_FILESYSTEM_ONLY = 0x20,NSWF_SHOW_PROGRESS = 0x40,NSWF_FLAG_VIEWORDER = 0x80,
+    NSWF_IGNORE_AUTOPLAY_HIDA = 0x100
+  };
+
+  EXTERN_C const IID IID_INamespaceWalk;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct INamespaceWalk : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Walk(IUnknown *punkToWalk,DWORD dwFlags,int cDepth,INamespaceWalkCB *pnswcb) = 0;
+    virtual HRESULT WINAPI GetIDArrayResult(UINT *pcItems,LPITEMIDLIST **pppidl) = 0;
+  };
+#else
+  typedef struct INamespaceWalkVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(INamespaceWalk *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(INamespaceWalk *This);
+      ULONG (WINAPI *Release)(INamespaceWalk *This);
+      HRESULT (WINAPI *Walk)(INamespaceWalk *This,IUnknown *punkToWalk,DWORD dwFlags,int cDepth,INamespaceWalkCB *pnswcb);
+      HRESULT (WINAPI *GetIDArrayResult)(INamespaceWalk *This,UINT *pcItems,LPITEMIDLIST **pppidl);
+    END_INTERFACE
+  } INamespaceWalkVtbl;
+  struct INamespaceWalk {
+    CONST_VTBL struct INamespaceWalkVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define INamespaceWalk_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define INamespaceWalk_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define INamespaceWalk_Release(This) (This)->lpVtbl->Release(This)
+#define INamespaceWalk_Walk(This,punkToWalk,dwFlags,cDepth,pnswcb) (This)->lpVtbl->Walk(This,punkToWalk,dwFlags,cDepth,pnswcb)
+#define INamespaceWalk_GetIDArrayResult(This,pcItems,pppidl) (This)->lpVtbl->GetIDArrayResult(This,pcItems,pppidl)
+#endif
+#endif
+  HRESULT WINAPI INamespaceWalk_Walk_Proxy(INamespaceWalk *This,IUnknown *punkToWalk,DWORD dwFlags,int cDepth,INamespaceWalkCB *pnswcb);
+  void __RPC_STUB INamespaceWalk_Walk_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI INamespaceWalk_GetIDArrayResult_Proxy(INamespaceWalk *This,UINT *pcItems,LPITEMIDLIST **pppidl);
+  void __RPC_STUB INamespaceWalk_GetIDArrayResult_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IRegTreeItem_INTERFACE_DEFINED__
+#define __IRegTreeItem_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IRegTreeItem;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IRegTreeItem : public IUnknown {
+  public:
+    virtual HRESULT WINAPI GetCheckState(WINBOOL *pbCheck) = 0;
+    virtual HRESULT WINAPI SetCheckState(WINBOOL bCheck) = 0;
+  };
+#else
+  typedef struct IRegTreeItemVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IRegTreeItem *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IRegTreeItem *This);
+      ULONG (WINAPI *Release)(IRegTreeItem *This);
+      HRESULT (WINAPI *GetCheckState)(IRegTreeItem *This,WINBOOL *pbCheck);
+      HRESULT (WINAPI *SetCheckState)(IRegTreeItem *This,WINBOOL bCheck);
+    END_INTERFACE
+  } IRegTreeItemVtbl;
+  struct IRegTreeItem {
+    CONST_VTBL struct IRegTreeItemVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IRegTreeItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IRegTreeItem_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IRegTreeItem_Release(This) (This)->lpVtbl->Release(This)
+#define IRegTreeItem_GetCheckState(This,pbCheck) (This)->lpVtbl->GetCheckState(This,pbCheck)
+#define IRegTreeItem_SetCheckState(This,bCheck) (This)->lpVtbl->SetCheckState(This,bCheck)
+#endif
+#endif
+  HRESULT WINAPI IRegTreeItem_GetCheckState_Proxy(IRegTreeItem *This,WINBOOL *pbCheck);
+  void __RPC_STUB IRegTreeItem_GetCheckState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IRegTreeItem_SetCheckState_Proxy(IRegTreeItem *This,WINBOOL bCheck);
+  void __RPC_STUB IRegTreeItem_SetCheckState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  enum __MIDL___MIDL_itf_shobjidl_0251_0001 {
+    MPOS_EXECUTE = 0,
+    MPOS_FULLCANCEL,MPOS_CANCELLEVEL,MPOS_SELECTLEFT,MPOS_SELECTRIGHT,
+    MPOS_CHILDTRACKING
+  };
+
+  enum __MIDL___MIDL_itf_shobjidl_0251_0002 {
+    MPPF_SETFOCUS = 0x1,MPPF_INITIALSELECT = 0x2,MPPF_NOANIMATE = 0x4,
+    MPPF_KEYBOARD = 0x10,MPPF_REPOSITION = 0x20,MPPF_FORCEZORDER = 0x40,MPPF_FINALSELECT = 0x80,
+    MPPF_TOP = 0x20000000,MPPF_LEFT = 0x40000000,MPPF_RIGHT = 0x60000000,MPPF_BOTTOM = 0x80000000,MPPF_POS_MASK = 0xe0000000
+  };
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0251_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0251_v0_0_s_ifspec;
+#ifndef __IMenuPopup_INTERFACE_DEFINED__
+#define __IMenuPopup_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IMenuPopup;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IMenuPopup : public IDeskBar {
+  public:
+    virtual HRESULT WINAPI Popup(POINTL *ppt,RECTL *prcExclude,DWORD dwFlags) = 0;
+    virtual HRESULT WINAPI OnSelect(DWORD dwSelectType) = 0;
+    virtual HRESULT WINAPI SetSubMenu(IMenuPopup *pmp,WINBOOL fSet) = 0;
+  };
+#else
+  typedef struct IMenuPopupVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IMenuPopup *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IMenuPopup *This);
+      ULONG (WINAPI *Release)(IMenuPopup *This);
+      HRESULT (WINAPI *GetWindow)(IMenuPopup *This,HWND *phwnd);
+      HRESULT (WINAPI *ContextSensitiveHelp)(IMenuPopup *This,WINBOOL fEnterMode);
+      HRESULT (WINAPI *SetClient)(IMenuPopup *This,IUnknown *punkClient);
+      HRESULT (WINAPI *GetClient)(IMenuPopup *This,IUnknown **ppunkClient);
+      HRESULT (WINAPI *OnPosRectChangeDB)(IMenuPopup *This,LPRECT prc);
+      HRESULT (WINAPI *Popup)(IMenuPopup *This,POINTL *ppt,RECTL *prcExclude,DWORD dwFlags);
+      HRESULT (WINAPI *OnSelect)(IMenuPopup *This,DWORD dwSelectType);
+      HRESULT (WINAPI *SetSubMenu)(IMenuPopup *This,IMenuPopup *pmp,WINBOOL fSet);
+    END_INTERFACE
+  } IMenuPopupVtbl;
+  struct IMenuPopup {
+    CONST_VTBL struct IMenuPopupVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IMenuPopup_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IMenuPopup_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IMenuPopup_Release(This) (This)->lpVtbl->Release(This)
+#define IMenuPopup_GetWindow(This,phwnd) (This)->lpVtbl->GetWindow(This,phwnd)
+#define IMenuPopup_ContextSensitiveHelp(This,fEnterMode) (This)->lpVtbl->ContextSensitiveHelp(This,fEnterMode)
+#define IMenuPopup_SetClient(This,punkClient) (This)->lpVtbl->SetClient(This,punkClient)
+#define IMenuPopup_GetClient(This,ppunkClient) (This)->lpVtbl->GetClient(This,ppunkClient)
+#define IMenuPopup_OnPosRectChangeDB(This,prc) (This)->lpVtbl->OnPosRectChangeDB(This,prc)
+#define IMenuPopup_Popup(This,ppt,prcExclude,dwFlags) (This)->lpVtbl->Popup(This,ppt,prcExclude,dwFlags)
+#define IMenuPopup_OnSelect(This,dwSelectType) (This)->lpVtbl->OnSelect(This,dwSelectType)
+#define IMenuPopup_SetSubMenu(This,pmp,fSet) (This)->lpVtbl->SetSubMenu(This,pmp,fSet)
+#endif
+#endif
+  HRESULT WINAPI IMenuPopup_Popup_Proxy(IMenuPopup *This,POINTL *ppt,RECTL *prcExclude,DWORD dwFlags);
+  void __RPC_STUB IMenuPopup_Popup_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IMenuPopup_OnSelect_Proxy(IMenuPopup *This,DWORD dwSelectType);
+  void __RPC_STUB IMenuPopup_OnSelect_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IMenuPopup_SetSubMenu_Proxy(IMenuPopup *This,IMenuPopup *pmp,WINBOOL fSet);
+  void __RPC_STUB IMenuPopup_SetSubMenu_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+/*****************************************************************************
+ * IShellItem interface
+ */
+#ifndef __IShellItem_INTERFACE_DEFINED__
+#define __IShellItem_INTERFACE_DEFINED__
+
+typedef enum _SIGDN {
+    SIGDN_NORMALDISPLAY = 0x0,
+    SIGDN_PARENTRELATIVEPARSING = (int)0x80018001,
+    SIGDN_DESKTOPABSOLUTEPARSING = (int)0x80028000,
+    SIGDN_PARENTRELATIVEEDITING = (int)0x80031001,
+    SIGDN_DESKTOPABSOLUTEEDITING = (int)0x8004c000,
+    SIGDN_FILESYSPATH = (int)0x80058000,
+    SIGDN_URL = (int)0x80068000,
+    SIGDN_PARENTRELATIVEFORADDRESSBAR = (int)0x8007c001,
+    SIGDN_PARENTRELATIVE = (int)0x80080001
+} SIGDN;
+enum _SICHINTF {
+    SICHINT_DISPLAY = 0x0,
+    SICHINT_ALLFIELDS = (int)0x80000000,
+    SICHINT_CANONICAL = 0x10000000,
+    SICHINT_TEST_FILESYSPATH_IF_NOT_EQUAL = 0x20000000
+};
+
+typedef DWORD SICHINTF;
+DEFINE_GUID(IID_IShellItem, 0x43826d1e, 0xe718, 0x42ee, 0xbc,0x55, 0xa1,0xe2,0x61,0xc3,0x7b,0xfe);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("43826d1e-e718-42ee-bc55-a1e261c37bfe")
+IShellItem : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE BindToHandler(
+        IBindCtx *pbc,
+        REFGUID bhid,
+        REFIID riid,
+        void **ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetParent(
+        IShellItem **ppsi) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
+        SIGDN sigdnName,
+        LPWSTR *ppszName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetAttributes(
+        SFGAOF sfgaoMask,
+        SFGAOF *psfgaoAttribs) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Compare(
+        IShellItem *psi,
+        SICHINTF hint,
+        int *piOrder) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IShellItem, 0x43826d1e, 0xe718, 0x42ee, 0xbc,0x55, 0xa1,0xe2,0x61,0xc3,0x7b,0xfe)
+#endif
+#else
+typedef struct IShellItemVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IShellItem* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IShellItem* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IShellItem* This);
+
+    /*** IShellItem methods ***/
+    HRESULT (STDMETHODCALLTYPE *BindToHandler)(
+        IShellItem* This,
+        IBindCtx *pbc,
+        REFGUID bhid,
+        REFIID riid,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IShellItem* This,
+        IShellItem **ppsi);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
+        IShellItem* This,
+        SIGDN sigdnName,
+        LPWSTR *ppszName);
+
+    HRESULT (STDMETHODCALLTYPE *GetAttributes)(
+        IShellItem* This,
+        SFGAOF sfgaoMask,
+        SFGAOF *psfgaoAttribs);
+
+    HRESULT (STDMETHODCALLTYPE *Compare)(
+        IShellItem* This,
+        IShellItem *psi,
+        SICHINTF hint,
+        int *piOrder);
+
+    END_INTERFACE
+} IShellItemVtbl;
+interface IShellItem {
+    CONST_VTBL IShellItemVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IShellItem_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellItem_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellItem_Release(This) (This)->lpVtbl->Release(This)
+/*** IShellItem methods ***/
+#define IShellItem_BindToHandler(This,pbc,bhid,riid,ppv) (This)->lpVtbl->BindToHandler(This,pbc,bhid,riid,ppv)
+#define IShellItem_GetParent(This,ppsi) (This)->lpVtbl->GetParent(This,ppsi)
+#define IShellItem_GetDisplayName(This,sigdnName,ppszName) (This)->lpVtbl->GetDisplayName(This,sigdnName,ppszName)
+#define IShellItem_GetAttributes(This,sfgaoMask,psfgaoAttribs) (This)->lpVtbl->GetAttributes(This,sfgaoMask,psfgaoAttribs)
+#define IShellItem_Compare(This,psi,hint,piOrder) (This)->lpVtbl->Compare(This,psi,hint,piOrder)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IShellItem_QueryInterface(IShellItem* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IShellItem_AddRef(IShellItem* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IShellItem_Release(IShellItem* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IShellItem methods ***/
+static FORCEINLINE HRESULT IShellItem_BindToHandler(IShellItem* This,IBindCtx *pbc,REFGUID bhid,REFIID riid,void **ppv) {
+    return This->lpVtbl->BindToHandler(This,pbc,bhid,riid,ppv);
+}
+static FORCEINLINE HRESULT IShellItem_GetParent(IShellItem* This,IShellItem **ppsi) {
+    return This->lpVtbl->GetParent(This,ppsi);
+}
+static FORCEINLINE HRESULT IShellItem_GetDisplayName(IShellItem* This,SIGDN sigdnName,LPWSTR *ppszName) {
+    return This->lpVtbl->GetDisplayName(This,sigdnName,ppszName);
+}
+static FORCEINLINE HRESULT IShellItem_GetAttributes(IShellItem* This,SFGAOF sfgaoMask,SFGAOF *psfgaoAttribs) {
+    return This->lpVtbl->GetAttributes(This,sfgaoMask,psfgaoAttribs);
+}
+static FORCEINLINE HRESULT IShellItem_Compare(IShellItem* This,IShellItem *psi,SICHINTF hint,int *piOrder) {
+    return This->lpVtbl->Compare(This,psi,hint,piOrder);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IShellItem_BindToHandler_Proxy(
+    IShellItem* This,
+    IBindCtx *pbc,
+    REFGUID bhid,
+    REFIID riid,
+    void **ppv);
+void __RPC_STUB IShellItem_BindToHandler_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellItem_GetParent_Proxy(
+    IShellItem* This,
+    IShellItem **ppsi);
+void __RPC_STUB IShellItem_GetParent_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellItem_GetDisplayName_Proxy(
+    IShellItem* This,
+    SIGDN sigdnName,
+    LPWSTR *ppszName);
+void __RPC_STUB IShellItem_GetDisplayName_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellItem_GetAttributes_Proxy(
+    IShellItem* This,
+    SFGAOF sfgaoMask,
+    SFGAOF *psfgaoAttribs);
+void __RPC_STUB IShellItem_GetAttributes_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellItem_Compare_Proxy(
+    IShellItem* This,
+    IShellItem *psi,
+    SICHINTF hint,
+    int *piOrder);
+void __RPC_STUB IShellItem_Compare_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IShellItem_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IShellItem2 interface
+ */
+#ifndef __IShellItem2_INTERFACE_DEFINED__
+#define __IShellItem2_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IShellItem2, 0x7e9fb0d3, 0x919f, 0x4307, 0xab,0x2e, 0x9b,0x18,0x60,0x31,0x0c,0x93);
+__CRT_UUID_DECL(IShellItem2, 0x7e9fb0d3, 0x919f, 0x4307, 0xab,0x2e, 0x9b,0x18,0x60,0x31,0x0c,0x93)
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IShellItem2 : public IShellItem
+{
+    virtual HRESULT STDMETHODCALLTYPE GetPropertyStore(
+        GETPROPERTYSTOREFLAGS flags,
+        REFIID riid,
+        void **ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPropertyStoreWithCreateObject(
+        GETPROPERTYSTOREFLAGS flags,
+        IUnknown *punkCreateObject,
+        REFIID riid,
+        void **ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPropertyStoreForKeys(
+        const PROPERTYKEY *rgKeys,
+        UINT cKeys,
+        GETPROPERTYSTOREFLAGS flags,
+        REFIID riid,
+        void **ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetPropertyDescriptionList(
+        REFPROPERTYKEY keyType,
+        REFIID riid,
+        void **ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Update(
+        IBindCtx *pbc) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetProperty(
+        REFPROPERTYKEY key,
+        PROPVARIANT *ppropvar) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetCLSID(
+        REFPROPERTYKEY key,
+        CLSID *pclsid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFileTime(
+        REFPROPERTYKEY key,
+        FILETIME *pft) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetInt32(
+        REFPROPERTYKEY key,
+        int *pi) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetString(
+        REFPROPERTYKEY key,
+        LPWSTR *ppsz) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetUInt32(
+        REFPROPERTYKEY key,
+        ULONG *pui) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetUInt64(
+        REFPROPERTYKEY key,
+        ULONGLONG *pull) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetBool(
+        REFPROPERTYKEY key,
+        BOOL *pf) = 0;
+
+};
+#else
+typedef struct IShellItem2Vtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IShellItem2* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IShellItem2* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IShellItem2* This);
+
+    /*** IShellItem methods ***/
+    HRESULT (STDMETHODCALLTYPE *BindToHandler)(
+        IShellItem2* This,
+        IBindCtx *pbc,
+        REFGUID rbhid,
+        REFIID riid,
+        void **ppvOut);
+
+    HRESULT (STDMETHODCALLTYPE *GetParent)(
+        IShellItem2* This,
+        IShellItem **ppsi);
+
+    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
+        IShellItem2* This,
+        SIGDN sigdnName,
+        LPWSTR *ppszName);
+
+    HRESULT (STDMETHODCALLTYPE *GetAttributes)(
+        IShellItem2* This,
+        SFGAOF sfgaoMask,
+        SFGAOF *psfgaoAttribs);
+
+    HRESULT (STDMETHODCALLTYPE *Compare)(
+        IShellItem2* This,
+        IShellItem *psi,
+        SICHINTF hint,
+        int *piOrder);
+
+    /*** IShellItem2 methods ***/
+    HRESULT (STDMETHODCALLTYPE *GetPropertyStore)(
+        IShellItem2* This,
+        GETPROPERTYSTOREFLAGS flags,
+        REFIID riid,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *GetPropertyStoreWithCreateObject)(
+        IShellItem2* This,
+        GETPROPERTYSTOREFLAGS flags,
+        IUnknown *punkCreateObject,
+        REFIID riid,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *GetPropertyStoreForKeys)(
+        IShellItem2* This,
+        const PROPERTYKEY *rgKeys,
+        UINT cKeys,
+        GETPROPERTYSTOREFLAGS flags,
+        REFIID riid,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *GetPropertyDescriptionList)(
+        IShellItem2* This,
+        REFPROPERTYKEY keyType,
+        REFIID riid,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *Update)(
+        IShellItem2* This,
+        IBindCtx *pbc);
+
+    HRESULT (STDMETHODCALLTYPE *GetProperty)(
+        IShellItem2* This,
+        REFPROPERTYKEY key,
+        PROPVARIANT *ppropvar);
+
+    HRESULT (STDMETHODCALLTYPE *GetCLSID)(
+        IShellItem2* This,
+        REFPROPERTYKEY key,
+        CLSID *pclsid);
+
+    HRESULT (STDMETHODCALLTYPE *GetFileTime)(
+        IShellItem2* This,
+        REFPROPERTYKEY key,
+        FILETIME *pft);
+
+    HRESULT (STDMETHODCALLTYPE *GetInt32)(
+        IShellItem2* This,
+        REFPROPERTYKEY key,
+        int *pi);
+
+    HRESULT (STDMETHODCALLTYPE *GetString)(
+        IShellItem2* This,
+        REFPROPERTYKEY key,
+        LPWSTR *ppsz);
+
+    HRESULT (STDMETHODCALLTYPE *GetUInt32)(
+        IShellItem2* This,
+        REFPROPERTYKEY key,
+        ULONG *pui);
+
+    HRESULT (STDMETHODCALLTYPE *GetUInt64)(
+        IShellItem2* This,
+        REFPROPERTYKEY key,
+        ULONGLONG *pull);
+
+    HRESULT (STDMETHODCALLTYPE *GetBool)(
+        IShellItem2* This,
+        REFPROPERTYKEY key,
+        BOOL *pf);
+
+    END_INTERFACE
+} IShellItem2Vtbl;
+interface IShellItem2 {
+    CONST_VTBL IShellItem2Vtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IShellItem2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellItem2_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellItem2_Release(This) (This)->lpVtbl->Release(This)
+/*** IShellItem methods ***/
+#define IShellItem2_BindToHandler(This,pbc,rbhid,riid,ppvOut) (This)->lpVtbl->BindToHandler(This,pbc,rbhid,riid,ppvOut)
+#define IShellItem2_GetParent(This,ppsi) (This)->lpVtbl->GetParent(This,ppsi)
+#define IShellItem2_GetDisplayName(This,sigdnName,ppszName) (This)->lpVtbl->GetDisplayName(This,sigdnName,ppszName)
+#define IShellItem2_GetAttributes(This,sfgaoMask,psfgaoAttribs) (This)->lpVtbl->GetAttributes(This,sfgaoMask,psfgaoAttribs)
+#define IShellItem2_Compare(This,psi,hint,piOrder) (This)->lpVtbl->Compare(This,psi,hint,piOrder)
+/*** IShellItem2 methods ***/
+#define IShellItem2_GetPropertyStore(This,flags,riid,ppv) (This)->lpVtbl->GetPropertyStore(This,flags,riid,ppv)
+#define IShellItem2_GetPropertyStoreWithCreateObject(This,flags,punkCreateObject,riid,ppv) (This)->lpVtbl->GetPropertyStoreWithCreateObject(This,flags,punkCreateObject,riid,ppv)
+#define IShellItem2_GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv) (This)->lpVtbl->GetPropertyStoreForKeys(This,rgKeys,cKeys,flags,riid,ppv)
+#define IShellItem2_GetPropertyDescriptionList(This,keyType,riid,ppv) (This)->lpVtbl->GetPropertyDescriptionList(This,keyType,riid,ppv)
+#define IShellItem2_Update(This,pbc) (This)->lpVtbl->Update(This,pbc)
+#define IShellItem2_GetProperty(This,key,ppropvar) (This)->lpVtbl->GetProperty(This,key,ppropvar)
+#define IShellItem2_GetCLSID(This,key,pclsid) (This)->lpVtbl->GetCLSID(This,key,pclsid)
+#define IShellItem2_GetFileTime(This,key,pft) (This)->lpVtbl->GetFileTime(This,key,pft)
+#define IShellItem2_GetInt32(This,key,pi) (This)->lpVtbl->GetInt32(This,key,pi)
+#define IShellItem2_GetString(This,key,ppsz) (This)->lpVtbl->GetString(This,key,ppsz)
+#define IShellItem2_GetUInt32(This,key,pui) (This)->lpVtbl->GetUInt32(This,key,pui)
+#define IShellItem2_GetUInt64(This,key,pull) (This)->lpVtbl->GetUInt64(This,key,pull)
+#define IShellItem2_GetBool(This,key,pf) (This)->lpVtbl->GetBool(This,key,pf)
+#endif
+
+#endif
+#endif
+
+#ifndef __IImageRecompress_INTERFACE_DEFINED__
+#define __IImageRecompress_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IImageRecompress;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IImageRecompress : public IUnknown {
+  public:
+    virtual HRESULT WINAPI RecompressImage(IShellItem *psi,int cx,int cy,int iQuality,IStorage *pstg,IStream **ppstrmOut) = 0;
+  };
+#else
+  typedef struct IImageRecompressVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IImageRecompress *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IImageRecompress *This);
+      ULONG (WINAPI *Release)(IImageRecompress *This);
+      HRESULT (WINAPI *RecompressImage)(IImageRecompress *This,IShellItem *psi,int cx,int cy,int iQuality,IStorage *pstg,IStream **ppstrmOut);
+    END_INTERFACE
+  } IImageRecompressVtbl;
+  struct IImageRecompress {
+    CONST_VTBL struct IImageRecompressVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IImageRecompress_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IImageRecompress_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IImageRecompress_Release(This) (This)->lpVtbl->Release(This)
+#define IImageRecompress_RecompressImage(This,psi,cx,cy,iQuality,pstg,ppstrmOut) (This)->lpVtbl->RecompressImage(This,psi,cx,cy,iQuality,pstg,ppstrmOut)
+#endif
+#endif
+  HRESULT WINAPI IImageRecompress_RecompressImage_Proxy(IImageRecompress *This,IShellItem *psi,int cx,int cy,int iQuality,IStorage *pstg,IStream **ppstrmOut);
+  void __RPC_STUB IImageRecompress_RecompressImage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IDefViewSafety_INTERFACE_DEFINED__
+#define __IDefViewSafety_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IDefViewSafety;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IDefViewSafety : public IUnknown {
+  public:
+    virtual HRESULT WINAPI IsSafePage(void) = 0;
+  };
+#else
+  typedef struct IDefViewSafetyVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IDefViewSafety *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IDefViewSafety *This);
+      ULONG (WINAPI *Release)(IDefViewSafety *This);
+      HRESULT (WINAPI *IsSafePage)(IDefViewSafety *This);
+    END_INTERFACE
+  } IDefViewSafetyVtbl;
+  struct IDefViewSafety {
+    CONST_VTBL struct IDefViewSafetyVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IDefViewSafety_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDefViewSafety_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDefViewSafety_Release(This) (This)->lpVtbl->Release(This)
+#define IDefViewSafety_IsSafePage(This) (This)->lpVtbl->IsSafePage(This)
+#endif
+#endif
+  HRESULT WINAPI IDefViewSafety_IsSafePage_Proxy(IDefViewSafety *This);
+  void __RPC_STUB IDefViewSafety_IsSafePage_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IContextMenuSite_INTERFACE_DEFINED__
+#define __IContextMenuSite_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IContextMenuSite;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IContextMenuSite : public IUnknown {
+  public:
+    virtual HRESULT WINAPI DoContextMenuPopup(IUnknown *punkContextMenu,UINT fFlags,POINT pt) = 0;
+  };
+#else
+  typedef struct IContextMenuSiteVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IContextMenuSite *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IContextMenuSite *This);
+      ULONG (WINAPI *Release)(IContextMenuSite *This);
+      HRESULT (WINAPI *DoContextMenuPopup)(IContextMenuSite *This,IUnknown *punkContextMenu,UINT fFlags,POINT pt);
+    END_INTERFACE
+  } IContextMenuSiteVtbl;
+  struct IContextMenuSite {
+    CONST_VTBL struct IContextMenuSiteVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IContextMenuSite_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IContextMenuSite_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IContextMenuSite_Release(This) (This)->lpVtbl->Release(This)
+#define IContextMenuSite_DoContextMenuPopup(This,punkContextMenu,fFlags,pt) (This)->lpVtbl->DoContextMenuPopup(This,punkContextMenu,fFlags,pt)
+#endif
+#endif
+  HRESULT WINAPI IContextMenuSite_DoContextMenuPopup_Proxy(IContextMenuSite *This,IUnknown *punkContextMenu,UINT fFlags,POINT pt);
+  void __RPC_STUB IContextMenuSite_DoContextMenuPopup_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#include <pshpack1.h>
+  typedef struct tagDELEGATEITEMID {
+    WORD cbSize;
+    WORD wOuter;
+    WORD cbInner;
+    BYTE rgb[1];
+  } DELEGATEITEMID;
+#include <poppack.h>
+
+  typedef const UNALIGNED DELEGATEITEMID *PCDELEGATEITEMID;
+  typedef UNALIGNED DELEGATEITEMID *PDELEGATEITEMID;
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0257_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0257_v0_0_s_ifspec;
+#ifndef __IDelegateFolder_INTERFACE_DEFINED__
+#define __IDelegateFolder_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IDelegateFolder;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IDelegateFolder : public IUnknown {
+  public:
+    virtual HRESULT WINAPI SetItemAlloc(IMalloc *pmalloc) = 0;
+  };
+#else
+  typedef struct IDelegateFolderVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IDelegateFolder *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IDelegateFolder *This);
+      ULONG (WINAPI *Release)(IDelegateFolder *This);
+      HRESULT (WINAPI *SetItemAlloc)(IDelegateFolder *This,IMalloc *pmalloc);
+    END_INTERFACE
+  } IDelegateFolderVtbl;
+  struct IDelegateFolder {
+    CONST_VTBL struct IDelegateFolderVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IDelegateFolder_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IDelegateFolder_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IDelegateFolder_Release(This) (This)->lpVtbl->Release(This)
+#define IDelegateFolder_SetItemAlloc(This,pmalloc) (This)->lpVtbl->SetItemAlloc(This,pmalloc)
+#endif
+#endif
+  HRESULT WINAPI IDelegateFolder_SetItemAlloc_Proxy(IDelegateFolder *This,IMalloc *pmalloc);
+  void __RPC_STUB IDelegateFolder_SetItemAlloc_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0258_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0258_v0_0_s_ifspec;
+#ifndef __IBrowserFrameOptions_INTERFACE_DEFINED__
+#define __IBrowserFrameOptions_INTERFACE_DEFINED__
+  typedef IBrowserFrameOptions *LPBROWSERFRAMEOPTIONS;
+
+  enum __MIDL_IBrowserFrameOptions_0001 {
+    BFO_NONE = 0,BFO_BROWSER_PERSIST_SETTINGS = 0x1,BFO_RENAME_FOLDER_OPTIONS_TOINTERNET = 0x2,BFO_BOTH_OPTIONS = 0x4,
+    BIF_PREFER_INTERNET_SHORTCUT = 0x8,BFO_BROWSE_NO_IN_NEW_PROCESS = 0x10,BFO_ENABLE_HYPERLINK_TRACKING = 0x20,BFO_USE_IE_OFFLINE_SUPPORT = 0x40,
+    BFO_SUBSTITUE_INTERNET_START_PAGE = 0x80,BFO_USE_IE_LOGOBANDING = 0x100,BFO_ADD_IE_TOCAPTIONBAR = 0x200,BFO_USE_DIALUP_REF = 0x400,
+    BFO_USE_IE_TOOLBAR = 0x800,BFO_NO_PARENT_FOLDER_SUPPORT = 0x1000,BFO_NO_REOPEN_NEXT_RESTART = 0x2000,BFO_GO_HOME_PAGE = 0x4000,
+    BFO_PREFER_IEPROCESS = 0x8000,BFO_SHOW_NAVIGATION_CANCELLED = 0x10000,BFO_USE_IE_STATUSBAR = 0x20000,BFO_QUERY_ALL = 0xffffffff
+  };
+  typedef DWORD BROWSERFRAMEOPTIONS;
+
+  EXTERN_C const IID IID_IBrowserFrameOptions;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IBrowserFrameOptions : public IUnknown {
+  public:
+    virtual HRESULT WINAPI GetFrameOptions(BROWSERFRAMEOPTIONS dwMask,BROWSERFRAMEOPTIONS *pdwOptions) = 0;
+  };
+#else
+  typedef struct IBrowserFrameOptionsVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IBrowserFrameOptions *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IBrowserFrameOptions *This);
+      ULONG (WINAPI *Release)(IBrowserFrameOptions *This);
+      HRESULT (WINAPI *GetFrameOptions)(IBrowserFrameOptions *This,BROWSERFRAMEOPTIONS dwMask,BROWSERFRAMEOPTIONS *pdwOptions);
+    END_INTERFACE
+  } IBrowserFrameOptionsVtbl;
+  struct IBrowserFrameOptions {
+    CONST_VTBL struct IBrowserFrameOptionsVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IBrowserFrameOptions_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IBrowserFrameOptions_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IBrowserFrameOptions_Release(This) (This)->lpVtbl->Release(This)
+#define IBrowserFrameOptions_GetFrameOptions(This,dwMask,pdwOptions) (This)->lpVtbl->GetFrameOptions(This,dwMask,pdwOptions)
+#endif
+#endif
+  HRESULT WINAPI IBrowserFrameOptions_GetFrameOptions_Proxy(IBrowserFrameOptions *This,BROWSERFRAMEOPTIONS dwMask,BROWSERFRAMEOPTIONS *pdwOptions);
+  void __RPC_STUB IBrowserFrameOptions_GetFrameOptions_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+  typedef enum tagNWMF {
+    NWMF_UNLOADING = 0x1,NWMF_USERINITED = 0x2,NWMF_FIRST = 0x4,NWMF_OVERRIDEKEY = 0x8,NWMF_SHOWHELP = 0x10,NWMF_HTMLDIALOG = 0x20,
+    NWMF_FROMDIALOGCHILD = 0x40,NWMF_USERREQUESTED = 0x80,NWMF_USERALLOWED = 0x100
+  } NWMF;
+
+#define SID_SNewWindowManager IID_INewWindowManager
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0259_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0259_v0_0_s_ifspec;
+#ifndef __INewWindowManager_INTERFACE_DEFINED__
+#define __INewWindowManager_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_INewWindowManager;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct INewWindowManager : public IUnknown {
+  public:
+    virtual HRESULT WINAPI EvaluateNewWindow(LPCWSTR pszUrl,LPCWSTR pszName,LPCWSTR pszUrlContext,LPCWSTR pszFeatures,WINBOOL fReplace,DWORD dwFlags,DWORD dwUserActionTime) = 0;
+  };
+#else
+  typedef struct INewWindowManagerVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(INewWindowManager *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(INewWindowManager *This);
+      ULONG (WINAPI *Release)(INewWindowManager *This);
+      HRESULT (WINAPI *EvaluateNewWindow)(INewWindowManager *This,LPCWSTR pszUrl,LPCWSTR pszName,LPCWSTR pszUrlContext,LPCWSTR pszFeatures,WINBOOL fReplace,DWORD dwFlags,DWORD dwUserActionTime);
+    END_INTERFACE
+  } INewWindowManagerVtbl;
+  struct INewWindowManager {
+    CONST_VTBL struct INewWindowManagerVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define INewWindowManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define INewWindowManager_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define INewWindowManager_Release(This) (This)->lpVtbl->Release(This)
+#define INewWindowManager_EvaluateNewWindow(This,pszUrl,pszName,pszUrlContext,pszFeatures,fReplace,dwFlags,dwUserActionTime) (This)->lpVtbl->EvaluateNewWindow(This,pszUrl,pszName,pszUrlContext,pszFeatures,fReplace,dwFlags,dwUserActionTime)
+#endif
+#endif
+  HRESULT WINAPI INewWindowManager_EvaluateNewWindow_Proxy(INewWindowManager *This,LPCWSTR pszUrl,LPCWSTR pszName,LPCWSTR pszUrlContext,LPCWSTR pszFeatures,WINBOOL fReplace,DWORD dwFlags,DWORD dwUserActionTime);
+  void __RPC_STUB INewWindowManager_EvaluateNewWindow_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#include <pshpack8.h>
+  typedef struct tagSMDATA {
+    DWORD dwMask;
+    DWORD dwFlags;
+    HMENU hmenu;
+    HWND hwnd;
+    UINT uId;
+    UINT uIdParent;
+    UINT uIdAncestor;
+    IUnknown *punk;
+    LPITEMIDLIST pidlFolder;
+    LPITEMIDLIST pidlItem;
+    IShellFolder *psf;
+    void *pvUserData;
+  } SMDATA;
+
+  typedef struct tagSMDATA *LPSMDATA;
+
+#define SMDM_SHELLFOLDER 0x00000001
+#define SMDM_HMENU 0x00000002
+#define SMDM_TOOLBAR 0x00000004
+
+  typedef struct tagSMINFO {
+    DWORD dwMask;
+    DWORD dwType;
+    DWORD dwFlags;
+    int iIcon;
+  } SMINFO;
+
+  typedef struct tagSMINFO *PSMINFO;
+
+  typedef struct tagSHCSCHANGENOTIFYSTRUCT {
+    LONG lEvent;
+    LPCITEMIDLIST pidl1;
+    LPCITEMIDLIST pidl2;
+  } SMCSHCHANGENOTIFYSTRUCT;
+
+  typedef struct tagSHCSCHANGENOTIFYSTRUCT *PSMCSHCHANGENOTIFYSTRUCT;
+
+#include <poppack.h>
+
+  enum __MIDL___MIDL_itf_shobjidl_0260_0001 {
+    SMIM_TYPE = 0x1,SMIM_FLAGS = 0x2,SMIM_ICON = 0x4
+  };
+
+  enum __MIDL___MIDL_itf_shobjidl_0260_0002 {
+    SMIT_SEPARATOR = 0x1,SMIT_STRING = 0x2
+  };
+
+  enum __MIDL___MIDL_itf_shobjidl_0260_0003 {
+    SMIF_ICON = 0x1,SMIF_ACCELERATOR = 0x2,SMIF_DROPTARGET = 0x4,SMIF_SUBMENU = 0x8,SMIF_CHECKED = 0x20,SMIF_DROPCASCADE = 0x40,SMIF_HIDDEN = 0x80,
+    SMIF_DISABLED = 0x100,SMIF_TRACKPOPUP = 0x200,SMIF_DEMOTED = 0x400,SMIF_ALTSTATE = 0x800,SMIF_DRAGNDROP = 0x1000,SMIF_NEW = 0x2000
+  };
+#define SMC_INITMENU 0x00000001
+#define SMC_CREATE 0x00000002
+#define SMC_EXITMENU 0x00000003
+#define SMC_GETINFO 0x00000005
+#define SMC_GETSFINFO 0x00000006
+#define SMC_GETOBJECT 0x00000007
+#define SMC_GETSFOBJECT 0x00000008
+#define SMC_SFEXEC 0x00000009
+#define SMC_SFSELECTITEM 0x0000000A
+#define SMC_REFRESH 0x00000010
+#define SMC_DEMOTE 0x00000011
+#define SMC_PROMOTE 0x00000012
+#define SMC_DEFAULTICON 0x00000016
+#define SMC_NEWITEM 0x00000017
+#define SMC_CHEVRONEXPAND 0x00000019
+#define SMC_DISPLAYCHEVRONTIP 0x0000002A
+#define SMC_SETSFOBJECT 0x0000002D
+#define SMC_SHCHANGENOTIFY 0x0000002E
+#define SMC_CHEVRONGETTIP 0x0000002F
+#define SMC_SFDDRESTRICTED 0x00000030
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0260_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0260_v0_0_s_ifspec;
+
+#ifndef __IShellMenuCallback_INTERFACE_DEFINED__
+#define __IShellMenuCallback_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IShellMenuCallback;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IShellMenuCallback : public IUnknown {
+  public:
+    virtual HRESULT WINAPI CallbackSM(LPSMDATA psmd,UINT uMsg,WPARAM wParam,LPARAM lParam) = 0;
+  };
+#else
+  typedef struct IShellMenuCallbackVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IShellMenuCallback *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IShellMenuCallback *This);
+      ULONG (WINAPI *Release)(IShellMenuCallback *This);
+      HRESULT (WINAPI *CallbackSM)(IShellMenuCallback *This,LPSMDATA psmd,UINT uMsg,WPARAM wParam,LPARAM lParam);
+    END_INTERFACE
+  } IShellMenuCallbackVtbl;
+  struct IShellMenuCallback {
+    CONST_VTBL struct IShellMenuCallbackVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IShellMenuCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellMenuCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellMenuCallback_Release(This) (This)->lpVtbl->Release(This)
+#define IShellMenuCallback_CallbackSM(This,psmd,uMsg,wParam,lParam) (This)->lpVtbl->CallbackSM(This,psmd,uMsg,wParam,lParam)
+#endif
+#endif
+  HRESULT WINAPI IShellMenuCallback_CallbackSM_Proxy(IShellMenuCallback *This,LPSMDATA psmd,UINT uMsg,WPARAM wParam,LPARAM lParam);
+  void __RPC_STUB IShellMenuCallback_CallbackSM_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#ifndef __IAttachmentExecute_INTERFACE_DEFINED__
+#define __IAttachmentExecute_INTERFACE_DEFINED__
+  typedef enum tagATTACHMENT_PROMPT {
+    ATTACHMENT_PROMPT_NONE = 0,ATTACHMENT_PROMPT_SAVE = 0x1,ATTACHMENT_PROMPT_EXEC = 0x2,ATTACHMENT_PROMPT_EXEC_OR_SAVE = 0x3
+  } ATTACHMENT_PROMPT;
+
+  typedef enum tagATTACHMENT_ACTION {
+    ATTACHMENT_ACTION_CANCEL = 0,ATTACHMENT_ACTION_SAVE = 0x1,ATTACHMENT_ACTION_EXEC = 0x2
+  } ATTACHMENT_ACTION;
+
+DEFINE_GUID(IID_IAttachmentExecute, 0x73db1241,0x1e85,0x4581,0x8e,0x4f,0xa8,0x1e,0x1d,0x0f,0x8c,0x57);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IAttachmentExecute : public IUnknown {
+  public:
+    virtual HRESULT WINAPI SetClientTitle(LPCWSTR pszTitle) = 0;
+    virtual HRESULT WINAPI SetClientGuid(REFGUID guid) = 0;
+    virtual HRESULT WINAPI SetLocalPath(LPCWSTR pszLocalPath) = 0;
+    virtual HRESULT WINAPI SetFileName(LPCWSTR pszFileName) = 0;
+    virtual HRESULT WINAPI SetSource(LPCWSTR pszSource) = 0;
+    virtual HRESULT WINAPI SetReferrer(LPCWSTR pszReferrer) = 0;
+    virtual HRESULT WINAPI CheckPolicy(void) = 0;
+    virtual HRESULT WINAPI Prompt(HWND hwnd,ATTACHMENT_PROMPT prompt,ATTACHMENT_ACTION *paction) = 0;
+    virtual HRESULT WINAPI Save(void) = 0;
+    virtual HRESULT WINAPI Execute(HWND hwnd,LPCWSTR pszVerb,HANDLE *phProcess) = 0;
+    virtual HRESULT WINAPI SaveWithUI(HWND hwnd) = 0;
+    virtual HRESULT WINAPI ClearClientState(void) = 0;
+  };
+#else
+  typedef struct IAttachmentExecuteVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IAttachmentExecute *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IAttachmentExecute *This);
+      ULONG (WINAPI *Release)(IAttachmentExecute *This);
+      HRESULT (WINAPI *SetClientTitle)(IAttachmentExecute *This,LPCWSTR pszTitle);
+      HRESULT (WINAPI *SetClientGuid)(IAttachmentExecute *This,REFGUID guid);
+      HRESULT (WINAPI *SetLocalPath)(IAttachmentExecute *This,LPCWSTR pszLocalPath);
+      HRESULT (WINAPI *SetFileName)(IAttachmentExecute *This,LPCWSTR pszFileName);
+      HRESULT (WINAPI *SetSource)(IAttachmentExecute *This,LPCWSTR pszSource);
+      HRESULT (WINAPI *SetReferrer)(IAttachmentExecute *This,LPCWSTR pszReferrer);
+      HRESULT (WINAPI *CheckPolicy)(IAttachmentExecute *This);
+      HRESULT (WINAPI *Prompt)(IAttachmentExecute *This,HWND hwnd,ATTACHMENT_PROMPT prompt,ATTACHMENT_ACTION *paction);
+      HRESULT (WINAPI *Save)(IAttachmentExecute *This);
+      HRESULT (WINAPI *Execute)(IAttachmentExecute *This,HWND hwnd,LPCWSTR pszVerb,HANDLE *phProcess);
+      HRESULT (WINAPI *SaveWithUI)(IAttachmentExecute *This,HWND hwnd);
+      HRESULT (WINAPI *ClearClientState)(IAttachmentExecute *This);
+    END_INTERFACE
+  } IAttachmentExecuteVtbl;
+  struct IAttachmentExecute {
+    CONST_VTBL struct IAttachmentExecuteVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IAttachmentExecute_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IAttachmentExecute_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IAttachmentExecute_Release(This) (This)->lpVtbl->Release(This)
+#define IAttachmentExecute_SetClientTitle(This,pszTitle) (This)->lpVtbl->SetClientTitle(This,pszTitle)
+#define IAttachmentExecute_SetClientGuid(This,guid) (This)->lpVtbl->SetClientGuid(This,guid)
+#define IAttachmentExecute_SetLocalPath(This,pszLocalPath) (This)->lpVtbl->SetLocalPath(This,pszLocalPath)
+#define IAttachmentExecute_SetFileName(This,pszFileName) (This)->lpVtbl->SetFileName(This,pszFileName)
+#define IAttachmentExecute_SetSource(This,pszSource) (This)->lpVtbl->SetSource(This,pszSource)
+#define IAttachmentExecute_SetReferrer(This,pszReferrer) (This)->lpVtbl->SetReferrer(This,pszReferrer)
+#define IAttachmentExecute_CheckPolicy(This) (This)->lpVtbl->CheckPolicy(This)
+#define IAttachmentExecute_Prompt(This,hwnd,prompt,paction) (This)->lpVtbl->Prompt(This,hwnd,prompt,paction)
+#define IAttachmentExecute_Save(This) (This)->lpVtbl->Save(This)
+#define IAttachmentExecute_Execute(This,hwnd,pszVerb,phProcess) (This)->lpVtbl->Execute(This,hwnd,pszVerb,phProcess)
+#define IAttachmentExecute_SaveWithUI(This,hwnd) (This)->lpVtbl->SaveWithUI(This,hwnd)
+#define IAttachmentExecute_ClearClientState(This) (This)->lpVtbl->ClearClientState(This)
+#endif
+#endif
+  HRESULT WINAPI IAttachmentExecute_SetClientTitle_Proxy(IAttachmentExecute *This,LPCWSTR pszTitle);
+  void __RPC_STUB IAttachmentExecute_SetClientTitle_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IAttachmentExecute_SetClientGuid_Proxy(IAttachmentExecute *This,REFGUID guid);
+  void __RPC_STUB IAttachmentExecute_SetClientGuid_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IAttachmentExecute_SetLocalPath_Proxy(IAttachmentExecute *This,LPCWSTR pszLocalPath);
+  void __RPC_STUB IAttachmentExecute_SetLocalPath_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IAttachmentExecute_SetFileName_Proxy(IAttachmentExecute *This,LPCWSTR pszFileName);
+  void __RPC_STUB IAttachmentExecute_SetFileName_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IAttachmentExecute_SetSource_Proxy(IAttachmentExecute *This,LPCWSTR pszSource);
+  void __RPC_STUB IAttachmentExecute_SetSource_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IAttachmentExecute_SetReferrer_Proxy(IAttachmentExecute *This,LPCWSTR pszReferrer);
+  void __RPC_STUB IAttachmentExecute_SetReferrer_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IAttachmentExecute_CheckPolicy_Proxy(IAttachmentExecute *This);
+  void __RPC_STUB IAttachmentExecute_CheckPolicy_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IAttachmentExecute_Prompt_Proxy(IAttachmentExecute *This,HWND hwnd,ATTACHMENT_PROMPT prompt,ATTACHMENT_ACTION *paction);
+  void __RPC_STUB IAttachmentExecute_Prompt_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IAttachmentExecute_Save_Proxy(IAttachmentExecute *This);
+  void __RPC_STUB IAttachmentExecute_Save_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IAttachmentExecute_Execute_Proxy(IAttachmentExecute *This,HWND hwnd,LPCWSTR pszVerb,HANDLE *phProcess);
+  void __RPC_STUB IAttachmentExecute_Execute_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IAttachmentExecute_SaveWithUI_Proxy(IAttachmentExecute *This,HWND hwnd);
+  void __RPC_STUB IAttachmentExecute_SaveWithUI_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IAttachmentExecute_ClearClientState_Proxy(IAttachmentExecute *This);
+  void __RPC_STUB IAttachmentExecute_ClearClientState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+#define SMINIT_DEFAULT 0x00000000
+#define SMINIT_RESTRICT_DRAGDROP 0x00000002
+#define SMINIT_TOPLEVEL 0x00000004
+#define SMINIT_CACHED 0x00000010
+#define SMINIT_VERTICAL 0x10000000
+#define SMINIT_HORIZONTAL 0x20000000
+#define ANCESTORDEFAULT (UINT)-1
+#define SMSET_TOP 0x10000000
+#define SMSET_BOTTOM 0x20000000
+#define SMSET_DONTOWN 0x00000001
+#define SMINV_REFRESH 0x00000001
+#define SMINV_ID 0x00000008
+
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0262_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0262_v0_0_s_ifspec;
+#ifndef __IShellMenu_INTERFACE_DEFINED__
+#define __IShellMenu_INTERFACE_DEFINED__
+  EXTERN_C const IID IID_IShellMenu;
+#if defined(__cplusplus) && !defined(CINTERFACE)
+  struct IShellMenu : public IUnknown {
+  public:
+    virtual HRESULT WINAPI Initialize(IShellMenuCallback *psmc,UINT uId,UINT uIdAncestor,DWORD dwFlags) = 0;
+    virtual HRESULT WINAPI GetMenuInfo(IShellMenuCallback **ppsmc,UINT *puId,UINT *puIdAncestor,DWORD *pdwFlags) = 0;
+    virtual HRESULT WINAPI SetShellFolder(IShellFolder *psf,LPCITEMIDLIST pidlFolder,HKEY hKey,DWORD dwFlags) = 0;
+    virtual HRESULT WINAPI GetShellFolder(DWORD *pdwFlags,LPITEMIDLIST *ppidl,REFIID riid,void **ppv) = 0;
+    virtual HRESULT WINAPI SetMenu(HMENU hmenu,HWND hwnd,DWORD dwFlags) = 0;
+    virtual HRESULT WINAPI GetMenu(HMENU *phmenu,HWND *phwnd,DWORD *pdwFlags) = 0;
+    virtual HRESULT WINAPI InvalidateItem(LPSMDATA psmd,DWORD dwFlags) = 0;
+    virtual HRESULT WINAPI GetState(LPSMDATA psmd) = 0;
+    virtual HRESULT WINAPI SetMenuToolbar(IUnknown *punk,DWORD dwFlags) = 0;
+  };
+#else
+  typedef struct IShellMenuVtbl {
+    BEGIN_INTERFACE
+      HRESULT (WINAPI *QueryInterface)(IShellMenu *This,REFIID riid,void **ppvObject);
+      ULONG (WINAPI *AddRef)(IShellMenu *This);
+      ULONG (WINAPI *Release)(IShellMenu *This);
+      HRESULT (WINAPI *Initialize)(IShellMenu *This,IShellMenuCallback *psmc,UINT uId,UINT uIdAncestor,DWORD dwFlags);
+      HRESULT (WINAPI *GetMenuInfo)(IShellMenu *This,IShellMenuCallback **ppsmc,UINT *puId,UINT *puIdAncestor,DWORD *pdwFlags);
+      HRESULT (WINAPI *SetShellFolder)(IShellMenu *This,IShellFolder *psf,LPCITEMIDLIST pidlFolder,HKEY hKey,DWORD dwFlags);
+      HRESULT (WINAPI *GetShellFolder)(IShellMenu *This,DWORD *pdwFlags,LPITEMIDLIST *ppidl,REFIID riid,void **ppv);
+      HRESULT (WINAPI *SetMenu)(IShellMenu *This,HMENU hmenu,HWND hwnd,DWORD dwFlags);
+      HRESULT (WINAPI *GetMenu)(IShellMenu *This,HMENU *phmenu,HWND *phwnd,DWORD *pdwFlags);
+      HRESULT (WINAPI *InvalidateItem)(IShellMenu *This,LPSMDATA psmd,DWORD dwFlags);
+      HRESULT (WINAPI *GetState)(IShellMenu *This,LPSMDATA psmd);
+      HRESULT (WINAPI *SetMenuToolbar)(IShellMenu *This,IUnknown *punk,DWORD dwFlags);
+    END_INTERFACE
+  } IShellMenuVtbl;
+  struct IShellMenu {
+    CONST_VTBL struct IShellMenuVtbl *lpVtbl;
+  };
+#ifdef COBJMACROS
+#define IShellMenu_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellMenu_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellMenu_Release(This) (This)->lpVtbl->Release(This)
+#define IShellMenu_Initialize(This,psmc,uId,uIdAncestor,dwFlags) (This)->lpVtbl->Initialize(This,psmc,uId,uIdAncestor,dwFlags)
+#define IShellMenu_GetMenuInfo(This,ppsmc,puId,puIdAncestor,pdwFlags) (This)->lpVtbl->GetMenuInfo(This,ppsmc,puId,puIdAncestor,pdwFlags)
+#define IShellMenu_SetShellFolder(This,psf,pidlFolder,hKey,dwFlags) (This)->lpVtbl->SetShellFolder(This,psf,pidlFolder,hKey,dwFlags)
+#define IShellMenu_GetShellFolder(This,pdwFlags,ppidl,riid,ppv) (This)->lpVtbl->GetShellFolder(This,pdwFlags,ppidl,riid,ppv)
+#define IShellMenu_SetMenu(This,hmenu,hwnd,dwFlags) (This)->lpVtbl->SetMenu(This,hmenu,hwnd,dwFlags)
+#define IShellMenu_GetMenu(This,phmenu,phwnd,pdwFlags) (This)->lpVtbl->GetMenu(This,phmenu,phwnd,pdwFlags)
+#define IShellMenu_InvalidateItem(This,psmd,dwFlags) (This)->lpVtbl->InvalidateItem(This,psmd,dwFlags)
+#define IShellMenu_GetState(This,psmd) (This)->lpVtbl->GetState(This,psmd)
+#define IShellMenu_SetMenuToolbar(This,punk,dwFlags) (This)->lpVtbl->SetMenuToolbar(This,punk,dwFlags)
+#endif
+#endif
+  HRESULT WINAPI IShellMenu_Initialize_Proxy(IShellMenu *This,IShellMenuCallback *psmc,UINT uId,UINT uIdAncestor,DWORD dwFlags);
+  void __RPC_STUB IShellMenu_Initialize_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellMenu_GetMenuInfo_Proxy(IShellMenu *This,IShellMenuCallback **ppsmc,UINT *puId,UINT *puIdAncestor,DWORD *pdwFlags);
+  void __RPC_STUB IShellMenu_GetMenuInfo_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellMenu_SetShellFolder_Proxy(IShellMenu *This,IShellFolder *psf,LPCITEMIDLIST pidlFolder,HKEY hKey,DWORD dwFlags);
+  void __RPC_STUB IShellMenu_SetShellFolder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellMenu_GetShellFolder_Proxy(IShellMenu *This,DWORD *pdwFlags,LPITEMIDLIST *ppidl,REFIID riid,void **ppv);
+  void __RPC_STUB IShellMenu_GetShellFolder_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellMenu_SetMenu_Proxy(IShellMenu *This,HMENU hmenu,HWND hwnd,DWORD dwFlags);
+  void __RPC_STUB IShellMenu_SetMenu_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellMenu_GetMenu_Proxy(IShellMenu *This,HMENU *phmenu,HWND *phwnd,DWORD *pdwFlags);
+  void __RPC_STUB IShellMenu_GetMenu_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellMenu_InvalidateItem_Proxy(IShellMenu *This,LPSMDATA psmd,DWORD dwFlags);
+  void __RPC_STUB IShellMenu_InvalidateItem_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellMenu_GetState_Proxy(IShellMenu *This,LPSMDATA psmd);
+  void __RPC_STUB IShellMenu_GetState_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+  HRESULT WINAPI IShellMenu_SetMenuToolbar_Proxy(IShellMenu *This,IUnknown *punk,DWORD dwFlags);
+  void __RPC_STUB IShellMenu_SetMenuToolbar_Stub(IRpcStubBuffer *This,IRpcChannelBuffer *_pRpcChannelBuffer,PRPC_MESSAGE _pRpcMessage,DWORD *_pdwStubPhase);
+#endif
+
+typedef enum FDE_OVERWRITE_RESPONSE {
+    FDEOR_DEFAULT = 0,
+    FDEOR_ACCCEP = 1,
+    FDEOR_REFUSE = 2
+} FDE_OVERWRITE_RESPONSE;
+typedef enum FDE_SHAREVIOLATION_RESPONSE {
+    FDESVR_DEFAULT = 0,
+    FDESVR_ACCEPT = 1,
+    FDESVR_REFUSE = 2
+} FDE_SHAREVIOLATION_RESPONSE;
+
+/*****************************************************************************
+ * IFileDialogEvents interface
+ */
+#ifndef __IFileDialogEvents_INTERFACE_DEFINED__
+#define __IFileDialogEvents_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IFileDialogEvents, 0x973510db, 0x7d7f, 0x452b, 0x89,0x75, 0x74,0xa8,0x58,0x28,0xd3,0x54);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("973510db-7d7f-452b-8975-74a85828d354")
+IFileDialogEvents : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE OnFileOk(
+        IFileDialog *pfd) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnFolderChanging(
+        IFileDialog *pfd,
+        IShellItem *psiFolder) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnFolderChange(
+        IFileDialog *pfd) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnSelectionChange(
+        IFileDialog *pfd) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnShareViolation(
+        IFileDialog *pfd,
+        IShellItem *psi,
+        FDE_SHAREVIOLATION_RESPONSE *pResponse) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnTypeChange(
+        IFileDialog *pfd) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE OnOverwrite(
+        IFileDialog *pfd,
+        IShellItem *psi,
+        FDE_OVERWRITE_RESPONSE *pResponse) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IFileDialogEvents, 0x973510db, 0x7d7f, 0x452b, 0x89,0x75, 0x74,0xa8,0x58,0x28,0xd3,0x54)
+#endif
+#else
+typedef struct IFileDialogEventsVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IFileDialogEvents* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IFileDialogEvents* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IFileDialogEvents* This);
+
+    /*** IFileDialogEvents methods ***/
+    HRESULT (STDMETHODCALLTYPE *OnFileOk)(
+        IFileDialogEvents* This,
+        IFileDialog *pfd);
+
+    HRESULT (STDMETHODCALLTYPE *OnFolderChanging)(
+        IFileDialogEvents* This,
+        IFileDialog *pfd,
+        IShellItem *psiFolder);
+
+    HRESULT (STDMETHODCALLTYPE *OnFolderChange)(
+        IFileDialogEvents* This,
+        IFileDialog *pfd);
+
+    HRESULT (STDMETHODCALLTYPE *OnSelectionChange)(
+        IFileDialogEvents* This,
+        IFileDialog *pfd);
+
+    HRESULT (STDMETHODCALLTYPE *OnShareViolation)(
+        IFileDialogEvents* This,
+        IFileDialog *pfd,
+        IShellItem *psi,
+        FDE_SHAREVIOLATION_RESPONSE *pResponse);
+
+    HRESULT (STDMETHODCALLTYPE *OnTypeChange)(
+        IFileDialogEvents* This,
+        IFileDialog *pfd);
+
+    HRESULT (STDMETHODCALLTYPE *OnOverwrite)(
+        IFileDialogEvents* This,
+        IFileDialog *pfd,
+        IShellItem *psi,
+        FDE_OVERWRITE_RESPONSE *pResponse);
+
+    END_INTERFACE
+} IFileDialogEventsVtbl;
+interface IFileDialogEvents {
+    CONST_VTBL IFileDialogEventsVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IFileDialogEvents_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IFileDialogEvents_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IFileDialogEvents_Release(This) (This)->lpVtbl->Release(This)
+/*** IFileDialogEvents methods ***/
+#define IFileDialogEvents_OnFileOk(This,pfd) (This)->lpVtbl->OnFileOk(This,pfd)
+#define IFileDialogEvents_OnFolderChanging(This,pfd,psiFolder) (This)->lpVtbl->OnFolderChanging(This,pfd,psiFolder)
+#define IFileDialogEvents_OnFolderChange(This,pfd) (This)->lpVtbl->OnFolderChange(This,pfd)
+#define IFileDialogEvents_OnSelectionChange(This,pfd) (This)->lpVtbl->OnSelectionChange(This,pfd)
+#define IFileDialogEvents_OnShareViolation(This,pfd,psi,pResponse) (This)->lpVtbl->OnShareViolation(This,pfd,psi,pResponse)
+#define IFileDialogEvents_OnTypeChange(This,pfd) (This)->lpVtbl->OnTypeChange(This,pfd)
+#define IFileDialogEvents_OnOverwrite(This,pfd,psi,pResponse) (This)->lpVtbl->OnOverwrite(This,pfd,psi,pResponse)
+#endif
+
+#endif
+
+#endif  /* __IFileDialogEvents_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * IApplicationAssociationRegistration interface
+ */
+#ifndef __IApplicationAssociationRegistration_INTERFACE_DEFINED__
+#define __IApplicationAssociationRegistration_INTERFACE_DEFINED__
+
+typedef enum ASSOCIATIONLEVEL {
+    AL_MACHINE = 0,
+    AL_EFFECTIVE = 1,
+    AL_USER = 2
+} ASSOCIATIONLEVEL;
+
+typedef enum ASSOCIATIONTYPE {
+    AT_FILEEXTENSION = 0,
+    AT_URLPROTOCOL = 1,
+    AT_STARTMENUCLIENT = 2,
+    AT_MIMETYPE = 3
+} ASSOCIATIONTYPE;
+
+DEFINE_GUID(IID_IApplicationAssociationRegistration, 0x4e530b0a, 0xe611, 0x4c77, 0xa3,0xac, 0x90,0x31,0xd0,0x22,0x28,0x1b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface IApplicationAssociationRegistration : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE QueryCurrentDefault(
+        LPCWSTR pszQuery,
+        ASSOCIATIONTYPE atQueryType,
+        ASSOCIATIONLEVEL alQueryLevel,
+        LPWSTR *ppszAssociation) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE QueryAppIsDefault(
+        LPCWSTR pszQuery,
+        ASSOCIATIONTYPE atQueryType,
+        ASSOCIATIONLEVEL alQueryLevel,
+        LPCWSTR pszAppRegistryName,
+        BOOL *pfDefault) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE QueryAppIsDefaultAll(
+        ASSOCIATIONLEVEL alQueryLevel,
+        LPCWSTR pszAppRegistryName,
+        BOOL *pfDefault) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetAppAsDefault(
+        LPCWSTR pszAppRegistryName,
+        LPCWSTR pszSet,
+        ASSOCIATIONTYPE atSetType) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetAppAsDefaultAll(
+        LPCWSTR pszAppRegistryName) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ClearUserAssociations(
+        ) = 0;
+
+};
+#else
+typedef struct IApplicationAssociationRegistrationVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IApplicationAssociationRegistration* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IApplicationAssociationRegistration* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IApplicationAssociationRegistration* This);
+
+    /*** IApplicationAssociationRegistration methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryCurrentDefault)(
+        IApplicationAssociationRegistration* This,
+        LPCWSTR pszQuery,
+        ASSOCIATIONTYPE atQueryType,
+        ASSOCIATIONLEVEL alQueryLevel,
+        LPWSTR *ppszAssociation);
+
+    HRESULT (STDMETHODCALLTYPE *QueryAppIsDefault)(
+        IApplicationAssociationRegistration* This,
+        LPCWSTR pszQuery,
+        ASSOCIATIONTYPE atQueryType,
+        ASSOCIATIONLEVEL alQueryLevel,
+        LPCWSTR pszAppRegistryName,
+        BOOL *pfDefault);
+
+    HRESULT (STDMETHODCALLTYPE *QueryAppIsDefaultAll)(
+        IApplicationAssociationRegistration* This,
+        ASSOCIATIONLEVEL alQueryLevel,
+        LPCWSTR pszAppRegistryName,
+        BOOL *pfDefault);
+
+    HRESULT (STDMETHODCALLTYPE *SetAppAsDefault)(
+        IApplicationAssociationRegistration* This,
+        LPCWSTR pszAppRegistryName,
+        LPCWSTR pszSet,
+        ASSOCIATIONTYPE atSetType);
+
+    HRESULT (STDMETHODCALLTYPE *SetAppAsDefaultAll)(
+        IApplicationAssociationRegistration* This,
+        LPCWSTR pszAppRegistryName);
+
+    HRESULT (STDMETHODCALLTYPE *ClearUserAssociations)(
+        IApplicationAssociationRegistration* This);
+
+    END_INTERFACE
+} IApplicationAssociationRegistrationVtbl;
+interface IApplicationAssociationRegistration {
+    CONST_VTBL IApplicationAssociationRegistrationVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define IApplicationAssociationRegistration_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IApplicationAssociationRegistration_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IApplicationAssociationRegistration_Release(This) (This)->lpVtbl->Release(This)
+/*** IApplicationAssociationRegistration methods ***/
+#define IApplicationAssociationRegistration_QueryCurrentDefault(This,pszQuery,atQueryType,alQueryLevel,ppszAssociation) (This)->lpVtbl->QueryCurrentDefault(This,pszQuery,atQueryType,alQueryLevel,ppszAssociation)
+#define IApplicationAssociationRegistration_QueryAppIsDefault(This,pszQuery,atQueryType,alQueryLevel,pszAppRegistryName,pfDefault) (This)->lpVtbl->QueryAppIsDefault(This,pszQuery,atQueryType,alQueryLevel,pszAppRegistryName,pfDefault)
+#define IApplicationAssociationRegistration_QueryAppIsDefaultAll(This,alQueryLevel,pszAppRegistryName,pfDefault) (This)->lpVtbl->QueryAppIsDefaultAll(This,alQueryLevel,pszAppRegistryName,pfDefault)
+#define IApplicationAssociationRegistration_SetAppAsDefault(This,pszAppRegistryName,pszSet,atSetType) (This)->lpVtbl->SetAppAsDefault(This,pszAppRegistryName,pszSet,atSetType)
+#define IApplicationAssociationRegistration_SetAppAsDefaultAll(This,pszAppRegistryName) (This)->lpVtbl->SetAppAsDefaultAll(This,pszAppRegistryName)
+#define IApplicationAssociationRegistration_ClearUserAssociations(This) (This)->lpVtbl->ClearUserAssociations(This)
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IApplicationAssociationRegistration_QueryCurrentDefault_Proxy(
+    IApplicationAssociationRegistration* This,
+    LPCWSTR pszQuery,
+    ASSOCIATIONTYPE atQueryType,
+    ASSOCIATIONLEVEL alQueryLevel,
+    LPWSTR *ppszAssociation);
+void __RPC_STUB IApplicationAssociationRegistration_QueryCurrentDefault_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IApplicationAssociationRegistration_QueryAppIsDefault_Proxy(
+    IApplicationAssociationRegistration* This,
+    LPCWSTR pszQuery,
+    ASSOCIATIONTYPE atQueryType,
+    ASSOCIATIONLEVEL alQueryLevel,
+    LPCWSTR pszAppRegistryName,
+    BOOL *pfDefault);
+void __RPC_STUB IApplicationAssociationRegistration_QueryAppIsDefault_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IApplicationAssociationRegistration_QueryAppIsDefaultAll_Proxy(
+    IApplicationAssociationRegistration* This,
+    ASSOCIATIONLEVEL alQueryLevel,
+    LPCWSTR pszAppRegistryName,
+    BOOL *pfDefault);
+void __RPC_STUB IApplicationAssociationRegistration_QueryAppIsDefaultAll_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IApplicationAssociationRegistration_SetAppAsDefault_Proxy(
+    IApplicationAssociationRegistration* This,
+    LPCWSTR pszAppRegistryName,
+    LPCWSTR pszSet,
+    ASSOCIATIONTYPE atSetType);
+void __RPC_STUB IApplicationAssociationRegistration_SetAppAsDefault_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IApplicationAssociationRegistration_SetAppAsDefaultAll_Proxy(
+    IApplicationAssociationRegistration* This,
+    LPCWSTR pszAppRegistryName);
+void __RPC_STUB IApplicationAssociationRegistration_SetAppAsDefaultAll_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IApplicationAssociationRegistration_ClearUserAssociations_Proxy(
+    IApplicationAssociationRegistration* This);
+void __RPC_STUB IApplicationAssociationRegistration_ClearUserAssociations_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IApplicationAssociationRegistration_INTERFACE_DEFINED__ */
+
+/*****************************************************************************
+ * ICustomDestinationList interface
+ */
+#ifndef __ICustomDestinationList_INTERFACE_DEFINED__
+#define __ICustomDestinationList_INTERFACE_DEFINED__
+
+typedef enum KNOWNDESTCATEGORY {
+    KDC_FREQUENT = 1,
+    KDC_RECENT = 2
+} KNOWNDESTCATEGORY;
+
+DEFINE_GUID(IID_ICustomDestinationList, 0x6332debf, 0x87b5, 0x4670, 0x90,0xc0, 0x5e,0x57,0xb4,0x08,0xa4,0x9e);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+interface ICustomDestinationList : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE SetAppID(
+        LPCWSTR pszAppID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE BeginList(
+        UINT *pcMinSlots,
+        REFIID riid,
+        void **ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AppendCategory(
+        LPCWSTR pszCategory,
+        IObjectArray *poa) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AppendKnownCategory(
+        KNOWNDESTCATEGORY category) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddUserTasks(
+        IObjectArray *poa) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE CommitList(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetRemovedDestinations(
+        REFIID riid,
+        void **ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE DeleteList(
+        LPCWSTR pszAppID) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AbortList(
+        ) = 0;
+
+};
+#else
+typedef struct ICustomDestinationListVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        ICustomDestinationList* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        ICustomDestinationList* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        ICustomDestinationList* This);
+
+    /*** ICustomDestinationList methods ***/
+    HRESULT (STDMETHODCALLTYPE *SetAppID)(
+        ICustomDestinationList* This,
+        LPCWSTR pszAppID);
+
+    HRESULT (STDMETHODCALLTYPE *BeginList)(
+        ICustomDestinationList* This,
+        UINT *pcMinSlots,
+        REFIID riid,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *AppendCategory)(
+        ICustomDestinationList* This,
+        LPCWSTR pszCategory,
+        IObjectArray *poa);
+
+    HRESULT (STDMETHODCALLTYPE *AppendKnownCategory)(
+        ICustomDestinationList* This,
+        KNOWNDESTCATEGORY category);
+
+    HRESULT (STDMETHODCALLTYPE *AddUserTasks)(
+        ICustomDestinationList* This,
+        IObjectArray *poa);
+
+    HRESULT (STDMETHODCALLTYPE *CommitList)(
+        ICustomDestinationList* This);
+
+    HRESULT (STDMETHODCALLTYPE *GetRemovedDestinations)(
+        ICustomDestinationList* This,
+        REFIID riid,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *DeleteList)(
+        ICustomDestinationList* This,
+        LPCWSTR pszAppID);
+
+    HRESULT (STDMETHODCALLTYPE *AbortList)(
+        ICustomDestinationList* This);
+
+    END_INTERFACE
+} ICustomDestinationListVtbl;
+interface ICustomDestinationList {
+    CONST_VTBL ICustomDestinationListVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+/*** IUnknown methods ***/
+#define ICustomDestinationList_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define ICustomDestinationList_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define ICustomDestinationList_Release(This) (This)->lpVtbl->Release(This)
+/*** ICustomDestinationList methods ***/
+#define ICustomDestinationList_SetAppID(This,pszAppID) (This)->lpVtbl->SetAppID(This,pszAppID)
+#define ICustomDestinationList_BeginList(This,pcMinSlots,riid,ppv) (This)->lpVtbl->BeginList(This,pcMinSlots,riid,ppv)
+#define ICustomDestinationList_AppendCategory(This,pszCategory,poa) (This)->lpVtbl->AppendCategory(This,pszCategory,poa)
+#define ICustomDestinationList_AppendKnownCategory(This,category) (This)->lpVtbl->AppendKnownCategory(This,category)
+#define ICustomDestinationList_AddUserTasks(This,poa) (This)->lpVtbl->AddUserTasks(This,poa)
+#define ICustomDestinationList_CommitList(This) (This)->lpVtbl->CommitList(This)
+#define ICustomDestinationList_GetRemovedDestinations(This,riid,ppv) (This)->lpVtbl->GetRemovedDestinations(This,riid,ppv)
+#define ICustomDestinationList_DeleteList(This,pszAppID) (This)->lpVtbl->DeleteList(This,pszAppID)
+#define ICustomDestinationList_AbortList(This) (This)->lpVtbl->AbortList(This)
+#endif
+
+#endif
+#endif  /* __ICustomDestinationList_INTERFACE_DEFINED__ */
+/*****************************************************************************
+ * IShellLibrary interface
+ */
+#ifndef __IShellLibrary_INTERFACE_DEFINED__
+#define __IShellLibrary_INTERFACE_DEFINED__
+
+typedef enum LIBRARYFOLDERFILTER {
+    LFF_FORCEFILESYSTEM = 1,
+    LFF_STORAGEITEMS = 2,
+    LFF_ALLITEMS = 3
+} LIBRARYFOLDERFILTER;
+typedef enum LIBRARYOPTIONFLAGS {
+    LOF_DEFAULT = 0x0,
+    LOF_PINNEDTONAVPANE = 0x1,
+    LOF_MASK_ALL = 0x1
+} LIBRARYOPTIONFLAGS;
+DEFINE_ENUM_FLAG_OPERATORS(LIBRARYOPTIONFLAGS)
+typedef enum DEFAULTSAVEFOLDERTYPE {
+    DSFT_DETECT = 1,
+    DSFT_PRIVATE = 2,
+    DSFT_PUBLIC = 3
+} DEFAULTSAVEFOLDERTYPE;
+typedef enum LIBRARYSAVEFLAGS {
+    LSF_FAILIFTHERE = 0x0,
+    LSF_OVERRIDEEXISTING = 0x1,
+    LSF_MAKEUNIQUENAME = 0x2
+} LIBRARYSAVEFLAGS;
+DEFINE_ENUM_FLAG_OPERATORS(LIBRARYSAVEFLAGS)
+DEFINE_GUID(IID_IShellLibrary, 0x11a66efa, 0x382e, 0x451a, 0x92,0x34, 0x1e,0x0e,0x12,0xef,0x30,0x85);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("11a66efa-382e-451a-9234-1e0e12ef3085")
+IShellLibrary : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE LoadLibraryFromItem(
+        IShellItem *psiLibrary,
+        DWORD grfMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE LoadLibraryFromKnownFolder(
+        REFKNOWNFOLDERID kfidLibrary,
+        DWORD grfMode) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE AddFolder(
+        IShellItem *psiLocation) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE RemoveFolder(
+        IShellItem *psiLocation) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFolders(
+        LIBRARYFOLDERFILTER lff,
+        REFIID riid,
+        void **ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE ResolveFolder(
+        IShellItem *psiFolderToResolve,
+        DWORD dwTimeout,
+        REFIID riid,
+        void **ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetDefaultSaveFolder(
+        DEFAULTSAVEFOLDERTYPE dsft,
+        REFIID riid,
+        void **ppv) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetDefaultSaveFolder(
+        DEFAULTSAVEFOLDERTYPE dsft,
+        IShellItem *psi) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetOptions(
+        LIBRARYOPTIONFLAGS *plofOptions) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetOptions(
+        LIBRARYOPTIONFLAGS lofMask,
+        LIBRARYOPTIONFLAGS lofOptions) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetFolderType(
+        FOLDERTYPEID *pftid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetFolderType(
+        REFFOLDERTYPEID ftid) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetIcon(
+        LPWSTR *ppszIcon) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SetIcon(
+        LPCWSTR pszIcon) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Commit(
+        ) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE Save(
+        IShellItem *psiFolderToSaveIn,
+        LPCWSTR pszLibraryName,
+        LIBRARYSAVEFLAGS lsf,
+        IShellItem **ppsiSavedTo) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE SaveInKnownFolder(
+        REFKNOWNFOLDERID kfidToSaveIn,
+        LPCWSTR pszLibraryName,
+        LIBRARYSAVEFLAGS lsf,
+        IShellItem **ppsiSavedTo) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IShellLibrary, 0x11a66efa, 0x382e, 0x451a, 0x92,0x34, 0x1e,0x0e,0x12,0xef,0x30,0x85)
+#endif
+#else
+typedef struct IShellLibraryVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IShellLibrary* This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IShellLibrary* This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IShellLibrary* This);
+
+    /*** IShellLibrary methods ***/
+    HRESULT (STDMETHODCALLTYPE *LoadLibraryFromItem)(
+        IShellLibrary* This,
+        IShellItem *psiLibrary,
+        DWORD grfMode);
+
+    HRESULT (STDMETHODCALLTYPE *LoadLibraryFromKnownFolder)(
+        IShellLibrary* This,
+        REFKNOWNFOLDERID kfidLibrary,
+        DWORD grfMode);
+
+    HRESULT (STDMETHODCALLTYPE *AddFolder)(
+        IShellLibrary* This,
+        IShellItem *psiLocation);
+
+    HRESULT (STDMETHODCALLTYPE *RemoveFolder)(
+        IShellLibrary* This,
+        IShellItem *psiLocation);
+
+    HRESULT (STDMETHODCALLTYPE *GetFolders)(
+        IShellLibrary* This,
+        LIBRARYFOLDERFILTER lff,
+        REFIID riid,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *ResolveFolder)(
+        IShellLibrary* This,
+        IShellItem *psiFolderToResolve,
+        DWORD dwTimeout,
+        REFIID riid,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *GetDefaultSaveFolder)(
+        IShellLibrary* This,
+        DEFAULTSAVEFOLDERTYPE dsft,
+        REFIID riid,
+        void **ppv);
+
+    HRESULT (STDMETHODCALLTYPE *SetDefaultSaveFolder)(
+        IShellLibrary* This,
+        DEFAULTSAVEFOLDERTYPE dsft,
+        IShellItem *psi);
+
+    HRESULT (STDMETHODCALLTYPE *GetOptions)(
+        IShellLibrary* This,
+        LIBRARYOPTIONFLAGS *plofOptions);
+
+    HRESULT (STDMETHODCALLTYPE *SetOptions)(
+        IShellLibrary* This,
+        LIBRARYOPTIONFLAGS lofMask,
+        LIBRARYOPTIONFLAGS lofOptions);
+
+    HRESULT (STDMETHODCALLTYPE *GetFolderType)(
+        IShellLibrary* This,
+        FOLDERTYPEID *pftid);
+
+    HRESULT (STDMETHODCALLTYPE *SetFolderType)(
+        IShellLibrary* This,
+        REFFOLDERTYPEID ftid);
+
+    HRESULT (STDMETHODCALLTYPE *GetIcon)(
+        IShellLibrary* This,
+        LPWSTR *ppszIcon);
+
+    HRESULT (STDMETHODCALLTYPE *SetIcon)(
+        IShellLibrary* This,
+        LPCWSTR pszIcon);
+
+    HRESULT (STDMETHODCALLTYPE *Commit)(
+        IShellLibrary* This);
+
+    HRESULT (STDMETHODCALLTYPE *Save)(
+        IShellLibrary* This,
+        IShellItem *psiFolderToSaveIn,
+        LPCWSTR pszLibraryName,
+        LIBRARYSAVEFLAGS lsf,
+        IShellItem **ppsiSavedTo);
+
+    HRESULT (STDMETHODCALLTYPE *SaveInKnownFolder)(
+        IShellLibrary* This,
+        REFKNOWNFOLDERID kfidToSaveIn,
+        LPCWSTR pszLibraryName,
+        LIBRARYSAVEFLAGS lsf,
+        IShellItem **ppsiSavedTo);
+
+    END_INTERFACE
+} IShellLibraryVtbl;
+interface IShellLibrary {
+    CONST_VTBL IShellLibraryVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IShellLibrary_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IShellLibrary_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IShellLibrary_Release(This) (This)->lpVtbl->Release(This)
+/*** IShellLibrary methods ***/
+#define IShellLibrary_LoadLibraryFromItem(This,psiLibrary,grfMode) (This)->lpVtbl->LoadLibraryFromItem(This,psiLibrary,grfMode)
+#define IShellLibrary_LoadLibraryFromKnownFolder(This,kfidLibrary,grfMode) (This)->lpVtbl->LoadLibraryFromKnownFolder(This,kfidLibrary,grfMode)
+#define IShellLibrary_AddFolder(This,psiLocation) (This)->lpVtbl->AddFolder(This,psiLocation)
+#define IShellLibrary_RemoveFolder(This,psiLocation) (This)->lpVtbl->RemoveFolder(This,psiLocation)
+#define IShellLibrary_GetFolders(This,lff,riid,ppv) (This)->lpVtbl->GetFolders(This,lff,riid,ppv)
+#define IShellLibrary_ResolveFolder(This,psiFolderToResolve,dwTimeout,riid,ppv) (This)->lpVtbl->ResolveFolder(This,psiFolderToResolve,dwTimeout,riid,ppv)
+#define IShellLibrary_GetDefaultSaveFolder(This,dsft,riid,ppv) (This)->lpVtbl->GetDefaultSaveFolder(This,dsft,riid,ppv)
+#define IShellLibrary_SetDefaultSaveFolder(This,dsft,psi) (This)->lpVtbl->SetDefaultSaveFolder(This,dsft,psi)
+#define IShellLibrary_GetOptions(This,plofOptions) (This)->lpVtbl->GetOptions(This,plofOptions)
+#define IShellLibrary_SetOptions(This,lofMask,lofOptions) (This)->lpVtbl->SetOptions(This,lofMask,lofOptions)
+#define IShellLibrary_GetFolderType(This,pftid) (This)->lpVtbl->GetFolderType(This,pftid)
+#define IShellLibrary_SetFolderType(This,ftid) (This)->lpVtbl->SetFolderType(This,ftid)
+#define IShellLibrary_GetIcon(This,ppszIcon) (This)->lpVtbl->GetIcon(This,ppszIcon)
+#define IShellLibrary_SetIcon(This,pszIcon) (This)->lpVtbl->SetIcon(This,pszIcon)
+#define IShellLibrary_Commit(This) (This)->lpVtbl->Commit(This)
+#define IShellLibrary_Save(This,psiFolderToSaveIn,pszLibraryName,lsf,ppsiSavedTo) (This)->lpVtbl->Save(This,psiFolderToSaveIn,pszLibraryName,lsf,ppsiSavedTo)
+#define IShellLibrary_SaveInKnownFolder(This,kfidToSaveIn,pszLibraryName,lsf,ppsiSavedTo) (This)->lpVtbl->SaveInKnownFolder(This,kfidToSaveIn,pszLibraryName,lsf,ppsiSavedTo)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IShellLibrary_QueryInterface(IShellLibrary* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IShellLibrary_AddRef(IShellLibrary* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IShellLibrary_Release(IShellLibrary* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IShellLibrary methods ***/
+static FORCEINLINE HRESULT IShellLibrary_LoadLibraryFromItem(IShellLibrary* This,IShellItem *psiLibrary,DWORD grfMode) {
+    return This->lpVtbl->LoadLibraryFromItem(This,psiLibrary,grfMode);
+}
+static FORCEINLINE HRESULT IShellLibrary_LoadLibraryFromKnownFolder(IShellLibrary* This,REFKNOWNFOLDERID kfidLibrary,DWORD grfMode) {
+    return This->lpVtbl->LoadLibraryFromKnownFolder(This,kfidLibrary,grfMode);
+}
+static FORCEINLINE HRESULT IShellLibrary_AddFolder(IShellLibrary* This,IShellItem *psiLocation) {
+    return This->lpVtbl->AddFolder(This,psiLocation);
+}
+static FORCEINLINE HRESULT IShellLibrary_RemoveFolder(IShellLibrary* This,IShellItem *psiLocation) {
+    return This->lpVtbl->RemoveFolder(This,psiLocation);
+}
+static FORCEINLINE HRESULT IShellLibrary_GetFolders(IShellLibrary* This,LIBRARYFOLDERFILTER lff,REFIID riid,void **ppv) {
+    return This->lpVtbl->GetFolders(This,lff,riid,ppv);
+}
+static FORCEINLINE HRESULT IShellLibrary_ResolveFolder(IShellLibrary* This,IShellItem *psiFolderToResolve,DWORD dwTimeout,REFIID riid,void **ppv) {
+    return This->lpVtbl->ResolveFolder(This,psiFolderToResolve,dwTimeout,riid,ppv);
+}
+static FORCEINLINE HRESULT IShellLibrary_GetDefaultSaveFolder(IShellLibrary* This,DEFAULTSAVEFOLDERTYPE dsft,REFIID riid,void **ppv) {
+    return This->lpVtbl->GetDefaultSaveFolder(This,dsft,riid,ppv);
+}
+static FORCEINLINE HRESULT IShellLibrary_SetDefaultSaveFolder(IShellLibrary* This,DEFAULTSAVEFOLDERTYPE dsft,IShellItem *psi) {
+    return This->lpVtbl->SetDefaultSaveFolder(This,dsft,psi);
+}
+static FORCEINLINE HRESULT IShellLibrary_GetOptions(IShellLibrary* This,LIBRARYOPTIONFLAGS *plofOptions) {
+    return This->lpVtbl->GetOptions(This,plofOptions);
+}
+static FORCEINLINE HRESULT IShellLibrary_SetOptions(IShellLibrary* This,LIBRARYOPTIONFLAGS lofMask,LIBRARYOPTIONFLAGS lofOptions) {
+    return This->lpVtbl->SetOptions(This,lofMask,lofOptions);
+}
+static FORCEINLINE HRESULT IShellLibrary_GetFolderType(IShellLibrary* This,FOLDERTYPEID *pftid) {
+    return This->lpVtbl->GetFolderType(This,pftid);
+}
+static FORCEINLINE HRESULT IShellLibrary_SetFolderType(IShellLibrary* This,REFFOLDERTYPEID ftid) {
+    return This->lpVtbl->SetFolderType(This,ftid);
+}
+static FORCEINLINE HRESULT IShellLibrary_GetIcon(IShellLibrary* This,LPWSTR *ppszIcon) {
+    return This->lpVtbl->GetIcon(This,ppszIcon);
+}
+static FORCEINLINE HRESULT IShellLibrary_SetIcon(IShellLibrary* This,LPCWSTR pszIcon) {
+    return This->lpVtbl->SetIcon(This,pszIcon);
+}
+static FORCEINLINE HRESULT IShellLibrary_Commit(IShellLibrary* This) {
+    return This->lpVtbl->Commit(This);
+}
+static FORCEINLINE HRESULT IShellLibrary_Save(IShellLibrary* This,IShellItem *psiFolderToSaveIn,LPCWSTR pszLibraryName,LIBRARYSAVEFLAGS lsf,IShellItem **ppsiSavedTo) {
+    return This->lpVtbl->Save(This,psiFolderToSaveIn,pszLibraryName,lsf,ppsiSavedTo);
+}
+static FORCEINLINE HRESULT IShellLibrary_SaveInKnownFolder(IShellLibrary* This,REFKNOWNFOLDERID kfidToSaveIn,LPCWSTR pszLibraryName,LIBRARYSAVEFLAGS lsf,IShellItem **ppsiSavedTo) {
+    return This->lpVtbl->SaveInKnownFolder(This,kfidToSaveIn,pszLibraryName,lsf,ppsiSavedTo);
+}
+#endif
+#endif
+
+#endif
+
+HRESULT STDMETHODCALLTYPE IShellLibrary_LoadLibraryFromItem_Proxy(
+    IShellLibrary* This,
+    IShellItem *psiLibrary,
+    DWORD grfMode);
+void __RPC_STUB IShellLibrary_LoadLibraryFromItem_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_LoadLibraryFromKnownFolder_Proxy(
+    IShellLibrary* This,
+    REFKNOWNFOLDERID kfidLibrary,
+    DWORD grfMode);
+void __RPC_STUB IShellLibrary_LoadLibraryFromKnownFolder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_AddFolder_Proxy(
+    IShellLibrary* This,
+    IShellItem *psiLocation);
+void __RPC_STUB IShellLibrary_AddFolder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_RemoveFolder_Proxy(
+    IShellLibrary* This,
+    IShellItem *psiLocation);
+void __RPC_STUB IShellLibrary_RemoveFolder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_GetFolders_Proxy(
+    IShellLibrary* This,
+    LIBRARYFOLDERFILTER lff,
+    REFIID riid,
+    void **ppv);
+void __RPC_STUB IShellLibrary_GetFolders_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_ResolveFolder_Proxy(
+    IShellLibrary* This,
+    IShellItem *psiFolderToResolve,
+    DWORD dwTimeout,
+    REFIID riid,
+    void **ppv);
+void __RPC_STUB IShellLibrary_ResolveFolder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_GetDefaultSaveFolder_Proxy(
+    IShellLibrary* This,
+    DEFAULTSAVEFOLDERTYPE dsft,
+    REFIID riid,
+    void **ppv);
+void __RPC_STUB IShellLibrary_GetDefaultSaveFolder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_SetDefaultSaveFolder_Proxy(
+    IShellLibrary* This,
+    DEFAULTSAVEFOLDERTYPE dsft,
+    IShellItem *psi);
+void __RPC_STUB IShellLibrary_SetDefaultSaveFolder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_GetOptions_Proxy(
+    IShellLibrary* This,
+    LIBRARYOPTIONFLAGS *plofOptions);
+void __RPC_STUB IShellLibrary_GetOptions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_SetOptions_Proxy(
+    IShellLibrary* This,
+    LIBRARYOPTIONFLAGS lofMask,
+    LIBRARYOPTIONFLAGS lofOptions);
+void __RPC_STUB IShellLibrary_SetOptions_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_GetFolderType_Proxy(
+    IShellLibrary* This,
+    FOLDERTYPEID *pftid);
+void __RPC_STUB IShellLibrary_GetFolderType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_SetFolderType_Proxy(
+    IShellLibrary* This,
+    REFFOLDERTYPEID ftid);
+void __RPC_STUB IShellLibrary_SetFolderType_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_GetIcon_Proxy(
+    IShellLibrary* This,
+    LPWSTR *ppszIcon);
+void __RPC_STUB IShellLibrary_GetIcon_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_SetIcon_Proxy(
+    IShellLibrary* This,
+    LPCWSTR pszIcon);
+void __RPC_STUB IShellLibrary_SetIcon_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_Commit_Proxy(
+    IShellLibrary* This);
+void __RPC_STUB IShellLibrary_Commit_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_Save_Proxy(
+    IShellLibrary* This,
+    IShellItem *psiFolderToSaveIn,
+    LPCWSTR pszLibraryName,
+    LIBRARYSAVEFLAGS lsf,
+    IShellItem **ppsiSavedTo);
+void __RPC_STUB IShellLibrary_Save_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+HRESULT STDMETHODCALLTYPE IShellLibrary_SaveInKnownFolder_Proxy(
+    IShellLibrary* This,
+    REFKNOWNFOLDERID kfidToSaveIn,
+    LPCWSTR pszLibraryName,
+    LIBRARYSAVEFLAGS lsf,
+    IShellItem **ppsiSavedTo);
+void __RPC_STUB IShellLibrary_SaveInKnownFolder_Stub(
+    IRpcStubBuffer* This,
+    IRpcChannelBuffer* pRpcChannelBuffer,
+    PRPC_MESSAGE pRpcMessage,
+    DWORD* pdwStubPhase);
+
+#endif  /* __IShellLibrary_INTERFACE_DEFINED__ */
+
+
+DEFINE_GUID(LIBID_ShellObjects, 0x50a7e9b1, 0x70ef, 0x11d1, 0xb7,0x5a, 0x00,0xa0,0xc9,0x05,0x64,0xfe);
+
+/*****************************************************************************
+ * ShellLibrary coclass
+ */
+
+DEFINE_GUID(CLSID_ShellLibrary, 0xd9b3211d, 0xe57f, 0x4426, 0xaa,0xef, 0x30,0xa8,0x06,0xad,0xd3,0x97);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("d9b3211d-e57f-4426-aaef-30a806add397") ShellLibrary;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(ShellLibrary, 0xd9b3211d, 0xe57f, 0x4426, 0xaa,0xef, 0x30,0xa8,0x06,0xad,0xd3,0x97)
+#endif
+#endif
+
+#define SID_PublishingWizard CLSID_PublishingWizard
+  EXTERN_C const CLSID CLSID_QueryCancelAutoPlay;
+#ifdef __cplusplus
+  class QueryCancelAutoPlay;
+#endif
+  EXTERN_C const CLSID CLSID_DriveSizeCategorizer;
+#ifdef __cplusplus
+  class DriveSizeCategorizer;
+#endif
+  EXTERN_C const CLSID CLSID_DriveTypeCategorizer;
+#ifdef __cplusplus
+  class DriveTypeCategorizer;
+#endif
+  EXTERN_C const CLSID CLSID_FreeSpaceCategorizer;
+#ifdef __cplusplus
+  class FreeSpaceCategorizer;
+#endif
+  EXTERN_C const CLSID CLSID_TimeCategorizer;
+#ifdef __cplusplus
+  class TimeCategorizer;
+#endif
+  EXTERN_C const CLSID CLSID_SizeCategorizer;
+#ifdef __cplusplus
+  class SizeCategorizer;
+#endif
+  EXTERN_C const CLSID CLSID_AlphabeticalCategorizer;
+#ifdef __cplusplus
+  class AlphabeticalCategorizer;
+#endif
+  EXTERN_C const CLSID CLSID_MergedCategorizer;
+#ifdef __cplusplus
+  class MergedCategorizer;
+#endif
+  EXTERN_C const CLSID CLSID_ImageProperties;
+#ifdef __cplusplus
+  class ImageProperties;
+#endif
+  EXTERN_C const CLSID CLSID_PropertiesUI;
+#ifdef __cplusplus
+  class PropertiesUI;
+#endif
+  EXTERN_C const CLSID CLSID_UserNotification;
+#ifdef __cplusplus
+  class UserNotification;
+#endif
+  EXTERN_C const CLSID CLSID_UserEventTimerCallback;
+#ifdef __cplusplus
+  class UserEventTimerCallback;
+#endif
+  EXTERN_C const CLSID CLSID_UserEventTimer;
+#ifdef __cplusplus
+  class UserEventTimer;
+#endif
+  EXTERN_C const CLSID CLSID_NetCrawler;
+#ifdef __cplusplus
+  class NetCrawler;
+#endif
+  EXTERN_C const CLSID CLSID_CDBurn;
+#ifdef __cplusplus
+  class CDBurn;
+#endif
+  EXTERN_C const CLSID CLSID_TaskbarList;
+#ifdef __cplusplus
+  class TaskbarList;
+#endif
+  EXTERN_C const CLSID CLSID_ApplicationAssociationRegistrationUI;
+#ifdef __cplusplus
+  class ApplicationAssociationRegistrationUI;
+#endif
+  EXTERN_C const CLSID CLSID_WebWizardHost;
+#ifdef __cplusplus
+  class WebWizardHost;
+#endif
+  EXTERN_C const CLSID CLSID_PublishDropTarget;
+#ifdef __cplusplus
+  class PublishDropTarget;
+#endif
+  EXTERN_C const CLSID CLSID_PublishingWizard;
+#ifdef __cplusplus
+  class PublishingWizard;
+#endif
+  EXTERN_C const CLSID CLSID_InternetPrintOrdering;
+#ifdef __cplusplus
+  class InternetPrintOrdering;
+#endif
+  EXTERN_C const CLSID CLSID_FolderViewHost;
+#ifdef __cplusplus
+  class FolderViewHost;
+#endif
+  EXTERN_C const CLSID CLSID_NamespaceWalker;
+#ifdef __cplusplus
+  class NamespaceWalker;
+#endif
+  EXTERN_C const CLSID CLSID_ImageRecompress;
+#ifdef __cplusplus
+  class ImageRecompress;
+#endif
+  EXTERN_C const CLSID CLSID_TrayBandSiteService;
+#ifdef __cplusplus
+  class TrayBandSiteService;
+#endif
+  EXTERN_C const CLSID CLSID_PassportWizard;
+#ifdef __cplusplus
+  class PassportWizard;
+#endif
+DEFINE_GUID(CLSID_AttachmentServices, 0x4125dd96,0xe03a,0x4103,0x8f,0x70,0xe0,0x59,0x7d,0x80,0x3b,0x9c);
+#ifdef __cplusplus
+  class AttachmentServices;
+#endif
+
+/*****************************************************************************
+ * ApplicationAssociationRegistration coclass
+ */
+
+DEFINE_GUID(CLSID_ApplicationAssociationRegistration, 0x591209c7, 0x767b, 0x42b2, 0x9f,0xba, 0x44,0xee,0x46,0x15,0xf2,0xc7);
+
+/*****************************************************************************
+ * ShellLink coclass
+ */
+
+DEFINE_GUID(CLSID_ShellLink, 0x00021401, 0x0000, 0x0000, 0xc0,0x00, 0x00,0x00,0x00,0x00,0x00,0x46);
+
+/*****************************************************************************
+ * TaskbarList coclass
+ */
+
+DEFINE_GUID(CLSID_TaskbarList, 0x56fdf344, 0xfd6d, 0x11d0, 0x95,0x8a, 0x00,0x60,0x97,0xc9,0xa0,0x90);
+
+/*****************************************************************************
+ * ApplicationAssociationRegistrationUI coclass
+ */
+
+DEFINE_GUID(CLSID_ApplicationAssociationRegistrationUI, 0x1968106d, 0xf3b5, 0x44cf, 0x89,0x0e, 0x11,0x6f,0xcb,0x9e,0xce,0xf1);
+
+/*****************************************************************************
+ * DestinationList coclass
+ */
+
+DEFINE_GUID(CLSID_DestinationList, 0x77f10cf0, 0x3db5, 0x4966, 0xb5,0x20, 0xb7,0xc5,0x4f,0xd3,0x5e,0xd6);
+
+/*****************************************************************************
+ * EnumerableObjectCollection coclass
+ */
+
+DEFINE_GUID(CLSID_EnumerableObjectCollection, 0x2d3468c1, 0x36a7, 0x43b6, 0xac,0x24, 0xd3,0xf0,0x2f,0xd9,0x60,0x7a);
+
+/*****************************************************************************
+ * FileOpenDialog coclass
+ */
+
+DEFINE_GUID(CLSID_FileOpenDialog, 0xdc1c5a9c, 0xe88a, 0x4dde, 0xa5,0xa1, 0x60,0xf8,0x2a,0x20,0xae,0xf7);
+
+/*****************************************************************************
+ * FileSaveDialog coclass
+ */
+
+DEFINE_GUID(CLSID_FileSaveDialog, 0xc0b4e2f3, 0xba21, 0x4773, 0x8d,0xba, 0x33,0x5e,0xc9,0x46,0xeb,0x8b);
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0263_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shobjidl_0263_v0_0_s_ifspec;
+
+  ULONG __RPC_API BSTR_UserSize(ULONG *,ULONG,BSTR *);
+  unsigned char *__RPC_API BSTR_UserMarshal(ULONG *,unsigned char *,BSTR *);
+  unsigned char *__RPC_API BSTR_UserUnmarshal(ULONG *,unsigned char *,BSTR *);
+  void __RPC_API BSTR_UserFree(ULONG *,BSTR *);
+  ULONG __RPC_API HBITMAP_UserSize(ULONG *,ULONG,HBITMAP *);
+  unsigned char *__RPC_API HBITMAP_UserMarshal(ULONG *,unsigned char *,HBITMAP *);
+  unsigned char *__RPC_API HBITMAP_UserUnmarshal(ULONG *,unsigned char *,HBITMAP *);
+  void __RPC_API HBITMAP_UserFree(ULONG *,HBITMAP *);
+  ULONG __RPC_API HGLOBAL_UserSize(ULONG *,ULONG,HGLOBAL *);
+  unsigned char *__RPC_API HGLOBAL_UserMarshal(ULONG *,unsigned char *,HGLOBAL *);
+  unsigned char *__RPC_API HGLOBAL_UserUnmarshal(ULONG *,unsigned char *,HGLOBAL *);
+  void __RPC_API HGLOBAL_UserFree(ULONG *,HGLOBAL *);
+  ULONG __RPC_API HICON_UserSize(ULONG *,ULONG,HICON *);
+  unsigned char *__RPC_API HICON_UserMarshal(ULONG *,unsigned char *,HICON *);
+  unsigned char *__RPC_API HICON_UserUnmarshal(ULONG *,unsigned char *,HICON *);
+  void __RPC_API HICON_UserFree(ULONG *,HICON *);
+  ULONG __RPC_API HMENU_UserSize(ULONG *,ULONG,HMENU *);
+  unsigned char *__RPC_API HMENU_UserMarshal(ULONG *,unsigned char *,HMENU *);
+  unsigned char *__RPC_API HMENU_UserUnmarshal(ULONG *,unsigned char *,HMENU *);
+  void __RPC_API HMENU_UserFree(ULONG *,HMENU *);
+  ULONG __RPC_API HWND_UserSize(ULONG *,ULONG,HWND *);
+  unsigned char *__RPC_API HWND_UserMarshal(ULONG *,unsigned char *,HWND *);
+  unsigned char *__RPC_API HWND_UserUnmarshal(ULONG *,unsigned char *,HWND *);
+  void __RPC_API HWND_UserFree(ULONG *,HWND *);
+  ULONG __RPC_API LPCITEMIDLIST_UserSize(ULONG *,ULONG,LPCITEMIDLIST *);
+  unsigned char *__RPC_API LPCITEMIDLIST_UserMarshal(ULONG *,unsigned char *,LPCITEMIDLIST *);
+  unsigned char *__RPC_API LPCITEMIDLIST_UserUnmarshal(ULONG *,unsigned char *,LPCITEMIDLIST *);
+  void __RPC_API LPCITEMIDLIST_UserFree(ULONG *,LPCITEMIDLIST *);
+  ULONG __RPC_API LPITEMIDLIST_UserSize(ULONG *,ULONG,LPITEMIDLIST *);
+  unsigned char *__RPC_API LPITEMIDLIST_UserMarshal(ULONG *,unsigned char *,LPITEMIDLIST *);
+  unsigned char *__RPC_API LPITEMIDLIST_UserUnmarshal(ULONG *,unsigned char *,LPITEMIDLIST *);
+  void __RPC_API LPITEMIDLIST_UserFree(ULONG *,LPITEMIDLIST *);
+  ULONG __RPC_API LPSAFEARRAY_UserSize(ULONG *,ULONG,LPSAFEARRAY *);
+  unsigned char *__RPC_API LPSAFEARRAY_UserMarshal(ULONG *,unsigned char *,LPSAFEARRAY *);
+  unsigned char *__RPC_API LPSAFEARRAY_UserUnmarshal(ULONG *,unsigned char *,LPSAFEARRAY *);
+  void __RPC_API LPSAFEARRAY_UserFree(ULONG *,LPSAFEARRAY *);
+  ULONG __RPC_API VARIANT_UserSize(ULONG *,ULONG,VARIANT *);
+  unsigned char *__RPC_API VARIANT_UserMarshal(ULONG *,unsigned char *,VARIANT *);
+  unsigned char *__RPC_API VARIANT_UserUnmarshal(ULONG *,unsigned char *,VARIANT *);
+  void __RPC_API VARIANT_UserFree(ULONG *,VARIANT *);
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __shobjidl_h__ */
diff --git a/debian/include/shtypes.h b/debian/include/shtypes.h
new file mode 100644
index 0000000..d4a8e4d
--- /dev/null
+++ b/debian/include/shtypes.h
@@ -0,0 +1,159 @@
+/*** Autogenerated by WIDL 1.5.25 from include/shtypes.idl - Do not edit ***/
+
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifndef COM_NO_WINDOWS_H
+#include <windows.h>
+#include <ole2.h>
+#endif
+
+#ifndef __shtypes_h__
+#define __shtypes_h__
+
+/* Forward declarations */
+
+/* Headers for imported files */
+
+#include <wtypes.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <pshpack1.h>
+  typedef struct _SHITEMID {
+    USHORT cb;
+    BYTE abID[1 ];
+  } SHITEMID;
+
+#include <poppack.h>
+#if (defined(_X86_) && !defined(__x86_64))
+#undef __unaligned
+#define __unaligned
+#endif
+  typedef SHITEMID __unaligned *LPSHITEMID;
+
+  typedef const SHITEMID __unaligned *LPCSHITEMID;
+
+#include <pshpack1.h>
+  typedef struct _ITEMIDLIST {
+    SHITEMID mkid;
+  } ITEMIDLIST;
+
+  typedef ITEMIDLIST ITEMIDLIST_RELATIVE;
+  typedef ITEMIDLIST ITEMID_CHILD;
+  typedef ITEMIDLIST ITEMIDLIST_ABSOLUTE;
+#include <poppack.h>
+
+  typedef BYTE_BLOB *wirePIDL;
+
+  typedef ITEMIDLIST __unaligned *LPITEMIDLIST;
+  typedef const ITEMIDLIST __unaligned *LPCITEMIDLIST;
+
+  typedef ITEMIDLIST_ABSOLUTE *PIDLIST_ABSOLUTE;
+  typedef const ITEMIDLIST_ABSOLUTE *PCIDLIST_ABSOLUTE;
+  typedef const ITEMIDLIST_ABSOLUTE __unaligned *PCUIDLIST_ABSOLUTE;
+  typedef ITEMIDLIST_RELATIVE *PIDLIST_RELATIVE;
+  typedef const ITEMIDLIST_RELATIVE *PCIDLIST_RELATIVE;
+  typedef ITEMIDLIST_RELATIVE __unaligned *PUIDLIST_RELATIVE;
+  typedef const ITEMIDLIST_RELATIVE __unaligned *PCUIDLIST_RELATIVE;
+  typedef ITEMID_CHILD *PITEMID_CHILD;
+  typedef const ITEMID_CHILD *PCITEMID_CHILD;
+  typedef ITEMID_CHILD __unaligned *PUITEMID_CHILD;
+  typedef const ITEMID_CHILD __unaligned *PCUITEMID_CHILD;
+
+  typedef const PCUITEMID_CHILD *PCUITEMID_CHILD_ARRAY;
+  typedef const PCUIDLIST_RELATIVE *PCUIDLIST_RELATIVE_ARRAY;
+  typedef const PCIDLIST_ABSOLUTE *PCIDLIST_ABSOLUTE_ARRAY;
+  typedef const PCUIDLIST_ABSOLUTE *PCUIDLIST_ABSOLUTE_ARRAY;
+
+#ifdef WINBASE_DEFINED_MIDL
+  typedef struct _WIN32_FIND_DATAA {
+    DWORD bData[80 ];
+  } WIN32_FIND_DATAA;
+
+  typedef struct _WIN32_FIND_DATAW {
+    DWORD bData[148 ];
+  } WIN32_FIND_DATAW;
+#endif
+
+  typedef enum tagSTRRET_TYPE {
+    STRRET_WSTR = 0,STRRET_OFFSET = 0x1,STRRET_CSTR = 0x2
+  } STRRET_TYPE;
+
+#include <pshpack8.h>
+  typedef struct _STRRET {
+    UINT uType;
+    __C89_NAMELESS union {
+      LPWSTR pOleStr;
+      UINT uOffset;
+      char cStr[260 ];
+    } DUMMYUNIONNAME;
+  } STRRET;
+
+#include <poppack.h>
+  typedef STRRET *LPSTRRET;
+
+#include <pshpack1.h>
+  typedef struct _SHELLDETAILS {
+    int fmt;
+    int cxChar;
+    STRRET str;
+  } SHELLDETAILS;
+
+  typedef struct _SHELLDETAILS *LPSHELLDETAILS;
+
+#include <poppack.h>
+
+  typedef struct _COMDLG_FILTERSPEC {
+    LPCWSTR pszName;
+    LPCWSTR pszSpec;
+  } COMDLG_FILTERSPEC;
+typedef GUID KNOWNFOLDERID;
+#if 0
+typedef KNOWNFOLDERID *REFKNOWNFOLDERID;
+#elif defined(__cplusplus)
+#define REFKNOWNFOLDERID const KNOWNFOLDERID&
+#else
+#define REFKNOWNFOLDERID const KNOWNFOLDERID *
+#endif
+typedef GUID FOLDERTYPEID;
+#if 0
+typedef FOLDERTYPEID *REFFOLDERTYPEID;
+#elif defined(__cplusplus)
+#define REFFOLDERTYPEID const FOLDERTYPEID&
+#else
+#define REFFOLDERTYPEID const FOLDERTYPEID*
+#endif
+typedef enum tagSHCOLSTATE {
+    SHCOLSTATE_TYPE_STR = 0x1,
+    SHCOLSTATE_TYPE_INT = 0x2,
+    SHCOLSTATE_TYPE_DATE = 0x3,
+    SHCOLSTATE_TYPEMASK = 0xf,
+    SHCOLSTATE_ONBYDEFAULT = 0x10,
+    SHCOLSTATE_SLOW = 0x20,
+    SHCOLSTATE_EXTENDED = 0x40,
+    SHCOLSTATE_SECONDARYUI = 0x80,
+    SHCOLSTATE_HIDDEN = 0x100,
+    SHCOLSTATE_PREFER_VARCMP = 0x200
+} SHCOLSTATE;
+typedef DWORD SHCOLSTATEF;
+typedef PROPERTYKEY SHCOLUMNID;
+typedef const SHCOLUMNID *LPCSHCOLUMNID;
+  extern RPC_IF_HANDLE __MIDL_itf_shtypes_0000_v0_0_c_ifspec;
+  extern RPC_IF_HANDLE __MIDL_itf_shtypes_0000_v0_0_s_ifspec;
+/* Begin additional prototypes for all interfaces */
+
+
+/* End additional prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __shtypes_h__ */
diff --git a/debian/include/winapifamily.h b/debian/include/winapifamily.h
new file mode 100644
index 0000000..b9c73c8
--- /dev/null
+++ b/debian/include/winapifamily.h
@@ -0,0 +1,23 @@
+/**
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+
+#ifndef _INC_WINAPIFAMILY
+#define _INC_WINAPIFAMILY
+
+#define WINAPI_PARTITION_DESKTOP 0x1
+#define WINAPI_PARTITION_APP     0x2    
+
+#define WINAPI_FAMILY_APP WINAPI_PARTITION_APP
+#define WINAPI_FAMILY_DESKTOP_APP (WINAPI_PARTITION_DESKTOP \
+				   | WINAPI_PARTITION_APP)    
+
+#ifndef WINAPI_FAMILY
+#define WINAPI_FAMILY WINAPI_FAMILY_DESKTOP_APP
+#endif
+
+#define WINAPI_FAMILY_PARTITION(v) ((WINAPI_FAMILY & v) == v)
+#define WINAPI_FAMILY_ONE_PARTITION(vset, v) ((WINAPI_FAMILY & vset) == v)
+
+#endif 
diff --git a/debian/include/winuser.h b/debian/include/winuser.h
new file mode 100644
index 0000000..b0f5b2b
--- /dev/null
+++ b/debian/include/winuser.h
@@ -0,0 +1,5552 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the mingw-w64 runtime package.
+ * No warranty is given; refer to the file DISCLAIMER.PD within this package.
+ */
+#ifndef _WINUSER_
+#define _WINUSER_
+
+#include <_mingw_unicode.h>
+#include <apisetcconv.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef WINVER
+#define WINVER 0x0502
+#endif
+
+#include <_mingw.h>
+#include <stdarg.h>
+#include <guiddef.h>
+
+#ifndef NOUSER
+  typedef HANDLE HDWP;
+  typedef VOID MENUTEMPLATEA;
+  typedef VOID MENUTEMPLATEW;
+  typedef PVOID LPMENUTEMPLATEA;
+  typedef PVOID LPMENUTEMPLATEW;
+
+  __MINGW_TYPEDEF_AW(MENUTEMPLATE)
+  __MINGW_TYPEDEF_AW(LPMENUTEMPLATE)
+
+  typedef LRESULT (CALLBACK *WNDPROC)(HWND,UINT,WPARAM,LPARAM);
+  typedef INT_PTR (CALLBACK *DLGPROC)(HWND,UINT,WPARAM,LPARAM);
+  typedef VOID (CALLBACK *TIMERPROC)(HWND,UINT,UINT_PTR,DWORD);
+  typedef WINBOOL (CALLBACK *GRAYSTRINGPROC)(HDC,LPARAM,int);
+  typedef WINBOOL (CALLBACK *WNDENUMPROC)(HWND,LPARAM);
+  typedef LRESULT (CALLBACK *HOOKPROC)(int code,WPARAM wParam,LPARAM lParam);
+  typedef VOID (CALLBACK *SENDASYNCPROC)(HWND,UINT,ULONG_PTR,LRESULT);
+  typedef WINBOOL (CALLBACK *PROPENUMPROCA)(HWND,LPCSTR,HANDLE);
+  typedef WINBOOL (CALLBACK *PROPENUMPROCW)(HWND,LPCWSTR,HANDLE);
+  typedef WINBOOL (CALLBACK *PROPENUMPROCEXA)(HWND,LPSTR,HANDLE,ULONG_PTR);
+  typedef WINBOOL (CALLBACK *PROPENUMPROCEXW)(HWND,LPWSTR,HANDLE,ULONG_PTR);
+  typedef int (CALLBACK *EDITWORDBREAKPROCA)(LPSTR lpch,int ichCurrent,int cch,int code);
+  typedef int (CALLBACK *EDITWORDBREAKPROCW)(LPWSTR lpch,int ichCurrent,int cch,int code);
+  typedef WINBOOL (CALLBACK *DRAWSTATEPROC)(HDC hdc,LPARAM lData,WPARAM wData,int cx,int cy);
+
+  __MINGW_TYPEDEF_AW(PROPENUMPROC)
+  __MINGW_TYPEDEF_AW(PROPENUMPROCEX)
+  __MINGW_TYPEDEF_AW(EDITWORDBREAKPROC)
+
+  typedef WINBOOL (CALLBACK *NAMEENUMPROCA)(LPSTR,LPARAM);
+  typedef WINBOOL (CALLBACK *NAMEENUMPROCW)(LPWSTR,LPARAM);
+  typedef NAMEENUMPROCA WINSTAENUMPROCA;
+  typedef NAMEENUMPROCA DESKTOPENUMPROCA;
+  typedef NAMEENUMPROCW WINSTAENUMPROCW;
+  typedef NAMEENUMPROCW DESKTOPENUMPROCW;
+
+  __MINGW_TYPEDEF_AW(WINSTAENUMPROC)
+  __MINGW_TYPEDEF_AW(DESKTOPENUMPROC)
+
+#define IS_INTRESOURCE(_r) ((((ULONG_PTR)(_r)) >> 16)==0)
+#define MAKEINTRESOURCEA(i) ((LPSTR)((ULONG_PTR)((WORD)(i))))
+#define MAKEINTRESOURCEW(i) ((LPWSTR)((ULONG_PTR)((WORD)(i))))
+#define MAKEINTRESOURCE __MINGW_NAME_AW(MAKEINTRESOURCE)
+
+#ifndef NORESOURCE
+
+#define RT_CURSOR MAKEINTRESOURCE(1)
+#define RT_BITMAP MAKEINTRESOURCE(2)
+#define RT_ICON MAKEINTRESOURCE(3)
+#define RT_MENU MAKEINTRESOURCE(4)
+#define RT_DIALOG MAKEINTRESOURCE(5)
+#define RT_STRING MAKEINTRESOURCE(6)
+#define RT_FONTDIR MAKEINTRESOURCE(7)
+#define RT_FONT MAKEINTRESOURCE(8)
+#define RT_ACCELERATOR MAKEINTRESOURCE(9)
+#define RT_RCDATA MAKEINTRESOURCE(10)
+#define RT_MESSAGETABLE MAKEINTRESOURCE(11)
+
+#define DIFFERENCE 11
+#define RT_GROUP_CURSOR MAKEINTRESOURCE((ULONG_PTR)RT_CURSOR + DIFFERENCE)
+#define RT_GROUP_ICON MAKEINTRESOURCE((ULONG_PTR)RT_ICON + DIFFERENCE)
+#define RT_VERSION MAKEINTRESOURCE(16)
+#define RT_DLGINCLUDE MAKEINTRESOURCE(17)
+#define RT_PLUGPLAY MAKEINTRESOURCE(19)
+#define RT_VXD MAKEINTRESOURCE(20)
+#define RT_ANICURSOR MAKEINTRESOURCE(21)
+#define RT_ANIICON MAKEINTRESOURCE(22)
+#define RT_HTML MAKEINTRESOURCE(23)
+#ifdef RC_INVOKED
+#define RT_MANIFEST 24
+#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
+#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2
+#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3
+#define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID 1
+#define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID 16
+#else
+#define RT_MANIFEST MAKEINTRESOURCE(24)
+#define CREATEPROCESS_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1)
+#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(2)
+#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(3)
+#define MINIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(1)
+#define MAXIMUM_RESERVED_MANIFEST_RESOURCE_ID MAKEINTRESOURCE(16)
+#endif
+#endif
+
+#define wvsprintf __MINGW_NAME_AW(wvsprintf)
+#define wsprintf __MINGW_NAME_AW(wsprintf)
+
+  WINUSERAPI int WINAPI wvsprintfA(LPSTR,LPCSTR,va_list arglist);
+  WINUSERAPI int WINAPI wvsprintfW(LPWSTR,LPCWSTR,va_list arglist);
+  WINUSERAPI int WINAPIV wsprintfA(LPSTR,LPCSTR,...);
+  WINUSERAPI int WINAPIV wsprintfW(LPWSTR,LPCWSTR,...);
+
+#define SETWALLPAPER_DEFAULT ((LPWSTR)-1)
+
+#ifndef NOSCROLL
+#define SB_HORZ 0
+#define SB_VERT 1
+#define SB_CTL 2
+#define SB_BOTH 3
+
+#define SB_LINEUP 0
+#define SB_LINELEFT 0
+#define SB_LINEDOWN 1
+#define SB_LINERIGHT 1
+#define SB_PAGEUP 2
+#define SB_PAGELEFT 2
+#define SB_PAGEDOWN 3
+#define SB_PAGERIGHT 3
+#define SB_THUMBPOSITION 4
+#define SB_THUMBTRACK 5
+#define SB_TOP 6
+#define SB_LEFT 6
+#define SB_BOTTOM 7
+#define SB_RIGHT 7
+#define SB_ENDSCROLL 8
+#endif
+
+#ifndef NOSHOWWINDOW
+#define SW_HIDE 0
+#define SW_SHOWNORMAL 1
+#define SW_NORMAL 1
+#define SW_SHOWMINIMIZED 2
+#define SW_SHOWMAXIMIZED 3
+#define SW_MAXIMIZE 3
+#define SW_SHOWNOACTIVATE 4
+#define SW_SHOW 5
+#define SW_MINIMIZE 6
+#define SW_SHOWMINNOACTIVE 7
+#define SW_SHOWNA 8
+#define SW_RESTORE 9
+#define SW_SHOWDEFAULT 10
+#define SW_FORCEMINIMIZE 11
+#define SW_MAX 11
+
+#define HIDE_WINDOW 0
+#define SHOW_OPENWINDOW 1
+#define SHOW_ICONWINDOW 2
+#define SHOW_FULLSCREEN 3
+#define SHOW_OPENNOACTIVATE 4
+
+#define SW_PARENTCLOSING 1
+#define SW_OTHERZOOM 2
+#define SW_PARENTOPENING 3
+#define SW_OTHERUNZOOM 4
+#endif
+
+#define AW_HOR_POSITIVE 0x00000001
+#define AW_HOR_NEGATIVE 0x00000002
+#define AW_VER_POSITIVE 0x00000004
+#define AW_VER_NEGATIVE 0x00000008
+#define AW_CENTER 0x00000010
+#define AW_HIDE 0x00010000
+#define AW_ACTIVATE 0x00020000
+#define AW_SLIDE 0x00040000
+#define AW_BLEND 0x00080000
+
+#define KF_EXTENDED 0x0100
+#define KF_DLGMODE 0x0800
+#define KF_MENUMODE 0x1000
+#define KF_ALTDOWN 0x2000
+#define KF_REPEAT 0x4000
+#define KF_UP 0x8000
+
+#ifndef NOVIRTUALKEYCODES
+
+#define VK_LBUTTON 0x01
+#define VK_RBUTTON 0x02
+#define VK_CANCEL 0x03
+#define VK_MBUTTON 0x04
+#define VK_XBUTTON1 0x05
+#define VK_XBUTTON2 0x06
+#define VK_BACK 0x08
+#define VK_TAB 0x09
+#define VK_CLEAR 0x0C
+#define VK_RETURN 0x0D
+#define VK_SHIFT 0x10
+#define VK_CONTROL 0x11
+#define VK_MENU 0x12
+#define VK_PAUSE 0x13
+#define VK_CAPITAL 0x14
+#define VK_KANA 0x15
+#define VK_HANGEUL 0x15
+#define VK_HANGUL 0x15
+#define VK_JUNJA 0x17
+#define VK_FINAL 0x18
+#define VK_HANJA 0x19
+#define VK_KANJI 0x19
+#define VK_ESCAPE 0x1B
+#define VK_CONVERT 0x1C
+#define VK_NONCONVERT 0x1D
+#define VK_ACCEPT 0x1E
+#define VK_MODECHANGE 0x1F
+#define VK_SPACE 0x20
+#define VK_PRIOR 0x21
+#define VK_NEXT 0x22
+#define VK_END 0x23
+#define VK_HOME 0x24
+#define VK_LEFT 0x25
+#define VK_UP 0x26
+#define VK_RIGHT 0x27
+#define VK_DOWN 0x28
+#define VK_SELECT 0x29
+#define VK_PRINT 0x2A
+#define VK_EXECUTE 0x2B
+#define VK_SNAPSHOT 0x2C
+#define VK_INSERT 0x2D
+#define VK_DELETE 0x2E
+#define VK_HELP 0x2F
+
+#define VK_LWIN 0x5B
+#define VK_RWIN 0x5C
+#define VK_APPS 0x5D
+#define VK_SLEEP 0x5F
+#define VK_NUMPAD0 0x60
+#define VK_NUMPAD1 0x61
+#define VK_NUMPAD2 0x62
+#define VK_NUMPAD3 0x63
+#define VK_NUMPAD4 0x64
+#define VK_NUMPAD5 0x65
+#define VK_NUMPAD6 0x66
+#define VK_NUMPAD7 0x67
+#define VK_NUMPAD8 0x68
+#define VK_NUMPAD9 0x69
+#define VK_MULTIPLY 0x6A
+#define VK_ADD 0x6B
+#define VK_SEPARATOR 0x6C
+#define VK_SUBTRACT 0x6D
+#define VK_DECIMAL 0x6E
+#define VK_DIVIDE 0x6F
+#define VK_F1 0x70
+#define VK_F2 0x71
+#define VK_F3 0x72
+#define VK_F4 0x73
+#define VK_F5 0x74
+#define VK_F6 0x75
+#define VK_F7 0x76
+#define VK_F8 0x77
+#define VK_F9 0x78
+#define VK_F10 0x79
+#define VK_F11 0x7A
+#define VK_F12 0x7B
+#define VK_F13 0x7C
+#define VK_F14 0x7D
+#define VK_F15 0x7E
+#define VK_F16 0x7F
+#define VK_F17 0x80
+#define VK_F18 0x81
+#define VK_F19 0x82
+#define VK_F20 0x83
+#define VK_F21 0x84
+#define VK_F22 0x85
+#define VK_F23 0x86
+#define VK_F24 0x87
+#define VK_NUMLOCK 0x90
+#define VK_SCROLL 0x91
+#define VK_OEM_NEC_EQUAL 0x92
+#define VK_OEM_FJ_JISHO 0x92
+#define VK_OEM_FJ_MASSHOU 0x93
+#define VK_OEM_FJ_TOUROKU 0x94
+#define VK_OEM_FJ_LOYA 0x95
+#define VK_OEM_FJ_ROYA 0x96
+#define VK_LSHIFT 0xA0
+#define VK_RSHIFT 0xA1
+#define VK_LCONTROL 0xA2
+#define VK_RCONTROL 0xA3
+#define VK_LMENU 0xA4
+#define VK_RMENU 0xA5
+#define VK_BROWSER_BACK 0xA6
+#define VK_BROWSER_FORWARD 0xA7
+#define VK_BROWSER_REFRESH 0xA8
+#define VK_BROWSER_STOP 0xA9
+#define VK_BROWSER_SEARCH 0xAA
+#define VK_BROWSER_FAVORITES 0xAB
+#define VK_BROWSER_HOME 0xAC
+#define VK_VOLUME_MUTE 0xAD
+#define VK_VOLUME_DOWN 0xAE
+#define VK_VOLUME_UP 0xAF
+#define VK_MEDIA_NEXT_TRACK 0xB0
+#define VK_MEDIA_PREV_TRACK 0xB1
+#define VK_MEDIA_STOP 0xB2
+#define VK_MEDIA_PLAY_PAUSE 0xB3
+#define VK_LAUNCH_MAIL 0xB4
+#define VK_LAUNCH_MEDIA_SELECT 0xB5
+#define VK_LAUNCH_APP1 0xB6
+#define VK_LAUNCH_APP2 0xB7
+#define VK_OEM_1 0xBA
+#define VK_OEM_PLUS 0xBB
+#define VK_OEM_COMMA 0xBC
+#define VK_OEM_MINUS 0xBD
+#define VK_OEM_PERIOD 0xBE
+#define VK_OEM_2 0xBF
+#define VK_OEM_3 0xC0
+#define VK_OEM_4 0xDB
+#define VK_OEM_5 0xDC
+#define VK_OEM_6 0xDD
+#define VK_OEM_7 0xDE
+#define VK_OEM_8 0xDF
+#define VK_OEM_AX 0xE1
+#define VK_OEM_102 0xE2
+#define VK_ICO_HELP 0xE3
+#define VK_ICO_00 0xE4
+#define VK_PROCESSKEY 0xE5
+#define VK_ICO_CLEAR 0xE6
+#define VK_PACKET 0xE7
+#define VK_OEM_RESET 0xE9
+#define VK_OEM_JUMP 0xEA
+#define VK_OEM_PA1 0xEB
+#define VK_OEM_PA2 0xEC
+#define VK_OEM_PA3 0xED
+#define VK_OEM_WSCTRL 0xEE
+#define VK_OEM_CUSEL 0xEF
+#define VK_OEM_ATTN 0xF0
+#define VK_OEM_FINISH 0xF1
+#define VK_OEM_COPY 0xF2
+#define VK_OEM_AUTO 0xF3
+#define VK_OEM_ENLW 0xF4
+#define VK_OEM_BACKTAB 0xF5
+#define VK_ATTN 0xF6
+#define VK_CRSEL 0xF7
+#define VK_EXSEL 0xF8
+#define VK_EREOF 0xF9
+#define VK_PLAY 0xFA
+#define VK_ZOOM 0xFB
+#define VK_NONAME 0xFC
+#define VK_PA1 0xFD
+#define VK_OEM_CLEAR 0xFE
+#endif
+
+#ifndef NOWH
+
+#define WH_MIN (-1)
+#define WH_MSGFILTER (-1)
+#define WH_JOURNALRECORD 0
+#define WH_JOURNALPLAYBACK 1
+#define WH_KEYBOARD 2
+#define WH_GETMESSAGE 3
+#define WH_CALLWNDPROC 4
+#define WH_CBT 5
+#define WH_SYSMSGFILTER 6
+#define WH_MOUSE 7
+#define WH_HARDWARE 8
+#define WH_DEBUG 9
+#define WH_SHELL 10
+#define WH_FOREGROUNDIDLE 11
+#define WH_CALLWNDPROCRET 12
+
+#define WH_KEYBOARD_LL 13
+#define WH_MOUSE_LL 14
+
+#define WH_MAX 14
+
+#define WH_MINHOOK WH_MIN
+#define WH_MAXHOOK WH_MAX
+
+#define HC_ACTION 0
+#define HC_GETNEXT 1
+#define HC_SKIP 2
+#define HC_NOREMOVE 3
+#define HC_NOREM HC_NOREMOVE
+#define HC_SYSMODALON 4
+#define HC_SYSMODALOFF 5
+
+#define HCBT_MOVESIZE 0
+#define HCBT_MINMAX 1
+#define HCBT_QS 2
+#define HCBT_CREATEWND 3
+#define HCBT_DESTROYWND 4
+#define HCBT_ACTIVATE 5
+#define HCBT_CLICKSKIPPED 6
+#define HCBT_KEYSKIPPED 7
+#define HCBT_SYSCOMMAND 8
+#define HCBT_SETFOCUS 9
+
+  typedef struct tagCBT_CREATEWNDA {
+    struct tagCREATESTRUCTA *lpcs;
+    HWND hwndInsertAfter;
+  } CBT_CREATEWNDA,*LPCBT_CREATEWNDA;
+
+  typedef struct tagCBT_CREATEWNDW {
+    struct tagCREATESTRUCTW *lpcs;
+    HWND hwndInsertAfter;
+  } CBT_CREATEWNDW,*LPCBT_CREATEWNDW;
+
+  __MINGW_TYPEDEF_AW(CBT_CREATEWND)
+  __MINGW_TYPEDEF_AW(LPCBT_CREATEWND)
+
+  typedef struct tagCBTACTIVATESTRUCT
+  {
+    WINBOOL fMouse;
+    HWND hWndActive;
+  } CBTACTIVATESTRUCT,*LPCBTACTIVATESTRUCT;
+
+  typedef struct tagWTSSESSION_NOTIFICATION {
+    DWORD cbSize;
+    DWORD dwSessionId;
+
+  } WTSSESSION_NOTIFICATION,*PWTSSESSION_NOTIFICATION;
+
+#define WTS_CONSOLE_CONNECT 0x1
+#define WTS_CONSOLE_DISCONNECT 0x2
+#define WTS_REMOTE_CONNECT 0x3
+#define WTS_REMOTE_DISCONNECT 0x4
+#define WTS_SESSION_LOGON 0x5
+#define WTS_SESSION_LOGOFF 0x6
+#define WTS_SESSION_LOCK 0x7
+#define WTS_SESSION_UNLOCK 0x8
+#define WTS_SESSION_REMOTE_CONTROL 0x9
+
+#define MSGF_DIALOGBOX 0
+#define MSGF_MESSAGEBOX 1
+#define MSGF_MENU 2
+#define MSGF_SCROLLBAR 5
+#define MSGF_NEXTWINDOW 6
+#define MSGF_MAX 8
+#define MSGF_USER 4096
+
+#define HSHELL_WINDOWCREATED 1
+#define HSHELL_WINDOWDESTROYED 2
+#define HSHELL_ACTIVATESHELLWINDOW 3
+
+#define HSHELL_WINDOWACTIVATED 4
+#define HSHELL_GETMINRECT 5
+#define HSHELL_REDRAW 6
+#define HSHELL_TASKMAN 7
+#define HSHELL_LANGUAGE 8
+#define HSHELL_SYSMENU 9
+#define HSHELL_ENDTASK 10
+#define HSHELL_ACCESSIBILITYSTATE 11
+#define HSHELL_APPCOMMAND 12
+#define HSHELL_WINDOWREPLACED 13
+#define HSHELL_WINDOWREPLACING 14
+#define HSHELL_HIGHBIT 0x8000
+#define HSHELL_FLASH (HSHELL_REDRAW|HSHELL_HIGHBIT)
+#define HSHELL_RUDEAPPACTIVATED (HSHELL_WINDOWACTIVATED|HSHELL_HIGHBIT)
+
+#define ACCESS_STICKYKEYS 0x0001
+#define ACCESS_FILTERKEYS 0x0002
+#define ACCESS_MOUSEKEYS 0x0003
+
+#define APPCOMMAND_BROWSER_BACKWARD 1
+#define APPCOMMAND_BROWSER_FORWARD 2
+#define APPCOMMAND_BROWSER_REFRESH 3
+#define APPCOMMAND_BROWSER_STOP 4
+#define APPCOMMAND_BROWSER_SEARCH 5
+#define APPCOMMAND_BROWSER_FAVORITES 6
+#define APPCOMMAND_BROWSER_HOME 7
+#define APPCOMMAND_VOLUME_MUTE 8
+#define APPCOMMAND_VOLUME_DOWN 9
+#define APPCOMMAND_VOLUME_UP 10
+#define APPCOMMAND_MEDIA_NEXTTRACK 11
+#define APPCOMMAND_MEDIA_PREVIOUSTRACK 12
+#define APPCOMMAND_MEDIA_STOP 13
+#define APPCOMMAND_MEDIA_PLAY_PAUSE 14
+#define APPCOMMAND_LAUNCH_MAIL 15
+#define APPCOMMAND_LAUNCH_MEDIA_SELECT 16
+#define APPCOMMAND_LAUNCH_APP1 17
+#define APPCOMMAND_LAUNCH_APP2 18
+#define APPCOMMAND_BASS_DOWN 19
+#define APPCOMMAND_BASS_BOOST 20
+#define APPCOMMAND_BASS_UP 21
+#define APPCOMMAND_TREBLE_DOWN 22
+#define APPCOMMAND_TREBLE_UP 23
+#define APPCOMMAND_MICROPHONE_VOLUME_MUTE 24
+#define APPCOMMAND_MICROPHONE_VOLUME_DOWN 25
+#define APPCOMMAND_MICROPHONE_VOLUME_UP 26
+#define APPCOMMAND_HELP 27
+#define APPCOMMAND_FIND 28
+#define APPCOMMAND_NEW 29
+#define APPCOMMAND_OPEN 30
+#define APPCOMMAND_CLOSE 31
+#define APPCOMMAND_SAVE 32
+#define APPCOMMAND_PRINT 33
+#define APPCOMMAND_UNDO 34
+#define APPCOMMAND_REDO 35
+#define APPCOMMAND_COPY 36
+#define APPCOMMAND_CUT 37
+#define APPCOMMAND_PASTE 38
+#define APPCOMMAND_REPLY_TO_MAIL 39
+#define APPCOMMAND_FORWARD_MAIL 40
+#define APPCOMMAND_SEND_MAIL 41
+#define APPCOMMAND_SPELL_CHECK 42
+#define APPCOMMAND_DICTATE_OR_COMMAND_CONTROL_TOGGLE 43
+#define APPCOMMAND_MIC_ON_OFF_TOGGLE 44
+#define APPCOMMAND_CORRECTION_LIST 45
+#define APPCOMMAND_MEDIA_PLAY 46
+#define APPCOMMAND_MEDIA_PAUSE 47
+#define APPCOMMAND_MEDIA_RECORD 48
+#define APPCOMMAND_MEDIA_FAST_FORWARD 49
+#define APPCOMMAND_MEDIA_REWIND 50
+#define APPCOMMAND_MEDIA_CHANNEL_UP 51
+#define APPCOMMAND_MEDIA_CHANNEL_DOWN 52
+
+#define FAPPCOMMAND_MOUSE 0x8000
+#define FAPPCOMMAND_KEY 0
+#define FAPPCOMMAND_OEM 0x1000
+#define FAPPCOMMAND_MASK 0xF000
+
+#define GET_APPCOMMAND_LPARAM(lParam) ((short)(HIWORD(lParam) & ~FAPPCOMMAND_MASK))
+#define GET_DEVICE_LPARAM(lParam) ((WORD)(HIWORD(lParam) & FAPPCOMMAND_MASK))
+#define GET_MOUSEORKEY_LPARAM GET_DEVICE_LPARAM
+#define GET_FLAGS_LPARAM(lParam) (LOWORD(lParam))
+#define GET_KEYSTATE_LPARAM(lParam) GET_FLAGS_LPARAM(lParam)
+
+  typedef struct {
+    HWND hwnd;
+    RECT rc;
+  } SHELLHOOKINFO,*LPSHELLHOOKINFO;
+
+  typedef struct tagEVENTMSG {
+    UINT message;
+    UINT paramL;
+    UINT paramH;
+    DWORD time;
+    HWND hwnd;
+  } EVENTMSG,*PEVENTMSGMSG,*NPEVENTMSGMSG,*LPEVENTMSGMSG;
+
+  typedef struct tagEVENTMSG *PEVENTMSG,*NPEVENTMSG,*LPEVENTMSG;
+
+  typedef struct tagCWPSTRUCT {
+    LPARAM lParam;
+    WPARAM wParam;
+    UINT message;
+    HWND hwnd;
+  } CWPSTRUCT,*PCWPSTRUCT,*NPCWPSTRUCT,*LPCWPSTRUCT;
+
+  typedef struct tagCWPRETSTRUCT {
+    LRESULT lResult;
+    LPARAM lParam;
+    WPARAM wParam;
+    UINT message;
+    HWND hwnd;
+  } CWPRETSTRUCT,*PCWPRETSTRUCT,*NPCWPRETSTRUCT,*LPCWPRETSTRUCT;
+
+#define LLKHF_EXTENDED (KF_EXTENDED >> 8)
+#define LLKHF_INJECTED 0x00000010
+#define LLKHF_ALTDOWN (KF_ALTDOWN >> 8)
+#define LLKHF_UP (KF_UP >> 8)
+
+#define LLMHF_INJECTED 0x00000001
+
+  typedef struct tagKBDLLHOOKSTRUCT {
+    DWORD vkCode;
+    DWORD scanCode;
+    DWORD flags;
+    DWORD time;
+    ULONG_PTR dwExtraInfo;
+  } KBDLLHOOKSTRUCT,*LPKBDLLHOOKSTRUCT,*PKBDLLHOOKSTRUCT;
+
+  typedef struct tagMSLLHOOKSTRUCT {
+    POINT pt;
+    DWORD mouseData;
+    DWORD flags;
+    DWORD time;
+    ULONG_PTR dwExtraInfo;
+  } MSLLHOOKSTRUCT,*LPMSLLHOOKSTRUCT,*PMSLLHOOKSTRUCT;
+
+  typedef struct tagDEBUGHOOKINFO {
+    DWORD idThread;
+    DWORD idThreadInstaller;
+    LPARAM lParam;
+    WPARAM wParam;
+    int code;
+  } DEBUGHOOKINFO,*PDEBUGHOOKINFO,*NPDEBUGHOOKINFO,*LPDEBUGHOOKINFO;
+
+  typedef struct tagMOUSEHOOKSTRUCT {
+    POINT pt;
+    HWND hwnd;
+    UINT wHitTestCode;
+    ULONG_PTR dwExtraInfo;
+  } MOUSEHOOKSTRUCT,*LPMOUSEHOOKSTRUCT,*PMOUSEHOOKSTRUCT;
+
+#ifdef __cplusplus
+  typedef struct tagMOUSEHOOKSTRUCTEX : public tagMOUSEHOOKSTRUCT {
+    DWORD mouseData;
+  } MOUSEHOOKSTRUCTEX,*LPMOUSEHOOKSTRUCTEX,*PMOUSEHOOKSTRUCTEX;
+#else
+  typedef struct tagMOUSEHOOKSTRUCTEX {
+    MOUSEHOOKSTRUCT _unnamed;
+    DWORD mouseData;
+  } MOUSEHOOKSTRUCTEX,*LPMOUSEHOOKSTRUCTEX,*PMOUSEHOOKSTRUCTEX;
+#endif
+
+  typedef struct tagHARDWAREHOOKSTRUCT {
+    HWND hwnd;
+    UINT message;
+    WPARAM wParam;
+    LPARAM lParam;
+  } HARDWAREHOOKSTRUCT,*LPHARDWAREHOOKSTRUCT,*PHARDWAREHOOKSTRUCT;
+#endif
+
+#define HKL_PREV 0
+#define HKL_NEXT 1
+
+#define KLF_ACTIVATE 0x00000001
+#define KLF_SUBSTITUTE_OK 0x00000002
+#define KLF_REORDER 0x00000008
+#define KLF_REPLACELANG 0x00000010
+#define KLF_NOTELLSHELL 0x00000080
+#define KLF_SETFORPROCESS 0x00000100
+#define KLF_SHIFTLOCK 0x00010000
+#define KLF_RESET 0x40000000
+
+#define INPUTLANGCHANGE_SYSCHARSET 0x0001
+#define INPUTLANGCHANGE_FORWARD 0x0002
+#define INPUTLANGCHANGE_BACKWARD 0x0004
+
+#define KL_NAMELENGTH 9
+
+#define LoadKeyboardLayout __MINGW_NAME_AW(LoadKeyboardLayout)
+#define GetKeyboardLayoutName __MINGW_NAME_AW(GetKeyboardLayoutName)
+
+  WINUSERAPI HKL WINAPI LoadKeyboardLayoutA(LPCSTR pwszKLID,UINT Flags);
+  WINUSERAPI HKL WINAPI LoadKeyboardLayoutW(LPCWSTR pwszKLID,UINT Flags);
+  WINUSERAPI HKL WINAPI ActivateKeyboardLayout(HKL hkl,UINT Flags);
+  WINUSERAPI int WINAPI ToUnicodeEx(UINT wVirtKey,UINT wScanCode,CONST BYTE *lpKeyState,LPWSTR pwszBuff,int cchBuff,UINT wFlags,HKL dwhkl);
+  WINUSERAPI WINBOOL WINAPI UnloadKeyboardLayout(HKL hkl);
+  WINUSERAPI WINBOOL WINAPI GetKeyboardLayoutNameA(LPSTR pwszKLID);
+  WINUSERAPI WINBOOL WINAPI GetKeyboardLayoutNameW(LPWSTR pwszKLID);
+  WINUSERAPI int WINAPI GetKeyboardLayoutList(int nBuff,HKL *lpList);
+  WINUSERAPI HKL WINAPI GetKeyboardLayout(DWORD idThread);
+
+  typedef struct tagMOUSEMOVEPOINT {
+    int x;
+    int y;
+    DWORD time;
+    ULONG_PTR dwExtraInfo;
+  } MOUSEMOVEPOINT,*PMOUSEMOVEPOINT,*LPMOUSEMOVEPOINT;
+
+#define GMMP_USE_DISPLAY_POINTS 1
+#define GMMP_USE_HIGH_RESOLUTION_POINTS 2
+
+  WINUSERAPI int WINAPI GetMouseMovePointsEx(UINT cbSize,LPMOUSEMOVEPOINT lppt,LPMOUSEMOVEPOINT lpptBuf,int nBufPoints,DWORD resolution);
+
+#ifndef NODESKTOP
+
+#define DESKTOP_READOBJECTS __MSABI_LONG(0x0001)
+#define DESKTOP_CREATEWINDOW __MSABI_LONG(0x0002)
+#define DESKTOP_CREATEMENU __MSABI_LONG(0x0004)
+#define DESKTOP_HOOKCONTROL __MSABI_LONG(0x0008)
+#define DESKTOP_JOURNALRECORD __MSABI_LONG(0x0010)
+#define DESKTOP_JOURNALPLAYBACK __MSABI_LONG(0x0020)
+#define DESKTOP_ENUMERATE __MSABI_LONG(0x0040)
+#define DESKTOP_WRITEOBJECTS __MSABI_LONG(0x0080)
+#define DESKTOP_SWITCHDESKTOP __MSABI_LONG(0x0100)
+
+#define DF_ALLOWOTHERACCOUNTHOOK __MSABI_LONG(0x0001)
+
+#ifdef _WINGDI_
+#ifndef NOGDI
+#define CreateDesktop __MINGW_NAME_AW(CreateDesktop)
+
+  WINUSERAPI HDESK WINAPI CreateDesktopA(LPCSTR lpszDesktop,LPCSTR lpszDevice,LPDEVMODEA pDevmode,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);
+  WINUSERAPI HDESK WINAPI CreateDesktopW(LPCWSTR lpszDesktop,LPCWSTR lpszDevice,LPDEVMODEW pDevmode,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);
+#endif
+#endif
+
+#define OpenDesktop __MINGW_NAME_AW(OpenDesktop)
+#define EnumDesktops __MINGW_NAME_AW(EnumDesktops)
+
+  WINUSERAPI HDESK WINAPI OpenDesktopA(LPCSTR lpszDesktop,DWORD dwFlags,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
+  WINUSERAPI HDESK WINAPI OpenDesktopW(LPCWSTR lpszDesktop,DWORD dwFlags,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
+  WINUSERAPI HDESK WINAPI OpenInputDesktop(DWORD dwFlags,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
+  WINUSERAPI WINBOOL WINAPI EnumDesktopsA(HWINSTA hwinsta,DESKTOPENUMPROCA lpEnumFunc,LPARAM lParam);
+  WINUSERAPI WINBOOL WINAPI EnumDesktopsW(HWINSTA hwinsta,DESKTOPENUMPROCW lpEnumFunc,LPARAM lParam);
+  WINUSERAPI WINBOOL WINAPI EnumDesktopWindows(HDESK hDesktop,WNDENUMPROC lpfn,LPARAM lParam);
+  WINUSERAPI WINBOOL WINAPI SwitchDesktop(HDESK hDesktop);
+  WINUSERAPI WINBOOL WINAPI SetThreadDesktop(HDESK hDesktop);
+  WINUSERAPI WINBOOL WINAPI CloseDesktop(HDESK hDesktop);
+  WINUSERAPI HDESK WINAPI GetThreadDesktop(DWORD dwThreadId);
+#endif
+
+#ifndef NOWINDOWSTATION
+#define WINSTA_ENUMDESKTOPS __MSABI_LONG(0x0001)
+#define WINSTA_READATTRIBUTES __MSABI_LONG(0x0002)
+#define WINSTA_ACCESSCLIPBOARD __MSABI_LONG(0x0004)
+#define WINSTA_CREATEDESKTOP __MSABI_LONG(0x0008)
+#define WINSTA_WRITEATTRIBUTES __MSABI_LONG(0x0010)
+#define WINSTA_ACCESSGLOBALATOMS __MSABI_LONG(0x0020)
+#define WINSTA_EXITWINDOWS __MSABI_LONG(0x0040)
+#define WINSTA_ENUMERATE __MSABI_LONG(0x0100)
+#define WINSTA_READSCREEN __MSABI_LONG(0x0200)
+#define WINSTA_ALL_ACCESS (WINSTA_ENUMDESKTOPS | WINSTA_READATTRIBUTES | WINSTA_ACCESSCLIPBOARD | WINSTA_CREATEDESKTOP | WINSTA_WRITEATTRIBUTES | WINSTA_ACCESSGLOBALATOMS | WINSTA_EXITWINDOWS | WINSTA_ENUMERATE | WINSTA_READSCREEN)
+
+#define CWF_CREATE_ONLY __MSABI_LONG(0x0001)
+
+#define WSF_VISIBLE __MSABI_LONG(0x0001)
+
+#define CreateWindowStation __MINGW_NAME_AW(CreateWindowStation)
+#define OpenWindowStation __MINGW_NAME_AW(OpenWindowStation)
+#define EnumWindowStations __MINGW_NAME_AW(EnumWindowStations)
+
+  WINUSERAPI HWINSTA WINAPI CreateWindowStationA(LPCSTR lpwinsta,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);
+  WINUSERAPI HWINSTA WINAPI CreateWindowStationW(LPCWSTR lpwinsta,DWORD dwFlags,ACCESS_MASK dwDesiredAccess,LPSECURITY_ATTRIBUTES lpsa);
+  WINUSERAPI HWINSTA WINAPI OpenWindowStationA(LPCSTR lpszWinSta,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
+  WINUSERAPI HWINSTA WINAPI OpenWindowStationW(LPCWSTR lpszWinSta,WINBOOL fInherit,ACCESS_MASK dwDesiredAccess);
+  WINUSERAPI WINBOOL WINAPI EnumWindowStationsA(WINSTAENUMPROCA lpEnumFunc,LPARAM lParam);
+  WINUSERAPI WINBOOL WINAPI EnumWindowStationsW(WINSTAENUMPROCW lpEnumFunc,LPARAM lParam);
+  WINUSERAPI WINBOOL WINAPI CloseWindowStation(HWINSTA hWinSta);
+  WINUSERAPI WINBOOL WINAPI SetProcessWindowStation(HWINSTA hWinSta);
+  WINUSERAPI HWINSTA WINAPI GetProcessWindowStation(VOID);
+#endif
+
+#ifndef NOSECURITY
+  WINUSERAPI WINBOOL WINAPI SetUserObjectSecurity(HANDLE hObj,PSECURITY_INFORMATION pSIRequested,PSECURITY_DESCRIPTOR pSID);
+  WINUSERAPI WINBOOL WINAPI GetUserObjectSecurity(HANDLE hObj,PSECURITY_INFORMATION pSIRequested,PSECURITY_DESCRIPTOR pSID,DWORD nLength,LPDWORD lpnLengthNeeded);
+
+#define UOI_FLAGS 1
+#define UOI_NAME 2
+#define UOI_TYPE 3
+#define UOI_USER_SID 4
+
+  typedef struct tagUSEROBJECTFLAGS {
+    WINBOOL fInherit;
+    WINBOOL fReserved;
+    DWORD dwFlags;
+  } USEROBJECTFLAGS,*PUSEROBJECTFLAGS;
+
+#define GetUserObjectInformation __MINGW_NAME_AW(GetUserObjectInformation)
+#define SetUserObjectInformation __MINGW_NAME_AW(SetUserObjectInformation)
+
+  WINUSERAPI WINBOOL WINAPI GetUserObjectInformationA(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength,LPDWORD lpnLengthNeeded);
+  WINUSERAPI WINBOOL WINAPI GetUserObjectInformationW(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength,LPDWORD lpnLengthNeeded);
+  WINUSERAPI WINBOOL WINAPI SetUserObjectInformationA(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength);
+  WINUSERAPI WINBOOL WINAPI SetUserObjectInformationW(HANDLE hObj,int nIndex,PVOID pvInfo,DWORD nLength);
+#endif
+
+  typedef struct tagWNDCLASSEXA {
+    UINT cbSize;
+    UINT style;
+    WNDPROC lpfnWndProc;
+    int cbClsExtra;
+    int cbWndExtra;
+    HINSTANCE hInstance;
+    HICON hIcon;
+    HCURSOR hCursor;
+    HBRUSH hbrBackground;
+    LPCSTR lpszMenuName;
+    LPCSTR lpszClassName;
+    HICON hIconSm;
+  } WNDCLASSEXA,*PWNDCLASSEXA,*NPWNDCLASSEXA,*LPWNDCLASSEXA;
+
+  typedef struct tagWNDCLASSEXW {
+    UINT cbSize;
+    UINT style;
+    WNDPROC lpfnWndProc;
+    int cbClsExtra;
+    int cbWndExtra;
+    HINSTANCE hInstance;
+    HICON hIcon;
+    HCURSOR hCursor;
+    HBRUSH hbrBackground;
+    LPCWSTR lpszMenuName;
+    LPCWSTR lpszClassName;
+
+    HICON hIconSm;
+  } WNDCLASSEXW,*PWNDCLASSEXW,*NPWNDCLASSEXW,*LPWNDCLASSEXW;
+
+  __MINGW_TYPEDEF_AW(WNDCLASSEX)
+  __MINGW_TYPEDEF_AW(PWNDCLASSEX)
+  __MINGW_TYPEDEF_AW(NPWNDCLASSEX)
+  __MINGW_TYPEDEF_AW(LPWNDCLASSEX)
+
+  typedef struct tagWNDCLASSA {
+    UINT style;
+    WNDPROC lpfnWndProc;
+    int cbClsExtra;
+    int cbWndExtra;
+    HINSTANCE hInstance;
+    HICON hIcon;
+    HCURSOR hCursor;
+    HBRUSH hbrBackground;
+    LPCSTR lpszMenuName;
+    LPCSTR lpszClassName;
+  } WNDCLASSA,*PWNDCLASSA,*NPWNDCLASSA,*LPWNDCLASSA;
+
+  typedef struct tagWNDCLASSW {
+    UINT style;
+    WNDPROC lpfnWndProc;
+    int cbClsExtra;
+    int cbWndExtra;
+    HINSTANCE hInstance;
+    HICON hIcon;
+    HCURSOR hCursor;
+    HBRUSH hbrBackground;
+    LPCWSTR lpszMenuName;
+    LPCWSTR lpszClassName;
+  } WNDCLASSW,*PWNDCLASSW,*NPWNDCLASSW,*LPWNDCLASSW;
+
+  __MINGW_TYPEDEF_AW(WNDCLASS)
+  __MINGW_TYPEDEF_AW(PWNDCLASS)
+  __MINGW_TYPEDEF_AW(NPWNDCLASS)
+  __MINGW_TYPEDEF_AW(LPWNDCLASS)
+
+  WINUSERAPI WINBOOL WINAPI IsHungAppWindow(HWND hwnd);
+  WINUSERAPI VOID WINAPI DisableProcessWindowsGhosting(VOID);
+
+#ifndef NOMSG
+  typedef struct tagMSG {
+    HWND hwnd;
+    UINT message;
+    WPARAM wParam;
+    LPARAM lParam;
+    DWORD time;
+    POINT pt;
+  } MSG,*PMSG,*NPMSG,*LPMSG;
+
+#define POINTSTOPOINT(pt,pts) { (pt).x = (LONG)(SHORT)LOWORD(*(LONG*)&pts); (pt).y = (LONG)(SHORT)HIWORD(*(LONG*)&pts); }
+
+#define POINTTOPOINTS(pt) (MAKELONG((short)((pt).x),(short)((pt).y)))
+#define MAKEWPARAM(l,h) ((WPARAM)(DWORD)MAKELONG(l,h))
+#define MAKELPARAM(l,h) ((LPARAM)(DWORD)MAKELONG(l,h))
+#define MAKELRESULT(l,h) ((LRESULT)(DWORD)MAKELONG(l,h))
+#endif
+
+#ifndef NOWINOFFSETS
+#define GWL_WNDPROC (-4)
+#define GWL_HINSTANCE (-6)
+#define GWL_HWNDPARENT (-8)
+#define GWL_STYLE (-16)
+#define GWL_EXSTYLE (-20)
+#define GWL_USERDATA (-21)
+#define GWL_ID (-12)
+
+#ifdef _WIN64
+#undef GWL_WNDPROC
+#undef GWL_HINSTANCE
+#undef GWL_HWNDPARENT
+#undef GWL_USERDATA
+#endif
+
+#define GWLP_WNDPROC (-4)
+#define GWLP_HINSTANCE (-6)
+#define GWLP_HWNDPARENT (-8)
+#define GWLP_USERDATA (-21)
+#define GWLP_ID (-12)
+
+#define GCL_MENUNAME (-8)
+#define GCL_HBRBACKGROUND (-10)
+#define GCL_HCURSOR (-12)
+#define GCL_HICON (-14)
+#define GCL_HMODULE (-16)
+#define GCL_CBWNDEXTRA (-18)
+#define GCL_CBCLSEXTRA (-20)
+#define GCL_WNDPROC (-24)
+#define GCL_STYLE (-26)
+#define GCW_ATOM (-32)
+#define GCL_HICONSM (-34)
+
+#ifdef _WIN64
+
+#undef GCL_MENUNAME
+#undef GCL_HBRBACKGROUND
+#undef GCL_HCURSOR
+#undef GCL_HICON
+#undef GCL_HMODULE
+#undef GCL_WNDPROC
+#undef GCL_HICONSM
+#endif
+
+#define GCLP_MENUNAME (-8)
+#define GCLP_HBRBACKGROUND (-10)
+#define GCLP_HCURSOR (-12)
+#define GCLP_HICON (-14)
+#define GCLP_HMODULE (-16)
+#define GCLP_WNDPROC (-24)
+#define GCLP_HICONSM (-34)
+#endif
+
+#ifndef NOWINMESSAGES
+
+#define WM_NULL 0x0000
+#define WM_CREATE 0x0001
+#define WM_DESTROY 0x0002
+#define WM_MOVE 0x0003
+#define WM_SIZE 0x0005
+
+#define WM_ACTIVATE 0x0006
+
+#define WA_INACTIVE 0
+#define WA_ACTIVE 1
+#define WA_CLICKACTIVE 2
+
+#define WM_SETFOCUS 0x0007
+#define WM_KILLFOCUS 0x0008
+#define WM_ENABLE 0x000A
+#define WM_SETREDRAW 0x000B
+#define WM_SETTEXT 0x000C
+#define WM_GETTEXT 0x000D
+#define WM_GETTEXTLENGTH 0x000E
+#define WM_PAINT 0x000F
+#define WM_CLOSE 0x0010
+#ifndef _WIN32_WCE
+#define WM_QUERYENDSESSION 0x0011
+#define WM_QUERYOPEN 0x0013
+#define WM_ENDSESSION 0x0016
+#endif
+#define WM_QUIT 0x0012
+#define WM_ERASEBKGND 0x0014
+#define WM_SYSCOLORCHANGE 0x0015
+#define WM_SHOWWINDOW 0x0018
+#define WM_WININICHANGE 0x001A
+#define WM_SETTINGCHANGE WM_WININICHANGE
+#define WM_DEVMODECHANGE 0x001B
+#define WM_ACTIVATEAPP 0x001C
+#define WM_FONTCHANGE 0x001D
+#define WM_TIMECHANGE 0x001E
+#define WM_CANCELMODE 0x001F
+#define WM_SETCURSOR 0x0020
+#define WM_MOUSEACTIVATE 0x0021
+#define WM_CHILDACTIVATE 0x0022
+#define WM_QUEUESYNC 0x0023
+
+#define WM_GETMINMAXINFO 0x0024
+
+  typedef struct tagMINMAXINFO {
+    POINT ptReserved;
+    POINT ptMaxSize;
+    POINT ptMaxPosition;
+    POINT ptMinTrackSize;
+    POINT ptMaxTrackSize;
+  } MINMAXINFO,*PMINMAXINFO,*LPMINMAXINFO;
+
+#define WM_PAINTICON 0x0026
+#define WM_ICONERASEBKGND 0x0027
+#define WM_NEXTDLGCTL 0x0028
+#define WM_SPOOLERSTATUS 0x002A
+#define WM_DRAWITEM 0x002B
+#define WM_MEASUREITEM 0x002C
+#define WM_DELETEITEM 0x002D
+#define WM_VKEYTOITEM 0x002E
+#define WM_CHARTOITEM 0x002F
+#define WM_SETFONT 0x0030
+#define WM_GETFONT 0x0031
+#define WM_SETHOTKEY 0x0032
+#define WM_GETHOTKEY 0x0033
+#define WM_QUERYDRAGICON 0x0037
+#define WM_COMPAREITEM 0x0039
+#ifndef _WIN32_WCE
+#define WM_GETOBJECT 0x003D
+#endif
+#define WM_COMPACTING 0x0041
+#define WM_COMMNOTIFY 0x0044
+#define WM_WINDOWPOSCHANGING 0x0046
+#define WM_WINDOWPOSCHANGED 0x0047
+
+#define WM_POWER 0x0048
+
+#define PWR_OK 1
+#define PWR_FAIL (-1)
+#define PWR_SUSPENDREQUEST 1
+#define PWR_SUSPENDRESUME 2
+#define PWR_CRITICALRESUME 3
+
+#define WM_COPYDATA 0x004A
+#define WM_CANCELJOURNAL 0x004B
+
+  typedef struct tagCOPYDATASTRUCT {
+    ULONG_PTR dwData;
+    DWORD cbData;
+    PVOID lpData;
+  } COPYDATASTRUCT,*PCOPYDATASTRUCT;
+
+  typedef struct tagMDINEXTMENU {
+    HMENU hmenuIn;
+    HMENU hmenuNext;
+    HWND hwndNext;
+  } MDINEXTMENU,*PMDINEXTMENU,*LPMDINEXTMENU;
+
+#define WM_NOTIFY 0x004E
+#define WM_INPUTLANGCHANGEREQUEST 0x0050
+#define WM_INPUTLANGCHANGE 0x0051
+#define WM_TCARD 0x0052
+#define WM_HELP 0x0053
+#define WM_USERCHANGED 0x0054
+#define WM_NOTIFYFORMAT 0x0055
+
+#define NFR_ANSI 1
+#define NFR_UNICODE 2
+#define NF_QUERY 3
+#define NF_REQUERY 4
+
+#define WM_CONTEXTMENU 0x007B
+#define WM_STYLECHANGING 0x007C
+#define WM_STYLECHANGED 0x007D
+#define WM_DISPLAYCHANGE 0x007E
+#define WM_GETICON 0x007F
+#define WM_SETICON 0x0080
+
+#define WM_NCCREATE 0x0081
+#define WM_NCDESTROY 0x0082
+#define WM_NCCALCSIZE 0x0083
+#define WM_NCHITTEST 0x0084
+#define WM_NCPAINT 0x0085
+#define WM_NCACTIVATE 0x0086
+#define WM_GETDLGCODE 0x0087
+#ifndef _WIN32_WCE
+#define WM_SYNCPAINT 0x0088
+#endif
+#define WM_NCMOUSEMOVE 0x00A0
+#define WM_NCLBUTTONDOWN 0x00A1
+#define WM_NCLBUTTONUP 0x00A2
+#define WM_NCLBUTTONDBLCLK 0x00A3
+#define WM_NCRBUTTONDOWN 0x00A4
+#define WM_NCRBUTTONUP 0x00A5
+#define WM_NCRBUTTONDBLCLK 0x00A6
+#define WM_NCMBUTTONDOWN 0x00A7
+#define WM_NCMBUTTONUP 0x00A8
+#define WM_NCMBUTTONDBLCLK 0x00A9
+
+#define WM_NCXBUTTONDOWN 0x00AB
+#define WM_NCXBUTTONUP 0x00AC
+#define WM_NCXBUTTONDBLCLK 0x00AD
+#define WM_INPUT 0x00FF
+#define WM_KEYFIRST 0x0100
+#define WM_KEYDOWN 0x0100
+#define WM_KEYUP 0x0101
+#define WM_CHAR 0x0102
+#define WM_DEADCHAR 0x0103
+#define WM_SYSKEYDOWN 0x0104
+#define WM_SYSKEYUP 0x0105
+#define WM_SYSCHAR 0x0106
+#define WM_SYSDEADCHAR 0x0107
+#define WM_UNICHAR 0x0109
+#define WM_KEYLAST 0x0109
+#define UNICODE_NOCHAR 0xFFFF
+#define WM_IME_STARTCOMPOSITION 0x010D
+#define WM_IME_ENDCOMPOSITION 0x010E
+#define WM_IME_COMPOSITION 0x010F
+#define WM_IME_KEYLAST 0x010F
+#define WM_INITDIALOG 0x0110
+#define WM_COMMAND 0x0111
+#define WM_SYSCOMMAND 0x0112
+#define WM_TIMER 0x0113
+#define WM_HSCROLL 0x0114
+#define WM_VSCROLL 0x0115
+#define WM_INITMENU 0x0116
+#define WM_INITMENUPOPUP 0x0117
+#define WM_MENUSELECT 0x011F
+#if (_WIN32_WINNT >= 0x0601)
+#define WM_GESTURE 0x0119
+#define WM_GESTURENOTIFY 0x011A
+#endif /* _WIN32_WINNT >= 0x0601 */
+#define WM_MENUCHAR 0x0120
+#define WM_ENTERIDLE 0x0121
+#ifndef _WIN32_WCE
+#define WM_MENURBUTTONUP 0x0122
+#define WM_MENUDRAG 0x0123
+#define WM_MENUGETOBJECT 0x0124
+#define WM_UNINITMENUPOPUP 0x0125
+#define WM_MENUCOMMAND 0x0126
+
+#ifndef _WIN32_WCE
+#define WM_CHANGEUISTATE 0x0127
+#define WM_UPDATEUISTATE 0x0128
+#define WM_QUERYUISTATE 0x0129
+
+#define UIS_SET 1
+#define UIS_CLEAR 2
+#define UIS_INITIALIZE 3
+
+#define UISF_HIDEFOCUS 0x1
+#define UISF_HIDEACCEL 0x2
+#define UISF_ACTIVE 0x4
+#endif
+#endif
+
+#define WM_CTLCOLORMSGBOX 0x0132
+#define WM_CTLCOLOREDIT 0x0133
+#define WM_CTLCOLORLISTBOX 0x0134
+#define WM_CTLCOLORBTN 0x0135
+#define WM_CTLCOLORDLG 0x0136
+#define WM_CTLCOLORSCROLLBAR 0x0137
+#define WM_CTLCOLORSTATIC 0x0138
+#define MN_GETHMENU 0x01E1
+
+#define WM_MOUSEFIRST 0x0200
+#define WM_MOUSEMOVE 0x0200
+#define WM_LBUTTONDOWN 0x0201
+#define WM_LBUTTONUP 0x0202
+#define WM_LBUTTONDBLCLK 0x0203
+#define WM_RBUTTONDOWN 0x0204
+#define WM_RBUTTONUP 0x0205
+#define WM_RBUTTONDBLCLK 0x0206
+#define WM_MBUTTONDOWN 0x0207
+#define WM_MBUTTONUP 0x0208
+#define WM_MBUTTONDBLCLK 0x0209
+#define WM_MOUSEWHEEL 0x020A
+#define WM_XBUTTONDOWN 0x020B
+#define WM_XBUTTONUP 0x020C
+#define WM_XBUTTONDBLCLK 0x020D
+#define WM_MOUSELAST 0x020D
+
+#if (_WIN32_WINNT >= 0x0600)
+#define WM_MOUSEHWHEEL 0x020E
+#endif
+
+#define WHEEL_DELTA 120
+#define GET_WHEEL_DELTA_WPARAM(wParam) ((short)HIWORD(wParam))
+
+#define WHEEL_PAGESCROLL (UINT_MAX)
+
+#define GET_KEYSTATE_WPARAM(wParam) (LOWORD(wParam))
+#define GET_NCHITTEST_WPARAM(wParam) ((short)LOWORD(wParam))
+#define GET_XBUTTON_WPARAM(wParam) (HIWORD(wParam))
+
+#define XBUTTON1 0x0001
+#define XBUTTON2 0x0002
+
+#define WM_PARENTNOTIFY 0x0210
+#define WM_ENTERMENULOOP 0x0211
+#define WM_EXITMENULOOP 0x0212
+
+#define WM_NEXTMENU 0x0213
+#define WM_SIZING 0x0214
+#define WM_CAPTURECHANGED 0x0215
+#define WM_MOVING 0x0216
+
+#define WM_POWERBROADCAST 0x0218
+
+#ifndef _WIN32_WCE
+#define PBT_APMQUERYSUSPEND 0x0000
+#define PBT_APMQUERYSTANDBY 0x0001
+
+#define PBT_APMQUERYSUSPENDFAILED 0x0002
+#define PBT_APMQUERYSTANDBYFAILED 0x0003
+
+#define PBT_APMSUSPEND 0x0004
+#define PBT_APMSTANDBY 0x0005
+
+#define PBT_APMRESUMECRITICAL 0x0006
+#define PBT_APMRESUMESUSPEND 0x0007
+#define PBT_APMRESUMESTANDBY 0x0008
+
+#define PBTF_APMRESUMEFROMFAILURE 0x00000001
+
+#define PBT_APMBATTERYLOW 0x0009
+#define PBT_APMPOWERSTATUSCHANGE 0x000A
+
+#define PBT_APMOEMEVENT 0x000B
+#define PBT_APMRESUMEAUTOMATIC 0x0012
+#endif
+
+#if (_WIN32_WINNT >= 0x0502)
+#define PBT_POWERSETTINGCHANGE 32787
+#endif
+
+#define WM_DEVICECHANGE 0x0219
+
+#define WM_MDICREATE 0x0220
+#define WM_MDIDESTROY 0x0221
+#define WM_MDIACTIVATE 0x0222
+#define WM_MDIRESTORE 0x0223
+#define WM_MDINEXT 0x0224
+#define WM_MDIMAXIMIZE 0x0225
+#define WM_MDITILE 0x0226
+#define WM_MDICASCADE 0x0227
+#define WM_MDIICONARRANGE 0x0228
+#define WM_MDIGETACTIVE 0x0229
+
+#define WM_MDISETMENU 0x0230
+#define WM_ENTERSIZEMOVE 0x0231
+#define WM_EXITSIZEMOVE 0x0232
+#define WM_DROPFILES 0x0233
+#define WM_MDIREFRESHMENU 0x0234
+
+#define WM_IME_SETCONTEXT 0x0281
+#define WM_IME_NOTIFY 0x0282
+#define WM_IME_CONTROL 0x0283
+#define WM_IME_COMPOSITIONFULL 0x0284
+#define WM_IME_SELECT 0x0285
+#define WM_IME_CHAR 0x0286
+#define WM_IME_REQUEST 0x0288
+#define WM_IME_KEYDOWN 0x0290
+#define WM_IME_KEYUP 0x0291
+
+#define WM_MOUSEHOVER 0x02A1
+#define WM_MOUSELEAVE 0x02A3
+#define WM_NCMOUSEHOVER 0x02A0
+#define WM_NCMOUSELEAVE 0x02A2
+#define WM_WTSSESSION_CHANGE 0x02B1
+#define WM_TABLET_FIRST 0x02c0
+#define WM_TABLET_LAST 0x02df
+#define WM_CUT 0x0300
+#define WM_COPY 0x0301
+#define WM_PASTE 0x0302
+#define WM_CLEAR 0x0303
+#define WM_UNDO 0x0304
+#define WM_RENDERFORMAT 0x0305
+#define WM_RENDERALLFORMATS 0x0306
+#define WM_DESTROYCLIPBOARD 0x0307
+#define WM_DRAWCLIPBOARD 0x0308
+#define WM_PAINTCLIPBOARD 0x0309
+#define WM_VSCROLLCLIPBOARD 0x030A
+#define WM_SIZECLIPBOARD 0x030B
+#define WM_ASKCBFORMATNAME 0x030C
+#define WM_CHANGECBCHAIN 0x030D
+#define WM_HSCROLLCLIPBOARD 0x030E
+#define WM_QUERYNEWPALETTE 0x030F
+#define WM_PALETTEISCHANGING 0x0310
+#define WM_PALETTECHANGED 0x0311
+#define WM_HOTKEY 0x0312
+#define WM_PRINT 0x0317
+#define WM_PRINTCLIENT 0x0318
+#define WM_APPCOMMAND 0x0319
+#define WM_THEMECHANGED 0x031A
+#define WM_HANDHELDFIRST 0x0358
+#define WM_HANDHELDLAST 0x035F
+#define WM_AFXFIRST 0x0360
+#define WM_AFXLAST 0x037F
+#define WM_PENWINFIRST 0x0380
+#define WM_PENWINLAST 0x038F
+#define WM_APP 0x8000
+#define WM_USER 0x0400
+
+#define WMSZ_LEFT 1
+#define WMSZ_RIGHT 2
+#define WMSZ_TOP 3
+#define WMSZ_TOPLEFT 4
+#define WMSZ_TOPRIGHT 5
+#define WMSZ_BOTTOM 6
+#define WMSZ_BOTTOMLEFT 7
+#define WMSZ_BOTTOMRIGHT 8
+
+#ifndef NONCMESSAGES
+
+#define HTERROR (-2)
+#define HTTRANSPARENT (-1)
+#define HTNOWHERE 0
+#define HTCLIENT 1
+#define HTCAPTION 2
+#define HTSYSMENU 3
+#define HTGROWBOX 4
+#define HTSIZE HTGROWBOX
+#define HTMENU 5
+#define HTHSCROLL 6
+#define HTVSCROLL 7
+#define HTMINBUTTON 8
+#define HTMAXBUTTON 9
+#define HTLEFT 10
+#define HTRIGHT 11
+#define HTTOP 12
+#define HTTOPLEFT 13
+#define HTTOPRIGHT 14
+#define HTBOTTOM 15
+#define HTBOTTOMLEFT 16
+#define HTBOTTOMRIGHT 17
+#define HTBORDER 18
+#define HTREDUCE HTMINBUTTON
+#define HTZOOM HTMAXBUTTON
+#define HTSIZEFIRST HTLEFT
+#define HTSIZELAST HTBOTTOMRIGHT
+#define HTOBJECT 19
+#define HTCLOSE 20
+#define HTHELP 21
+
+#define SMTO_NORMAL 0x0000
+#define SMTO_BLOCK 0x0001
+#define SMTO_ABORTIFHUNG 0x0002
+#define SMTO_NOTIMEOUTIFNOTHUNG 0x0008
+#endif
+
+#define MA_ACTIVATE 1
+#define MA_ACTIVATEANDEAT 2
+#define MA_NOACTIVATE 3
+#define MA_NOACTIVATEANDEAT 4
+
+#define ICON_SMALL 0
+#define ICON_BIG 1
+#define ICON_SMALL2 2
+
+#define RegisterWindowMessage __MINGW_NAME_AW(RegisterWindowMessage)
+
+  WINUSERAPI UINT WINAPI RegisterWindowMessageA(LPCSTR lpString);
+  WINUSERAPI UINT WINAPI RegisterWindowMessageW(LPCWSTR lpString);
+
+#define SIZE_RESTORED 0
+#define SIZE_MINIMIZED 1
+#define SIZE_MAXIMIZED 2
+#define SIZE_MAXSHOW 3
+#define SIZE_MAXHIDE 4
+
+#define SIZENORMAL SIZE_RESTORED
+#define SIZEICONIC SIZE_MINIMIZED
+#define SIZEFULLSCREEN SIZE_MAXIMIZED
+#define SIZEZOOMSHOW SIZE_MAXSHOW
+#define SIZEZOOMHIDE SIZE_MAXHIDE
+
+  typedef struct tagWINDOWPOS {
+    HWND hwnd;
+    HWND hwndInsertAfter;
+    int x;
+    int y;
+    int cx;
+    int cy;
+    UINT flags;
+  } WINDOWPOS,*LPWINDOWPOS,*PWINDOWPOS;
+
+  typedef struct tagNCCALCSIZE_PARAMS {
+    RECT rgrc[3];
+    PWINDOWPOS lppos;
+  } NCCALCSIZE_PARAMS,*LPNCCALCSIZE_PARAMS;
+
+#define WVR_ALIGNTOP 0x0010
+#define WVR_ALIGNLEFT 0x0020
+#define WVR_ALIGNBOTTOM 0x0040
+#define WVR_ALIGNRIGHT 0x0080
+#define WVR_HREDRAW 0x0100
+#define WVR_VREDRAW 0x0200
+#define WVR_REDRAW (WVR_HREDRAW | WVR_VREDRAW)
+#define WVR_VALIDRECTS 0x0400
+
+#ifndef NOKEYSTATES
+
+#define MK_LBUTTON 0x0001
+#define MK_RBUTTON 0x0002
+#define MK_SHIFT 0x0004
+#define MK_CONTROL 0x0008
+#define MK_MBUTTON 0x0010
+#define MK_XBUTTON1 0x0020
+#define MK_XBUTTON2 0x0040
+#endif
+
+#ifndef NOTRACKMOUSEEVENT
+#define TME_HOVER 0x00000001
+#define TME_LEAVE 0x00000002
+#define TME_NONCLIENT 0x00000010
+#define TME_QUERY 0x40000000
+#define TME_CANCEL 0x80000000
+
+#define HOVER_DEFAULT 0xFFFFFFFF
+#endif
+
+  typedef struct tagTRACKMOUSEEVENT {
+    DWORD cbSize;
+    DWORD dwFlags;
+    HWND hwndTrack;
+    DWORD dwHoverTime;
+  } TRACKMOUSEEVENT,*LPTRACKMOUSEEVENT;
+
+  WINUSERAPI WINBOOL WINAPI TrackMouseEvent(LPTRACKMOUSEEVENT lpEventTrack);
+#endif
+
+#ifndef NOWINSTYLES
+
+#define WS_OVERLAPPED __MSABI_LONG(0x00000000)
+#define WS_POPUP __MSABI_LONG(0x80000000)
+#define WS_CHILD __MSABI_LONG(0x40000000)
+#define WS_MINIMIZE __MSABI_LONG(0x20000000)
+#define WS_VISIBLE __MSABI_LONG(0x10000000)
+#define WS_DISABLED __MSABI_LONG(0x08000000)
+#define WS_CLIPSIBLINGS __MSABI_LONG(0x04000000)
+#define WS_CLIPCHILDREN __MSABI_LONG(0x02000000)
+#define WS_MAXIMIZE __MSABI_LONG(0x01000000)
+#define WS_CAPTION __MSABI_LONG(0x00C00000)
+#define WS_BORDER __MSABI_LONG(0x00800000)
+#define WS_DLGFRAME __MSABI_LONG(0x00400000)
+#define WS_VSCROLL __MSABI_LONG(0x00200000)
+#define WS_HSCROLL __MSABI_LONG(0x00100000)
+#define WS_SYSMENU __MSABI_LONG(0x00080000)
+#define WS_THICKFRAME __MSABI_LONG(0x00040000)
+#define WS_GROUP __MSABI_LONG(0x00020000)
+#define WS_TABSTOP __MSABI_LONG(0x00010000)
+#define WS_MINIMIZEBOX __MSABI_LONG(0x00020000)
+#define WS_MAXIMIZEBOX __MSABI_LONG(0x00010000)
+#define WS_TILED WS_OVERLAPPED
+#define WS_ICONIC WS_MINIMIZE
+#define WS_SIZEBOX WS_THICKFRAME
+#define WS_TILEDWINDOW WS_OVERLAPPEDWINDOW
+#define WS_OVERLAPPEDWINDOW (WS_OVERLAPPED | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME | WS_MINIMIZEBOX | WS_MAXIMIZEBOX)
+#define WS_POPUPWINDOW (WS_POPUP | WS_BORDER | WS_SYSMENU)
+#define WS_CHILDWINDOW (WS_CHILD)
+
+#define WS_EX_DLGMODALFRAME __MSABI_LONG(0x00000001)
+#define WS_EX_NOPARENTNOTIFY __MSABI_LONG(0x00000004)
+#define WS_EX_TOPMOST __MSABI_LONG(0x00000008)
+#define WS_EX_ACCEPTFILES __MSABI_LONG(0x00000010)
+#define WS_EX_TRANSPARENT __MSABI_LONG(0x00000020)
+#define WS_EX_MDICHILD __MSABI_LONG(0x00000040)
+#define WS_EX_TOOLWINDOW __MSABI_LONG(0x00000080)
+#define WS_EX_WINDOWEDGE __MSABI_LONG(0x00000100)
+#define WS_EX_CLIENTEDGE __MSABI_LONG(0x00000200)
+#define WS_EX_CONTEXTHELP __MSABI_LONG(0x00000400)
+#define WS_EX_RIGHT __MSABI_LONG(0x00001000)
+#define WS_EX_LEFT __MSABI_LONG(0x00000000)
+#define WS_EX_RTLREADING __MSABI_LONG(0x00002000)
+#define WS_EX_LTRREADING __MSABI_LONG(0x00000000)
+#define WS_EX_LEFTSCROLLBAR __MSABI_LONG(0x00004000)
+#define WS_EX_RIGHTSCROLLBAR __MSABI_LONG(0x00000000)
+#define WS_EX_CONTROLPARENT __MSABI_LONG(0x00010000)
+#define WS_EX_STATICEDGE __MSABI_LONG(0x00020000)
+#define WS_EX_APPWINDOW __MSABI_LONG(0x00040000)
+#define WS_EX_OVERLAPPEDWINDOW (WS_EX_WINDOWEDGE | WS_EX_CLIENTEDGE)
+#define WS_EX_PALETTEWINDOW (WS_EX_WINDOWEDGE | WS_EX_TOOLWINDOW | WS_EX_TOPMOST)
+#define WS_EX_LAYERED 0x00080000
+#define WS_EX_NOINHERITLAYOUT __MSABI_LONG(0x00100000)
+#define WS_EX_LAYOUTRTL __MSABI_LONG(0x00400000)
+#define WS_EX_COMPOSITED __MSABI_LONG(0x02000000)
+#define WS_EX_NOACTIVATE __MSABI_LONG(0x08000000)
+
+#define CS_VREDRAW 0x0001
+#define CS_HREDRAW 0x0002
+#define CS_DBLCLKS 0x0008
+#define CS_OWNDC 0x0020
+#define CS_CLASSDC 0x0040
+#define CS_PARENTDC 0x0080
+#define CS_NOCLOSE 0x0200
+#define CS_SAVEBITS 0x0800
+#define CS_BYTEALIGNCLIENT 0x1000
+#define CS_BYTEALIGNWINDOW 0x2000
+#define CS_GLOBALCLASS 0x4000
+#define CS_IME 0x00010000
+#define CS_DROPSHADOW 0x00020000
+#endif
+
+#define PRF_CHECKVISIBLE __MSABI_LONG(0x00000001)
+#define PRF_NONCLIENT __MSABI_LONG(0x00000002)
+#define PRF_CLIENT __MSABI_LONG(0x00000004)
+#define PRF_ERASEBKGND __MSABI_LONG(0x00000008)
+#define PRF_CHILDREN __MSABI_LONG(0x00000010)
+#define PRF_OWNED __MSABI_LONG(0x00000020)
+
+#define BDR_RAISEDOUTER 0x0001
+#define BDR_SUNKENOUTER 0x0002
+#define BDR_RAISEDINNER 0x0004
+#define BDR_SUNKENINNER 0x0008
+
+#define BDR_OUTER (BDR_RAISEDOUTER | BDR_SUNKENOUTER)
+#define BDR_INNER (BDR_RAISEDINNER | BDR_SUNKENINNER)
+#define BDR_RAISED (BDR_RAISEDOUTER | BDR_RAISEDINNER)
+#define BDR_SUNKEN (BDR_SUNKENOUTER | BDR_SUNKENINNER)
+
+#define EDGE_RAISED (BDR_RAISEDOUTER | BDR_RAISEDINNER)
+#define EDGE_SUNKEN (BDR_SUNKENOUTER | BDR_SUNKENINNER)
+#define EDGE_ETCHED (BDR_SUNKENOUTER | BDR_RAISEDINNER)
+#define EDGE_BUMP (BDR_RAISEDOUTER | BDR_SUNKENINNER)
+
+#define BF_LEFT 0x0001
+#define BF_TOP 0x0002
+#define BF_RIGHT 0x0004
+#define BF_BOTTOM 0x0008
+
+#define BF_TOPLEFT (BF_TOP | BF_LEFT)
+#define BF_TOPRIGHT (BF_TOP | BF_RIGHT)
+#define BF_BOTTOMLEFT (BF_BOTTOM | BF_LEFT)
+#define BF_BOTTOMRIGHT (BF_BOTTOM | BF_RIGHT)
+#define BF_RECT (BF_LEFT | BF_TOP | BF_RIGHT | BF_BOTTOM)
+
+#define BF_DIAGONAL 0x0010
+
+#define BF_DIAGONAL_ENDTOPRIGHT (BF_DIAGONAL | BF_TOP | BF_RIGHT)
+#define BF_DIAGONAL_ENDTOPLEFT (BF_DIAGONAL | BF_TOP | BF_LEFT)
+#define BF_DIAGONAL_ENDBOTTOMLEFT (BF_DIAGONAL | BF_BOTTOM | BF_LEFT)
+#define BF_DIAGONAL_ENDBOTTOMRIGHT (BF_DIAGONAL | BF_BOTTOM | BF_RIGHT)
+
+#define BF_MIDDLE 0x0800
+#define BF_SOFT 0x1000
+#define BF_ADJUST 0x2000
+#define BF_FLAT 0x4000
+#define BF_MONO 0x8000
+
+  WINUSERAPI WINBOOL WINAPI DrawEdge(HDC hdc,LPRECT qrc,UINT edge,UINT grfFlags);
+
+#define DFC_CAPTION 1
+#define DFC_MENU 2
+#define DFC_SCROLL 3
+#define DFC_BUTTON 4
+#define DFC_POPUPMENU 5
+
+#define DFCS_CAPTIONCLOSE 0x0000
+#define DFCS_CAPTIONMIN 0x0001
+#define DFCS_CAPTIONMAX 0x0002
+#define DFCS_CAPTIONRESTORE 0x0003
+#define DFCS_CAPTIONHELP 0x0004
+
+#define DFCS_MENUARROW 0x0000
+#define DFCS_MENUCHECK 0x0001
+#define DFCS_MENUBULLET 0x0002
+#define DFCS_MENUARROWRIGHT 0x0004
+#define DFCS_SCROLLUP 0x0000
+#define DFCS_SCROLLDOWN 0x0001
+#define DFCS_SCROLLLEFT 0x0002
+#define DFCS_SCROLLRIGHT 0x0003
+#define DFCS_SCROLLCOMBOBOX 0x0005
+#define DFCS_SCROLLSIZEGRIP 0x0008
+#define DFCS_SCROLLSIZEGRIPRIGHT 0x0010
+
+#define DFCS_BUTTONCHECK 0x0000
+#define DFCS_BUTTONRADIOIMAGE 0x0001
+#define DFCS_BUTTONRADIOMASK 0x0002
+#define DFCS_BUTTONRADIO 0x0004
+#define DFCS_BUTTON3STATE 0x0008
+#define DFCS_BUTTONPUSH 0x0010
+
+#define DFCS_INACTIVE 0x0100
+#define DFCS_PUSHED 0x0200
+#define DFCS_CHECKED 0x0400
+
+#define DFCS_TRANSPARENT 0x0800
+#define DFCS_HOT 0x1000
+
+#define DFCS_ADJUSTRECT 0x2000
+#define DFCS_FLAT 0x4000
+#define DFCS_MONO 0x8000
+
+  WINUSERAPI WINBOOL WINAPI DrawFrameControl(HDC,LPRECT,UINT,UINT);
+
+#define DC_ACTIVE 0x0001
+#define DC_SMALLCAP 0x0002
+#define DC_ICON 0x0004
+#define DC_TEXT 0x0008
+#define DC_INBUTTON 0x0010
+#define DC_GRADIENT 0x0020
+#define DC_BUTTONS 0x1000
+
+  WINUSERAPI WINBOOL WINAPI DrawCaption(HWND hwnd,HDC hdc,CONST RECT *lprect,UINT flags);
+
+#define IDANI_OPEN 1
+#define IDANI_CAPTION 3
+
+  WINUSERAPI WINBOOL WINAPI DrawAnimatedRects(HWND hwnd,int idAni,CONST RECT *lprcFrom,CONST RECT *lprcTo);
+
+#ifndef NOCLIPBOARD
+
+#define CF_TEXT 1
+#define CF_BITMAP 2
+#define CF_METAFILEPICT 3
+#define CF_SYLK 4
+#define CF_DIF 5
+#define CF_TIFF 6
+#define CF_OEMTEXT 7
+#define CF_DIB 8
+#define CF_PALETTE 9
+#define CF_PENDATA 10
+#define CF_RIFF 11
+#define CF_WAVE 12
+#define CF_UNICODETEXT 13
+#define CF_ENHMETAFILE 14
+#define CF_HDROP 15
+#define CF_LOCALE 16
+#define CF_DIBV5 17
+#define CF_MAX 18
+
+#define CF_OWNERDISPLAY 0x0080
+#define CF_DSPTEXT 0x0081
+#define CF_DSPBITMAP 0x0082
+#define CF_DSPMETAFILEPICT 0x0083
+#define CF_DSPENHMETAFILE 0x008E
+
+#define CF_PRIVATEFIRST 0x0200
+#define CF_PRIVATELAST 0x02FF
+
+#define CF_GDIOBJFIRST 0x0300
+#define CF_GDIOBJLAST 0x03FF
+#endif
+
+#define FVIRTKEY TRUE
+#define FNOINVERT 0x02
+#define FSHIFT 0x04
+#define FCONTROL 0x08
+#define FALT 0x10
+
+  typedef struct tagACCEL {
+    BYTE fVirt;
+    WORD key;
+    WORD cmd;
+  } ACCEL,*LPACCEL;
+
+  typedef struct tagPAINTSTRUCT {
+    HDC hdc;
+    WINBOOL fErase;
+    RECT rcPaint;
+    WINBOOL fRestore;
+    WINBOOL fIncUpdate;
+    BYTE rgbReserved[32];
+  } PAINTSTRUCT,*PPAINTSTRUCT,*NPPAINTSTRUCT,*LPPAINTSTRUCT;
+
+  typedef struct tagCREATESTRUCTA {
+    LPVOID lpCreateParams;
+    HINSTANCE hInstance;
+    HMENU hMenu;
+    HWND hwndParent;
+    int cy;
+    int cx;
+    int y;
+    int x;
+    LONG style;
+    LPCSTR lpszName;
+    LPCSTR lpszClass;
+    DWORD dwExStyle;
+  } CREATESTRUCTA,*LPCREATESTRUCTA;
+
+  typedef struct tagCREATESTRUCTW {
+    LPVOID lpCreateParams;
+    HINSTANCE hInstance;
+    HMENU hMenu;
+    HWND hwndParent;
+    int cy;
+    int cx;
+    int y;
+    int x;
+    LONG style;
+    LPCWSTR lpszName;
+    LPCWSTR lpszClass;
+    DWORD dwExStyle;
+  } CREATESTRUCTW,*LPCREATESTRUCTW;
+
+  __MINGW_TYPEDEF_AW(CREATESTRUCT)
+  __MINGW_TYPEDEF_AW(LPCREATESTRUCT)
+
+  typedef struct tagWINDOWPLACEMENT {
+    UINT length;
+    UINT flags;
+    UINT showCmd;
+    POINT ptMinPosition;
+    POINT ptMaxPosition;
+    RECT rcNormalPosition;
+  } WINDOWPLACEMENT;
+  typedef WINDOWPLACEMENT *PWINDOWPLACEMENT,*LPWINDOWPLACEMENT;
+
+#define WPF_SETMINPOSITION 0x0001
+#define WPF_RESTORETOMAXIMIZED 0x0002
+#define WPF_ASYNCWINDOWPLACEMENT 0x0004
+
+  typedef struct tagNMHDR {
+    HWND hwndFrom;
+    UINT_PTR idFrom;
+    UINT code;
+  } NMHDR;
+
+  typedef NMHDR *LPNMHDR;
+
+  typedef struct tagSTYLESTRUCT {
+    DWORD styleOld;
+    DWORD styleNew;
+  } STYLESTRUCT,*LPSTYLESTRUCT;
+
+#define ODT_MENU 1
+#define ODT_LISTBOX 2
+#define ODT_COMBOBOX 3
+#define ODT_BUTTON 4
+#define ODT_STATIC 5
+
+#define ODA_DRAWENTIRE 0x0001
+#define ODA_SELECT 0x0002
+#define ODA_FOCUS 0x0004
+
+#define ODS_SELECTED 0x0001
+#define ODS_GRAYED 0x0002
+#define ODS_DISABLED 0x0004
+#define ODS_CHECKED 0x0008
+#define ODS_FOCUS 0x0010
+#define ODS_DEFAULT 0x0020
+#define ODS_COMBOBOXEDIT 0x1000
+#define ODS_HOTLIGHT 0x0040
+#define ODS_INACTIVE 0x0080
+#define ODS_NOACCEL 0x0100
+#define ODS_NOFOCUSRECT 0x0200
+
+  typedef struct tagMEASUREITEMSTRUCT {
+    UINT CtlType;
+    UINT CtlID;
+    UINT itemID;
+    UINT itemWidth;
+    UINT itemHeight;
+    ULONG_PTR itemData;
+  } MEASUREITEMSTRUCT,*PMEASUREITEMSTRUCT,*LPMEASUREITEMSTRUCT;
+
+  typedef struct tagDRAWITEMSTRUCT {
+    UINT CtlType;
+    UINT CtlID;
+    UINT itemID;
+    UINT itemAction;
+    UINT itemState;
+    HWND hwndItem;
+    HDC hDC;
+    RECT rcItem;
+    ULONG_PTR itemData;
+  } DRAWITEMSTRUCT,*PDRAWITEMSTRUCT,*LPDRAWITEMSTRUCT;
+
+  typedef struct tagDELETEITEMSTRUCT {
+    UINT CtlType;
+    UINT CtlID;
+    UINT itemID;
+    HWND hwndItem;
+    ULONG_PTR itemData;
+  } DELETEITEMSTRUCT,*PDELETEITEMSTRUCT,*LPDELETEITEMSTRUCT;
+
+  typedef struct tagCOMPAREITEMSTRUCT {
+    UINT CtlType;
+    UINT CtlID;
+    HWND hwndItem;
+    UINT itemID1;
+    ULONG_PTR itemData1;
+    UINT itemID2;
+    ULONG_PTR itemData2;
+    DWORD dwLocaleId;
+  } COMPAREITEMSTRUCT,*PCOMPAREITEMSTRUCT,*LPCOMPAREITEMSTRUCT;
+
+#ifndef NOMSG
+#define GetMessage __MINGW_NAME_AW(GetMessage)
+#define DispatchMessage __MINGW_NAME_AW(DispatchMessage)
+#define PeekMessage __MINGW_NAME_AW(PeekMessage)
+
+  WINUSERAPI WINBOOL WINAPI GetMessageA(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax);
+  WINUSERAPI WINBOOL WINAPI GetMessageW(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax);
+  WINUSERAPI WINBOOL WINAPI TranslateMessage(CONST MSG *lpMsg);
+  WINUSERAPI LRESULT WINAPI DispatchMessageA(CONST MSG *lpMsg);
+  WINUSERAPI LRESULT WINAPI DispatchMessageW(CONST MSG *lpMsg);
+  WINUSERAPI WINBOOL WINAPI SetMessageQueue(int cMessagesMax);
+  WINUSERAPI WINBOOL WINAPI PeekMessageA(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg);
+  WINUSERAPI WINBOOL WINAPI PeekMessageW(LPMSG lpMsg,HWND hWnd,UINT wMsgFilterMin,UINT wMsgFilterMax,UINT wRemoveMsg);
+
+#define PM_NOREMOVE 0x0000
+#define PM_REMOVE 0x0001
+#define PM_NOYIELD 0x0002
+#define PM_QS_INPUT (QS_INPUT << 16)
+#define PM_QS_POSTMESSAGE ((QS_POSTMESSAGE | QS_HOTKEY | QS_TIMER) << 16)
+#define PM_QS_PAINT (QS_PAINT << 16)
+#define PM_QS_SENDMESSAGE (QS_SENDMESSAGE << 16)
+#endif
+
+  WINUSERAPI WINBOOL WINAPI RegisterHotKey(HWND hWnd,int id,UINT fsModifiers,UINT vk);
+  WINUSERAPI WINBOOL WINAPI UnregisterHotKey(HWND hWnd,int id);
+
+#define MOD_ALT 0x0001
+#define MOD_CONTROL 0x0002
+#define MOD_SHIFT 0x0004
+#define MOD_WIN 0x0008
+
+#define IDHOT_SNAPWINDOW (-1)
+#define IDHOT_SNAPDESKTOP (-2)
+
+#ifdef WIN_INTERNAL
+#ifndef LSTRING
+#define NOLSTRING
+#endif
+#ifndef LFILEIO
+#define NOLFILEIO
+#endif
+#endif
+
+#define ENDSESSION_LOGOFF 0x80000000
+
+#define EWX_LOGOFF 0
+#define EWX_SHUTDOWN 0x00000001
+#define EWX_REBOOT 0x00000002
+#define EWX_FORCE 0x00000004
+#define EWX_POWEROFF 0x00000008
+#define EWX_FORCEIFHUNG 0x00000010
+
+#define ExitWindows(dwReserved,Code) ExitWindowsEx(EWX_LOGOFF,0xFFFFFFFF)
+
+#define SendMessage __MINGW_NAME_AW(SendMessage)
+#define SendMessageTimeout __MINGW_NAME_AW(SendMessageTimeout)
+#define SendNotifyMessage __MINGW_NAME_AW(SendNotifyMessage)
+#define SendMessageCallback __MINGW_NAME_AW(SendMessageCallback)
+
+  WINUSERAPI WINBOOL WINAPI ExitWindowsEx(UINT uFlags,DWORD dwReason);
+  WINUSERAPI WINBOOL WINAPI SwapMouseButton(WINBOOL fSwap);
+  WINUSERAPI DWORD WINAPI GetMessagePos(VOID);
+  WINUSERAPI LONG WINAPI GetMessageTime(VOID);
+  WINUSERAPI LPARAM WINAPI GetMessageExtraInfo(VOID);
+  WINUSERAPI WINBOOL WINAPI IsWow64Message(VOID);
+  WINUSERAPI LPARAM WINAPI SetMessageExtraInfo(LPARAM lParam);
+  WINUSERAPI LRESULT WINAPI SendMessageA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI LRESULT WINAPI SendMessageW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI LRESULT WINAPI SendMessageTimeoutA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,UINT fuFlags,UINT uTimeout,PDWORD_PTR lpdwResult);
+  WINUSERAPI LRESULT WINAPI SendMessageTimeoutW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,UINT fuFlags,UINT uTimeout,PDWORD_PTR lpdwResult);
+  WINUSERAPI WINBOOL WINAPI SendNotifyMessageA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI WINBOOL WINAPI SendNotifyMessageW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI WINBOOL WINAPI SendMessageCallbackA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,SENDASYNCPROC lpResultCallBack,ULONG_PTR dwData);
+  WINUSERAPI WINBOOL WINAPI SendMessageCallbackW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam,SENDASYNCPROC lpResultCallBack,ULONG_PTR dwData);
+
+  typedef struct {
+    UINT cbSize;
+    HDESK hdesk;
+    HWND hwnd;
+    LUID luid;
+  } BSMINFO,*PBSMINFO;
+
+#define BroadcastSystemMessageEx __MINGW_NAME_AW(BroadcastSystemMessageEx)
+#define BroadcastSystemMessage __MINGW_NAME_AW(BroadcastSystemMessage)
+
+  WINUSERAPI long WINAPI BroadcastSystemMessageExA(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam,PBSMINFO pbsmInfo);
+  WINUSERAPI long WINAPI BroadcastSystemMessageExW(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam,PBSMINFO pbsmInfo);
+  WINUSERAPI long WINAPI BroadcastSystemMessageA(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI long WINAPI BroadcastSystemMessageW(DWORD flags,LPDWORD lpInfo,UINT Msg,WPARAM wParam,LPARAM lParam);
+
+#define BSM_ALLCOMPONENTS 0x00000000
+#define BSM_VXDS 0x00000001
+#define BSM_NETDRIVER 0x00000002
+#define BSM_INSTALLABLEDRIVERS 0x00000004
+#define BSM_APPLICATIONS 0x00000008
+#define BSM_ALLDESKTOPS 0x00000010
+
+#define BSF_QUERY 0x00000001
+#define BSF_IGNORECURRENTTASK 0x00000002
+#define BSF_FLUSHDISK 0x00000004
+#define BSF_NOHANG 0x00000008
+#define BSF_POSTMESSAGE 0x00000010
+#define BSF_FORCEIFHUNG 0x00000020
+#define BSF_NOTIMEOUTIFNOTHUNG 0x00000040
+#define BSF_ALLOWSFW 0x00000080
+#define BSF_SENDNOTIFYMESSAGE 0x00000100
+#define BSF_RETURNHDESK 0x00000200
+#define BSF_LUID 0x00000400
+
+#define BROADCAST_QUERY_DENY 0x424D5144
+
+  typedef PVOID HDEVNOTIFY;
+  typedef HDEVNOTIFY *PHDEVNOTIFY;
+
+#define DEVICE_NOTIFY_WINDOW_HANDLE 0x00000000
+#define DEVICE_NOTIFY_SERVICE_HANDLE 0x00000001
+#define DEVICE_NOTIFY_ALL_INTERFACE_CLASSES 0x00000004
+
+#define RegisterDeviceNotification __MINGW_NAME_AW(RegisterDeviceNotification)
+#define PostMessage __MINGW_NAME_AW(PostMessage)
+#define PostThreadMessage __MINGW_NAME_AW(PostThreadMessage)
+#define PostAppMessage __MINGW_NAME_AW(PostAppMessage)
+#define DefWindowProc __MINGW_NAME_AW(DefWindowProc)
+#define CallWindowProc __MINGW_NAME_AW(CallWindowProc)
+#define RegisterClass __MINGW_NAME_AW(RegisterClass)
+#define UnregisterClass __MINGW_NAME_AW(UnregisterClass)
+#define GetClassInfo __MINGW_NAME_AW(GetClassInfo)
+#define RegisterClassEx __MINGW_NAME_AW(RegisterClassEx)
+#define GetClassInfoEx __MINGW_NAME_AW(GetClassInfoEx)
+
+#if (_WIN32_WINNT >= 0x0502)
+  typedef HANDLE HPOWERNOTIFY;
+  typedef HPOWERNOTIFY *PHPOWERNOTIFY;
+
+  typedef struct {
+    GUID PowerSetting;
+    DWORD DataLength;
+    UCHAR Data[1];
+  } POWERBROADCAST_SETTING, *PPOWERBROADCAST_SETTING;
+
+  extern const GUID GUID_POWERSCHEME_PERSONALITY;
+  extern const GUID GUID_MIN_POWER_SAVINGS;
+  extern const GUID GUID_MAX_POWER_SAVINGS;
+  extern const GUID GUID_TYPICAL_POWER_SAVINGS;
+  extern const GUID GUID_ACDC_POWER_SOURCE;
+  extern const GUID GUID_BATTERY_PERCENTAGE_REMAINING;
+  extern const GUID GUID_IDLE_BACKGROUND_TASK;
+  extern const GUID GUID_SYSTEM_AWAYMODE;
+  extern const GUID GUID_MONITOR_POWER_ON;
+#endif
+
+  WINUSERAPI HDEVNOTIFY WINAPI RegisterDeviceNotificationA(HANDLE hRecipient,LPVOID NotificationFilter,DWORD Flags);
+  WINUSERAPI HDEVNOTIFY WINAPI RegisterDeviceNotificationW(HANDLE hRecipient,LPVOID NotificationFilter,DWORD Flags);
+#if (_WIN32_WINNT >= 0x0600)
+  WINUSERAPI HPOWERNOTIFY WINAPI RegisterPowerSettingNotification(HANDLE hRecipient,LPCGUID PowerSettingGuid,DWORD Flags);
+  WINUSERAPI WINBOOL WINAPI UnregisterPowerSettingNotification(HPOWERNOTIFY Handle);
+#endif
+  WINUSERAPI WINBOOL WINAPI UnregisterDeviceNotification(HDEVNOTIFY Handle);
+  WINUSERAPI WINBOOL WINAPI PostMessageA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI WINBOOL WINAPI PostMessageW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI WINBOOL WINAPI PostThreadMessageA(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI WINBOOL WINAPI PostThreadMessageW(DWORD idThread,UINT Msg,WPARAM wParam,LPARAM lParam);
+#define PostAppMessageA(idThread,wMsg,wParam,lParam) PostThreadMessageA((DWORD)idThread,wMsg,wParam,lParam)
+#define PostAppMessageW(idThread,wMsg,wParam,lParam) PostThreadMessageW((DWORD)idThread,wMsg,wParam,lParam)
+
+#define HWND_BROADCAST ((HWND)0xffff)
+#define HWND_MESSAGE ((HWND)-3)
+
+  WINUSERAPI WINBOOL WINAPI AttachThreadInput(DWORD idAttach,DWORD idAttachTo,WINBOOL fAttach);
+  WINUSERAPI WINBOOL WINAPI ReplyMessage(LRESULT lResult);
+  WINUSERAPI WINBOOL WINAPI WaitMessage(VOID);
+  WINUSERAPI DWORD WINAPI WaitForInputIdle(HANDLE hProcess,DWORD dwMilliseconds);
+  WINUSERAPI LRESULT WINAPI DefWindowProcA(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI LRESULT WINAPI DefWindowProcW(HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI VOID WINAPI PostQuitMessage(int nExitCode);
+  WINUSERAPI LRESULT WINAPI CallWindowProcA(WNDPROC lpPrevWndFunc,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI LRESULT WINAPI CallWindowProcW(WNDPROC lpPrevWndFunc,HWND hWnd,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI WINBOOL WINAPI InSendMessage(VOID);
+  WINUSERAPI DWORD WINAPI InSendMessageEx(LPVOID lpReserved);
+
+#define ISMEX_NOSEND 0x00000000
+#define ISMEX_SEND 0x00000001
+#define ISMEX_NOTIFY 0x00000002
+#define ISMEX_CALLBACK 0x00000004
+#define ISMEX_REPLIED 0x00000008
+
+  WINUSERAPI UINT WINAPI GetDoubleClickTime(VOID);
+  WINUSERAPI WINBOOL WINAPI SetDoubleClickTime(UINT);
+  WINUSERAPI ATOM WINAPI RegisterClassA(CONST WNDCLASSA *lpWndClass);
+  WINUSERAPI ATOM WINAPI RegisterClassW(CONST WNDCLASSW *lpWndClass);
+  WINUSERAPI WINBOOL WINAPI UnregisterClassA(LPCSTR lpClassName,HINSTANCE hInstance);
+  WINUSERAPI WINBOOL WINAPI UnregisterClassW(LPCWSTR lpClassName,HINSTANCE hInstance);
+  WINUSERAPI WINBOOL WINAPI GetClassInfoA(HINSTANCE hInstance,LPCSTR lpClassName,LPWNDCLASSA lpWndClass);
+  WINUSERAPI WINBOOL WINAPI GetClassInfoW(HINSTANCE hInstance,LPCWSTR lpClassName,LPWNDCLASSW lpWndClass);
+  WINUSERAPI ATOM WINAPI RegisterClassExA(CONST WNDCLASSEXA *);
+  WINUSERAPI ATOM WINAPI RegisterClassExW(CONST WNDCLASSEXW *);
+  WINUSERAPI WINBOOL WINAPI GetClassInfoExA(HINSTANCE hInstance,LPCSTR lpszClass,LPWNDCLASSEXA lpwcx);
+  WINUSERAPI WINBOOL WINAPI GetClassInfoExW(HINSTANCE hInstance,LPCWSTR lpszClass,LPWNDCLASSEXW lpwcx);
+
+#define CW_USEDEFAULT ((int)0x80000000)
+
+#define HWND_DESKTOP ((HWND)0)
+
+  typedef BOOLEAN (WINAPI *PREGISTERCLASSNAMEW)(LPCWSTR);
+
+#define CreateWindowEx __MINGW_NAME_AW(CreateWindowEx)
+#define CreateWindow __MINGW_NAME_AW(CreateWindow)
+
+  WINUSERAPI HWND WINAPI CreateWindowExA(DWORD dwExStyle,LPCSTR lpClassName,LPCSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam);
+  WINUSERAPI HWND WINAPI CreateWindowExW(DWORD dwExStyle,LPCWSTR lpClassName,LPCWSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HMENU hMenu,HINSTANCE hInstance,LPVOID lpParam);
+#define CreateWindowA(lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam) CreateWindowExA((DWORD)0,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam)
+#define CreateWindowW(lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam) CreateWindowExW((DWORD)0,lpClassName,lpWindowName,dwStyle,x,y,nWidth,nHeight,hWndParent,hMenu,hInstance,lpParam)
+  WINUSERAPI WINBOOL WINAPI IsWindow(HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI IsMenu(HMENU hMenu);
+  WINUSERAPI WINBOOL WINAPI IsChild(HWND hWndParent,HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI DestroyWindow(HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI ShowWindow(HWND hWnd,int nCmdShow);
+  WINUSERAPI WINBOOL WINAPI AnimateWindow(HWND hWnd,DWORD dwTime,DWORD dwFlags);
+
+#if defined(_WINGDI_) && !defined(NOGDI)
+  WINUSERAPI WINBOOL WINAPI UpdateLayeredWindow(HWND hWnd,HDC hdcDst,POINT *pptDst,SIZE *psize,HDC hdcSrc,POINT *pptSrc,COLORREF crKey,BLENDFUNCTION *pblend,DWORD dwFlags);
+
+  typedef struct tagUPDATELAYEREDWINDOWINFO {
+    DWORD cbSize;
+    HDC hdcDst;
+    POINT CONST *pptDst;
+    SIZE CONST *psize;
+    HDC hdcSrc;
+    POINT CONST *pptSrc;
+    COLORREF crKey;
+    BLENDFUNCTION CONST *pblend;
+    DWORD dwFlags;
+    RECT CONST *prcDirty;
+  } UPDATELAYEREDWINDOWINFO,*PUPDATELAYEREDWINDOWINFO;
+
+  WINUSERAPI WINBOOL WINAPI UpdateLayeredWindowIndirect(HWND hWnd,UPDATELAYEREDWINDOWINFO CONST *pULWInfo);
+  WINUSERAPI WINBOOL WINAPI GetLayeredWindowAttributes(HWND hwnd,COLORREF *pcrKey,BYTE *pbAlpha,DWORD *pdwFlags);
+
+#define PW_CLIENTONLY 0x00000001
+
+  WINUSERAPI WINBOOL WINAPI PrintWindow(HWND hwnd,HDC hdcBlt,UINT nFlags);
+  WINUSERAPI WINBOOL WINAPI SetLayeredWindowAttributes(HWND hwnd,COLORREF crKey,BYTE bAlpha,DWORD dwFlags);
+
+#define LWA_COLORKEY 0x00000001
+#define LWA_ALPHA 0x00000002
+
+#define ULW_COLORKEY 0x00000001
+#define ULW_ALPHA 0x00000002
+#define ULW_OPAQUE 0x00000004
+
+#define ULW_EX_NORESIZE 0x00000008
+
+  WINUSERAPI WINBOOL WINAPI ShowWindowAsync(HWND hWnd,int nCmdShow);
+  WINUSERAPI WINBOOL WINAPI FlashWindow(HWND hWnd,WINBOOL bInvert);
+
+  typedef struct {
+    UINT cbSize;
+    HWND hwnd;
+    DWORD dwFlags;
+    UINT uCount;
+    DWORD dwTimeout;
+  } FLASHWINFO,*PFLASHWINFO;
+
+  WINUSERAPI WINBOOL WINAPI FlashWindowEx(PFLASHWINFO pfwi);
+
+#define FLASHW_STOP 0
+#define FLASHW_CAPTION 0x00000001
+#define FLASHW_TRAY 0x00000002
+#define FLASHW_ALL (FLASHW_CAPTION | FLASHW_TRAY)
+#define FLASHW_TIMER 0x00000004
+#define FLASHW_TIMERNOFG 0x0000000C
+
+  WINUSERAPI WINBOOL WINAPI ShowOwnedPopups(HWND hWnd,WINBOOL fShow);
+  WINUSERAPI WINBOOL WINAPI OpenIcon(HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI CloseWindow(HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI MoveWindow(HWND hWnd,int X,int Y,int nWidth,int nHeight,WINBOOL bRepaint);
+  WINUSERAPI WINBOOL WINAPI SetWindowPos(HWND hWnd,HWND hWndInsertAfter,int X,int Y,int cx,int cy,UINT uFlags);
+  WINUSERAPI WINBOOL WINAPI GetWindowPlacement(HWND hWnd,WINDOWPLACEMENT *lpwndpl);
+  WINUSERAPI WINBOOL WINAPI SetWindowPlacement(HWND hWnd,CONST WINDOWPLACEMENT *lpwndpl);
+
+#ifndef NODEFERWINDOWPOS
+  WINUSERAPI HDWP WINAPI BeginDeferWindowPos(int nNumWindows);
+  WINUSERAPI HDWP WINAPI DeferWindowPos(HDWP hWinPosInfo,HWND hWnd,HWND hWndInsertAfter,int x,int y,int cx,int cy,UINT uFlags);
+  WINUSERAPI WINBOOL WINAPI EndDeferWindowPos(HDWP hWinPosInfo);
+#endif
+
+  WINUSERAPI WINBOOL WINAPI IsWindowVisible(HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI IsIconic(HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI AnyPopup(VOID);
+  WINUSERAPI WINBOOL WINAPI BringWindowToTop(HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI IsZoomed(HWND hWnd);
+
+#define SWP_NOSIZE 0x0001
+#define SWP_NOMOVE 0x0002
+#define SWP_NOZORDER 0x0004
+#define SWP_NOREDRAW 0x0008
+#define SWP_NOACTIVATE 0x0010
+#define SWP_FRAMECHANGED 0x0020
+#define SWP_SHOWWINDOW 0x0040
+#define SWP_HIDEWINDOW 0x0080
+#define SWP_NOCOPYBITS 0x0100
+#define SWP_NOOWNERZORDER 0x0200
+#define SWP_NOSENDCHANGING 0x0400
+
+#define SWP_DRAWFRAME SWP_FRAMECHANGED
+#define SWP_NOREPOSITION SWP_NOOWNERZORDER
+#define SWP_DEFERERASE 0x2000
+#define SWP_ASYNCWINDOWPOS 0x4000
+
+#define HWND_TOP ((HWND)0)
+#define HWND_BOTTOM ((HWND)1)
+#define HWND_TOPMOST ((HWND)-1)
+#define HWND_NOTOPMOST ((HWND)-2)
+
+#ifndef NOCTLMGR
+
+#include <pshpack2.h>
+
+  typedef struct {
+    DWORD style;
+    DWORD dwExtendedStyle;
+    WORD cdit;
+    short x;
+    short y;
+    short cx;
+    short cy;
+  } DLGTEMPLATE;
+
+  typedef DLGTEMPLATE *LPDLGTEMPLATEA;
+  typedef DLGTEMPLATE *LPDLGTEMPLATEW;
+
+  __MINGW_TYPEDEF_AW(LPDLGTEMPLATE)
+
+  typedef CONST DLGTEMPLATE *LPCDLGTEMPLATEA;
+  typedef CONST DLGTEMPLATE *LPCDLGTEMPLATEW;
+
+  __MINGW_TYPEDEF_AW(LPCDLGTEMPLATE)
+
+  typedef struct {
+    DWORD style;
+    DWORD dwExtendedStyle;
+    short x;
+    short y;
+    short cx;
+    short cy;
+    WORD id;
+  } DLGITEMTEMPLATE;
+
+  typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEA;
+  typedef DLGITEMTEMPLATE *PDLGITEMTEMPLATEW;
+
+  __MINGW_TYPEDEF_AW(PDLGITEMTEMPLATE)
+
+  typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEA;
+  typedef DLGITEMTEMPLATE *LPDLGITEMTEMPLATEW;
+
+  __MINGW_TYPEDEF_AW(LPDLGITEMTEMPLATE)
+
+#include <poppack.h>
+
+#define CreateDialogParam __MINGW_NAME_AW(CreateDialogParam)
+#define CreateDialogIndirectParam __MINGW_NAME_AW(CreateDialogIndirectParam)
+#define CreateDialog __MINGW_NAME_AW(CreateDialog)
+#define CreateDialogIndirect __MINGW_NAME_AW(CreateDialogIndirect)
+#define DialogBoxParam __MINGW_NAME_AW(DialogBoxParam)
+#define DialogBoxIndirectParam __MINGW_NAME_AW(DialogBoxIndirectParam)
+#define DialogBox __MINGW_NAME_AW(DialogBox)
+#define DialogBoxIndirect __MINGW_NAME_AW(DialogBoxIndirect)
+#define SetDlgItemText __MINGW_NAME_AW(SetDlgItemText)
+#define GetDlgItemText __MINGW_NAME_AW(GetDlgItemText)
+#define SendDlgItemMessage __MINGW_NAME_AW(SendDlgItemMessage)
+#define DefDlgProc __MINGW_NAME_AW(DefDlgProc)
+
+  WINUSERAPI HWND WINAPI CreateDialogParamA(HINSTANCE hInstance,LPCSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
+  WINUSERAPI HWND WINAPI CreateDialogParamW(HINSTANCE hInstance,LPCWSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
+  WINUSERAPI HWND WINAPI CreateDialogIndirectParamA(HINSTANCE hInstance,LPCDLGTEMPLATEA lpTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
+  WINUSERAPI HWND WINAPI CreateDialogIndirectParamW(HINSTANCE hInstance,LPCDLGTEMPLATEW lpTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
+#define CreateDialogA(hInstance,lpName,hWndParent,lpDialogFunc) CreateDialogParamA(hInstance,lpName,hWndParent,lpDialogFunc,(LPARAM)0)
+#define CreateDialogW(hInstance,lpName,hWndParent,lpDialogFunc) CreateDialogParamW(hInstance,lpName,hWndParent,lpDialogFunc,(LPARAM)0)
+#define CreateDialogIndirectA(hInstance,lpTemplate,hWndParent,lpDialogFunc) CreateDialogIndirectParamA(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0)
+#define CreateDialogIndirectW(hInstance,lpTemplate,hWndParent,lpDialogFunc) CreateDialogIndirectParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0)
+  WINUSERAPI INT_PTR WINAPI DialogBoxParamA(HINSTANCE hInstance,LPCSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
+  WINUSERAPI INT_PTR WINAPI DialogBoxParamW(HINSTANCE hInstance,LPCWSTR lpTemplateName,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
+  WINUSERAPI INT_PTR WINAPI DialogBoxIndirectParamA(HINSTANCE hInstance,LPCDLGTEMPLATEA hDialogTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
+  WINUSERAPI INT_PTR WINAPI DialogBoxIndirectParamW(HINSTANCE hInstance,LPCDLGTEMPLATEW hDialogTemplate,HWND hWndParent,DLGPROC lpDialogFunc,LPARAM dwInitParam);
+#define DialogBoxA(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxParamA(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0)
+#define DialogBoxW(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0)
+#define DialogBoxIndirectA(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxIndirectParamA(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0)
+#define DialogBoxIndirectW(hInstance,lpTemplate,hWndParent,lpDialogFunc) DialogBoxIndirectParamW(hInstance,lpTemplate,hWndParent,lpDialogFunc,(LPARAM)0)
+  WINUSERAPI WINBOOL WINAPI EndDialog(HWND hDlg,INT_PTR nResult);
+  WINUSERAPI HWND WINAPI GetDlgItem(HWND hDlg,int nIDDlgItem);
+  WINUSERAPI WINBOOL WINAPI SetDlgItemInt(HWND hDlg,int nIDDlgItem,UINT uValue,WINBOOL bSigned);
+  WINUSERAPI UINT WINAPI GetDlgItemInt(HWND hDlg,int nIDDlgItem,WINBOOL *lpTranslated,WINBOOL bSigned);
+  WINUSERAPI WINBOOL WINAPI SetDlgItemTextA(HWND hDlg,int nIDDlgItem,LPCSTR lpString);
+  WINUSERAPI WINBOOL WINAPI SetDlgItemTextW(HWND hDlg,int nIDDlgItem,LPCWSTR lpString);
+  WINUSERAPI UINT WINAPI GetDlgItemTextA(HWND hDlg,int nIDDlgItem,LPSTR lpString,int cchMax);
+  WINUSERAPI UINT WINAPI GetDlgItemTextW(HWND hDlg,int nIDDlgItem,LPWSTR lpString,int cchMax);
+  WINUSERAPI WINBOOL WINAPI CheckDlgButton(HWND hDlg,int nIDButton,UINT uCheck);
+  WINUSERAPI WINBOOL WINAPI CheckRadioButton(HWND hDlg,int nIDFirstButton,int nIDLastButton,int nIDCheckButton);
+  WINUSERAPI UINT WINAPI IsDlgButtonChecked(HWND hDlg,int nIDButton);
+  WINUSERAPI LRESULT WINAPI SendDlgItemMessageA(HWND hDlg,int nIDDlgItem,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI LRESULT WINAPI SendDlgItemMessageW(HWND hDlg,int nIDDlgItem,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI HWND WINAPI GetNextDlgGroupItem(HWND hDlg,HWND hCtl,WINBOOL bPrevious);
+  WINUSERAPI HWND WINAPI GetNextDlgTabItem(HWND hDlg,HWND hCtl,WINBOOL bPrevious);
+  WINUSERAPI int WINAPI GetDlgCtrlID(HWND hWnd);
+  WINUSERAPI long WINAPI GetDialogBaseUnits(VOID);
+  WINUSERAPI LRESULT WINAPI DefDlgProcA(HWND hDlg,UINT Msg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI LRESULT WINAPI DefDlgProcW(HWND hDlg,UINT Msg,WPARAM wParam,LPARAM lParam);
+
+#define DLGWINDOWEXTRA 30
+#endif
+
+#ifndef NOMSG
+
+#define CallMsgFilter __MINGW_NAME_AW(CallMsgFilter)
+
+  WINUSERAPI WINBOOL WINAPI CallMsgFilterA(LPMSG lpMsg,int nCode);
+  WINUSERAPI WINBOOL WINAPI CallMsgFilterW(LPMSG lpMsg,int nCode);
+#endif
+
+#ifndef NOCLIPBOARD
+
+#define RegisterClipboardFormat __MINGW_NAME_AW(RegisterClipboardFormat)
+#define GetClipboardFormatName __MINGW_NAME_AW(GetClipboardFormatName)
+
+  WINUSERAPI WINBOOL WINAPI OpenClipboard(HWND hWndNewOwner);
+  WINUSERAPI WINBOOL WINAPI CloseClipboard(VOID);
+  WINUSERAPI DWORD WINAPI GetClipboardSequenceNumber(VOID);
+  WINUSERAPI HWND WINAPI GetClipboardOwner(VOID);
+  WINUSERAPI HWND WINAPI SetClipboardViewer(HWND hWndNewViewer);
+  WINUSERAPI HWND WINAPI GetClipboardViewer(VOID);
+  WINUSERAPI WINBOOL WINAPI ChangeClipboardChain(HWND hWndRemove,HWND hWndNewNext);
+  WINUSERAPI HANDLE WINAPI SetClipboardData(UINT uFormat,HANDLE hMem);
+  WINUSERAPI HANDLE WINAPI GetClipboardData(UINT uFormat);
+  WINUSERAPI UINT WINAPI RegisterClipboardFormatA(LPCSTR lpszFormat);
+  WINUSERAPI UINT WINAPI RegisterClipboardFormatW(LPCWSTR lpszFormat);
+  WINUSERAPI int WINAPI CountClipboardFormats(VOID);
+  WINUSERAPI UINT WINAPI EnumClipboardFormats(UINT format);
+  WINUSERAPI int WINAPI GetClipboardFormatNameA(UINT format,LPSTR lpszFormatName,int cchMaxCount);
+  WINUSERAPI int WINAPI GetClipboardFormatNameW(UINT format,LPWSTR lpszFormatName,int cchMaxCount);
+  WINUSERAPI WINBOOL WINAPI EmptyClipboard(VOID);
+  WINUSERAPI WINBOOL WINAPI IsClipboardFormatAvailable(UINT format);
+  WINUSERAPI int WINAPI GetPriorityClipboardFormat(UINT *paFormatPriorityList,int cFormats);
+  WINUSERAPI HWND WINAPI GetOpenClipboardWindow(VOID);
+#endif
+
+#define CharToOem __MINGW_NAME_AW(CharToOem)
+#define OemToChar __MINGW_NAME_AW(OemToChar)
+#define CharToOemBuff __MINGW_NAME_AW(CharToOemBuff)
+#define OemToCharBuff __MINGW_NAME_AW(OemToCharBuff)
+#define CharUpper __MINGW_NAME_AW(CharUpper)
+#define CharUpperBuff __MINGW_NAME_AW(CharUpperBuff)
+#define CharLower __MINGW_NAME_AW(CharLower)
+#define CharLowerBuff __MINGW_NAME_AW(CharLowerBuff)
+#define CharNext __MINGW_NAME_AW(CharNext)
+#define CharPrev __MINGW_NAME_AW(CharPrev)
+
+  WINUSERAPI WINBOOL WINAPI CharToOemA(LPCSTR lpszSrc,LPSTR lpszDst);
+  WINUSERAPI WINBOOL WINAPI CharToOemW(LPCWSTR lpszSrc,LPSTR lpszDst);
+  WINUSERAPI WINBOOL WINAPI OemToCharA(LPCSTR lpszSrc,LPSTR lpszDst);
+  WINUSERAPI WINBOOL WINAPI OemToCharW(LPCSTR lpszSrc,LPWSTR lpszDst);
+  WINUSERAPI WINBOOL WINAPI CharToOemBuffA(LPCSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength);
+  WINUSERAPI WINBOOL WINAPI CharToOemBuffW(LPCWSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength);
+  WINUSERAPI WINBOOL WINAPI OemToCharBuffA(LPCSTR lpszSrc,LPSTR lpszDst,DWORD cchDstLength);
+  WINUSERAPI WINBOOL WINAPI OemToCharBuffW(LPCSTR lpszSrc,LPWSTR lpszDst,DWORD cchDstLength);
+  WINUSERAPI LPSTR WINAPI CharUpperA(LPSTR lpsz);
+  WINUSERAPI LPWSTR WINAPI CharUpperW(LPWSTR lpsz);
+  WINUSERAPI DWORD WINAPI CharUpperBuffA(LPSTR lpsz,DWORD cchLength);
+  WINUSERAPI DWORD WINAPI CharUpperBuffW(LPWSTR lpsz,DWORD cchLength);
+  WINUSERAPI LPSTR WINAPI CharLowerA(LPSTR lpsz);
+  WINUSERAPI LPWSTR WINAPI CharLowerW(LPWSTR lpsz);
+  WINUSERAPI DWORD WINAPI CharLowerBuffA(LPSTR lpsz,DWORD cchLength);
+  WINUSERAPI DWORD WINAPI CharLowerBuffW(LPWSTR lpsz,DWORD cchLength);
+  WINUSERAPI LPSTR WINAPI CharNextA(LPCSTR lpsz);
+  WINUSERAPI LPWSTR WINAPI CharNextW(LPCWSTR lpsz);
+  WINUSERAPI LPSTR WINAPI CharPrevA(LPCSTR lpszStart,LPCSTR lpszCurrent);
+  WINUSERAPI LPWSTR WINAPI CharPrevW(LPCWSTR lpszStart,LPCWSTR lpszCurrent);
+  WINUSERAPI LPSTR WINAPI CharNextExA(WORD CodePage,LPCSTR lpCurrentChar,DWORD dwFlags);
+  WINUSERAPI LPSTR WINAPI CharPrevExA(WORD CodePage,LPCSTR lpStart,LPCSTR lpCurrentChar,DWORD dwFlags);
+
+#define AnsiToOem CharToOemA
+#define OemToAnsi OemToCharA
+#define AnsiToOemBuff CharToOemBuffA
+#define OemToAnsiBuff OemToCharBuffA
+#define AnsiUpper CharUpperA
+#define AnsiUpperBuff CharUpperBuffA
+#define AnsiLower CharLowerA
+#define AnsiLowerBuff CharLowerBuffA
+#define AnsiNext CharNextA
+#define AnsiPrev CharPrevA
+
+#ifndef NOLANGUAGE
+
+#define IsCharAlpha __MINGW_NAME_AW(IsCharAlpha)
+#define IsCharAlphaNumeric __MINGW_NAME_AW(IsCharAlphaNumeric)
+#define IsCharUpper __MINGW_NAME_AW(IsCharUpper)
+#define IsCharLower __MINGW_NAME_AW(IsCharLower)
+
+  WINUSERAPI WINBOOL WINAPI IsCharAlphaA(CHAR ch);
+  WINUSERAPI WINBOOL WINAPI IsCharAlphaW(WCHAR ch);
+  WINUSERAPI WINBOOL WINAPI IsCharAlphaNumericA(CHAR ch);
+  WINUSERAPI WINBOOL WINAPI IsCharAlphaNumericW(WCHAR ch);
+  WINUSERAPI WINBOOL WINAPI IsCharUpperA(CHAR ch);
+  WINUSERAPI WINBOOL WINAPI IsCharUpperW(WCHAR ch);
+  WINUSERAPI WINBOOL WINAPI IsCharLowerA(CHAR ch);
+  WINUSERAPI WINBOOL WINAPI IsCharLowerW(WCHAR ch);
+#endif
+
+#define GetKeyNameText __MINGW_NAME_AW(GetKeyNameText)
+#define VkKeyScan __MINGW_NAME_AW(VkKeyScan)
+#define VkKeyScanEx __MINGW_NAME_AW(VkKeyScanEx)
+
+  WINUSERAPI HWND WINAPI SetFocus(HWND hWnd);
+  WINUSERAPI HWND WINAPI GetActiveWindow(VOID);
+  WINUSERAPI HWND WINAPI GetFocus(VOID);
+  WINUSERAPI UINT WINAPI GetKBCodePage(VOID);
+  WINUSERAPI SHORT WINAPI GetKeyState(int nVirtKey);
+  WINUSERAPI SHORT WINAPI GetAsyncKeyState(int vKey);
+  WINUSERAPI WINBOOL WINAPI GetKeyboardState(PBYTE lpKeyState);
+  WINUSERAPI WINBOOL WINAPI SetKeyboardState(LPBYTE lpKeyState);
+  WINUSERAPI int WINAPI GetKeyNameTextA(LONG lParam,LPSTR lpString,int cchSize);
+  WINUSERAPI int WINAPI GetKeyNameTextW(LONG lParam,LPWSTR lpString,int cchSize);
+  WINUSERAPI int WINAPI GetKeyboardType(int nTypeFlag);
+  WINUSERAPI int WINAPI ToAscii(UINT uVirtKey,UINT uScanCode,CONST BYTE *lpKeyState,LPWORD lpChar,UINT uFlags);
+  WINUSERAPI int WINAPI ToAsciiEx(UINT uVirtKey,UINT uScanCode,CONST BYTE *lpKeyState,LPWORD lpChar,UINT uFlags,HKL dwhkl);
+  WINUSERAPI int WINAPI ToUnicode(UINT wVirtKey,UINT wScanCode,CONST BYTE *lpKeyState,LPWSTR pwszBuff,int cchBuff,UINT wFlags);
+  WINUSERAPI DWORD WINAPI OemKeyScan(WORD wOemChar);
+  WINUSERAPI SHORT WINAPI VkKeyScanA(CHAR ch);
+  WINUSERAPI SHORT WINAPI VkKeyScanW(WCHAR ch);
+  WINUSERAPI SHORT WINAPI VkKeyScanExA(CHAR ch,HKL dwhkl);
+  WINUSERAPI SHORT WINAPI VkKeyScanExW(WCHAR ch,HKL dwhkl);
+
+#define KEYEVENTF_EXTENDEDKEY 0x0001
+#define KEYEVENTF_KEYUP 0x0002
+#define KEYEVENTF_UNICODE 0x0004
+#define KEYEVENTF_SCANCODE 0x0008
+
+  WINUSERAPI VOID WINAPI keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,ULONG_PTR dwExtraInfo);
+
+#define MOUSEEVENTF_MOVE 0x0001
+#define MOUSEEVENTF_LEFTDOWN 0x0002
+#define MOUSEEVENTF_LEFTUP 0x0004
+#define MOUSEEVENTF_RIGHTDOWN 0x0008
+#define MOUSEEVENTF_RIGHTUP 0x0010
+#define MOUSEEVENTF_MIDDLEDOWN 0x0020
+#define MOUSEEVENTF_MIDDLEUP 0x0040
+#define MOUSEEVENTF_XDOWN 0x0080
+#define MOUSEEVENTF_XUP 0x0100
+#define MOUSEEVENTF_WHEEL 0x0800
+#define MOUSEEVENTF_VIRTUALDESK 0x4000
+#define MOUSEEVENTF_ABSOLUTE 0x8000
+
+  WINUSERAPI VOID WINAPI mouse_event(DWORD dwFlags,DWORD dx,DWORD dy,DWORD dwData,ULONG_PTR dwExtraInfo);
+
+  typedef struct tagMOUSEINPUT {
+    LONG dx;
+    LONG dy;
+    DWORD mouseData;
+    DWORD dwFlags;
+    DWORD time;
+    ULONG_PTR dwExtraInfo;
+  } MOUSEINPUT,*PMOUSEINPUT,*LPMOUSEINPUT;
+
+  typedef struct tagKEYBDINPUT {
+    WORD wVk;
+    WORD wScan;
+    DWORD dwFlags;
+    DWORD time;
+    ULONG_PTR dwExtraInfo;
+  } KEYBDINPUT,*PKEYBDINPUT,*LPKEYBDINPUT;
+
+  typedef struct tagHARDWAREINPUT {
+    DWORD uMsg;
+    WORD wParamL;
+    WORD wParamH;
+  } HARDWAREINPUT,*PHARDWAREINPUT,*LPHARDWAREINPUT;
+
+#define INPUT_MOUSE 0
+#define INPUT_KEYBOARD 1
+#define INPUT_HARDWARE 2
+
+  typedef struct tagINPUT {
+    DWORD type;
+    __C89_NAMELESS union {
+      MOUSEINPUT mi;
+      KEYBDINPUT ki;
+      HARDWAREINPUT hi;
+    } DUMMYUNIONNAME;
+  } INPUT,*PINPUT,*LPINPUT;
+
+  WINUSERAPI UINT WINAPI SendInput(UINT cInputs,LPINPUT pInputs,int cbSize);
+
+  typedef struct tagLASTINPUTINFO {
+    UINT cbSize;
+    DWORD dwTime;
+  } LASTINPUTINFO,*PLASTINPUTINFO;
+
+#define MapVirtualKey __MINGW_NAME_AW(MapVirtualKey)
+#define MapVirtualKeyEx __MINGW_NAME_AW(MapVirtualKeyEx)
+
+  WINUSERAPI WINBOOL WINAPI GetLastInputInfo(PLASTINPUTINFO plii);
+  WINUSERAPI UINT WINAPI MapVirtualKeyA(UINT uCode,UINT uMapType);
+  WINUSERAPI UINT WINAPI MapVirtualKeyW(UINT uCode,UINT uMapType);
+  WINUSERAPI UINT WINAPI MapVirtualKeyExA(UINT uCode,UINT uMapType,HKL dwhkl);
+  WINUSERAPI UINT WINAPI MapVirtualKeyExW(UINT uCode,UINT uMapType,HKL dwhkl);
+  WINUSERAPI WINBOOL WINAPI GetInputState(VOID);
+  WINUSERAPI DWORD WINAPI GetQueueStatus(UINT flags);
+  WINUSERAPI HWND WINAPI GetCapture(VOID);
+  WINUSERAPI HWND WINAPI SetCapture(HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI ReleaseCapture(VOID);
+  WINUSERAPI DWORD WINAPI MsgWaitForMultipleObjects(DWORD nCount,CONST HANDLE *pHandles,WINBOOL fWaitAll,DWORD dwMilliseconds,DWORD dwWakeMask);
+  WINUSERAPI DWORD WINAPI MsgWaitForMultipleObjectsEx(DWORD nCount,CONST HANDLE *pHandles,DWORD dwMilliseconds,DWORD dwWakeMask,DWORD dwFlags);
+
+#define MWMO_WAITALL 0x0001
+#define MWMO_ALERTABLE 0x0002
+#define MWMO_INPUTAVAILABLE 0x0004
+
+#define QS_KEY 0x0001
+#define QS_MOUSEMOVE 0x0002
+#define QS_MOUSEBUTTON 0x0004
+#define QS_POSTMESSAGE 0x0008
+#define QS_TIMER 0x0010
+#define QS_PAINT 0x0020
+#define QS_SENDMESSAGE 0x0040
+#define QS_HOTKEY 0x0080
+#define QS_ALLPOSTMESSAGE 0x0100
+#define QS_RAWINPUT 0x0400
+#define QS_MOUSE (QS_MOUSEMOVE | QS_MOUSEBUTTON)
+#define QS_INPUT (QS_MOUSE | QS_KEY | QS_RAWINPUT)
+#define QS_ALLEVENTS (QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY)
+#define QS_ALLINPUT (QS_INPUT | QS_POSTMESSAGE | QS_TIMER | QS_PAINT | QS_HOTKEY | QS_SENDMESSAGE)
+
+#define USER_TIMER_MAXIMUM 0x7FFFFFFF
+#define USER_TIMER_MINIMUM 0x0000000A
+
+#define LoadAccelerators __MINGW_NAME_AW(LoadAccelerators)
+#define CreateAcceleratorTable __MINGW_NAME_AW(CreateAcceleratorTable)
+#define CopyAcceleratorTable __MINGW_NAME_AW(CopyAcceleratorTable)
+
+  WINUSERAPI UINT_PTR WINAPI SetTimer(HWND hWnd,UINT_PTR nIDEvent,UINT uElapse,TIMERPROC lpTimerFunc);
+  WINUSERAPI WINBOOL WINAPI KillTimer(HWND hWnd,UINT_PTR uIDEvent);
+  WINUSERAPI WINBOOL WINAPI IsWindowUnicode(HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI EnableWindow(HWND hWnd,WINBOOL bEnable);
+  WINUSERAPI WINBOOL WINAPI IsWindowEnabled(HWND hWnd);
+  WINUSERAPI HACCEL WINAPI LoadAcceleratorsA(HINSTANCE hInstance,LPCSTR lpTableName);
+  WINUSERAPI HACCEL WINAPI LoadAcceleratorsW(HINSTANCE hInstance,LPCWSTR lpTableName);
+  WINUSERAPI HACCEL WINAPI CreateAcceleratorTableA(LPACCEL paccel,int cAccel);
+  WINUSERAPI HACCEL WINAPI CreateAcceleratorTableW(LPACCEL paccel,int cAccel);
+  WINUSERAPI WINBOOL WINAPI DestroyAcceleratorTable(HACCEL hAccel);
+  WINUSERAPI int WINAPI CopyAcceleratorTableA(HACCEL hAccelSrc,LPACCEL lpAccelDst,int cAccelEntries);
+  WINUSERAPI int WINAPI CopyAcceleratorTableW(HACCEL hAccelSrc,LPACCEL lpAccelDst,int cAccelEntries);
+
+#ifndef NOMSG
+
+#define TranslateAccelerator __MINGW_NAME_AW(TranslateAccelerator)
+
+  WINUSERAPI int WINAPI TranslateAcceleratorA(HWND hWnd,HACCEL hAccTable,LPMSG lpMsg);
+  WINUSERAPI int WINAPI TranslateAcceleratorW(HWND hWnd,HACCEL hAccTable,LPMSG lpMsg);
+#endif
+
+#ifndef NOSYSMETRICS
+
+#define SM_CXSCREEN 0
+#define SM_CYSCREEN 1
+#define SM_CXVSCROLL 2
+#define SM_CYHSCROLL 3
+#define SM_CYCAPTION 4
+#define SM_CXBORDER 5
+#define SM_CYBORDER 6
+#define SM_CXDLGFRAME 7
+#define SM_CYDLGFRAME 8
+#define SM_CYVTHUMB 9
+#define SM_CXHTHUMB 10
+#define SM_CXICON 11
+#define SM_CYICON 12
+#define SM_CXCURSOR 13
+#define SM_CYCURSOR 14
+#define SM_CYMENU 15
+#define SM_CXFULLSCREEN 16
+#define SM_CYFULLSCREEN 17
+#define SM_CYKANJIWINDOW 18
+#define SM_MOUSEPRESENT 19
+#define SM_CYVSCROLL 20
+#define SM_CXHSCROLL 21
+#define SM_DEBUG 22
+#define SM_SWAPBUTTON 23
+#define SM_RESERVED1 24
+#define SM_RESERVED2 25
+#define SM_RESERVED3 26
+#define SM_RESERVED4 27
+#define SM_CXMIN 28
+#define SM_CYMIN 29
+#define SM_CXSIZE 30
+#define SM_CYSIZE 31
+#define SM_CXFRAME 32
+#define SM_CYFRAME 33
+#define SM_CXMINTRACK 34
+#define SM_CYMINTRACK 35
+#define SM_CXDOUBLECLK 36
+#define SM_CYDOUBLECLK 37
+#define SM_CXICONSPACING 38
+#define SM_CYICONSPACING 39
+#define SM_MENUDROPALIGNMENT 40
+#define SM_PENWINDOWS 41
+#define SM_DBCSENABLED 42
+#define SM_CMOUSEBUTTONS 43
+
+#define SM_CXFIXEDFRAME SM_CXDLGFRAME
+#define SM_CYFIXEDFRAME SM_CYDLGFRAME
+#define SM_CXSIZEFRAME SM_CXFRAME
+#define SM_CYSIZEFRAME SM_CYFRAME
+
+#define SM_SECURE 44
+#define SM_CXEDGE 45
+#define SM_CYEDGE 46
+#define SM_CXMINSPACING 47
+#define SM_CYMINSPACING 48
+#define SM_CXSMICON 49
+#define SM_CYSMICON 50
+#define SM_CYSMCAPTION 51
+#define SM_CXSMSIZE 52
+#define SM_CYSMSIZE 53
+#define SM_CXMENUSIZE 54
+#define SM_CYMENUSIZE 55
+#define SM_ARRANGE 56
+#define SM_CXMINIMIZED 57
+#define SM_CYMINIMIZED 58
+#define SM_CXMAXTRACK 59
+#define SM_CYMAXTRACK 60
+#define SM_CXMAXIMIZED 61
+#define SM_CYMAXIMIZED 62
+#define SM_NETWORK 63
+#define SM_CLEANBOOT 67
+#define SM_CXDRAG 68
+#define SM_CYDRAG 69
+#define SM_SHOWSOUNDS 70
+#define SM_CXMENUCHECK 71
+#define SM_CYMENUCHECK 72
+#define SM_SLOWMACHINE 73
+#define SM_MIDEASTENABLED 74
+#define SM_MOUSEWHEELPRESENT 75
+#define SM_XVIRTUALSCREEN 76
+#define SM_YVIRTUALSCREEN 77
+#define SM_CXVIRTUALSCREEN 78
+#define SM_CYVIRTUALSCREEN 79
+#define SM_CMONITORS 80
+#define SM_SAMEDISPLAYFORMAT 81
+#define SM_IMMENABLED 82
+#define SM_CXFOCUSBORDER 83
+#define SM_CYFOCUSBORDER 84
+#define SM_TABLETPC 86
+#define SM_MEDIACENTER 87
+#define SM_STARTER 88
+#define SM_SERVERR2 89
+
+#if (_WIN32_WINNT < 0x0600)
+#define SM_CMETRICS 90
+#endif
+
+#define SM_REMOTESESSION 0x1000
+#define SM_SHUTTINGDOWN 0x2000
+#define SM_REMOTECONTROL 0x2001
+#define SM_CARETBLINKINGENABLED 0x2002
+
+#if (_WIN32_WINNT >= 0x0600)
+#define SM_MOUSEHORIZONTALWHEELPRESENT 91
+#define SM_CXPADDEDBORDER 92
+# if (_WIN32_WINNT < 0x0601)
+# define SM_CMETRICS 93
+# endif
+#endif
+
+#if (_WIN32_WINNT >= 0x0601)
+#define SM_DIGITIZER 94
+#define SM_MAXIMUMTOUCHES 95
+/**/
+# define SM_CMETRICS 96
+#endif
+
+#if (_WIN32_WINNT >= 0x0601)
+/* flags for SM_DIGITIZER: */
+#define NID_INTEGRATED_TOUCH	0x01
+#define NID_EXTERNAL_TOUCH	0x02
+#define NID_INTEGRATED_PEN	0x04
+#define NID_EXTERNAL_PEN	0x08
+#define NID_MULTI_INPUT		0x40
+#define NID_READY		0x80
+#endif
+
+  WINUSERAPI int WINAPI GetSystemMetrics(int nIndex);
+#endif
+
+#ifndef NOMENUS
+
+#define LoadMenu __MINGW_NAME_AW(LoadMenu)
+#define LoadMenuIndirect __MINGW_NAME_AW(LoadMenuIndirect)
+#define ChangeMenu __MINGW_NAME_AW(ChangeMenu)
+#define GetMenuString __MINGW_NAME_AW(GetMenuString)
+#define InsertMenu __MINGW_NAME_AW(InsertMenu)
+#define AppendMenu __MINGW_NAME_AW(AppendMenu)
+#define ModifyMenu __MINGW_NAME_AW(ModifyMenu)
+
+  WINUSERAPI HMENU WINAPI LoadMenuA(HINSTANCE hInstance,LPCSTR lpMenuName);
+  WINUSERAPI HMENU WINAPI LoadMenuW(HINSTANCE hInstance,LPCWSTR lpMenuName);
+  WINUSERAPI HMENU WINAPI LoadMenuIndirectA(CONST MENUTEMPLATEA *lpMenuTemplate);
+  WINUSERAPI HMENU WINAPI LoadMenuIndirectW(CONST MENUTEMPLATEW *lpMenuTemplate);
+  WINUSERAPI HMENU WINAPI GetMenu(HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI SetMenu(HWND hWnd,HMENU hMenu);
+  WINUSERAPI WINBOOL WINAPI ChangeMenuA(HMENU hMenu,UINT cmd,LPCSTR lpszNewItem,UINT cmdInsert,UINT flags);
+  WINUSERAPI WINBOOL WINAPI ChangeMenuW(HMENU hMenu,UINT cmd,LPCWSTR lpszNewItem,UINT cmdInsert,UINT flags);
+  WINUSERAPI WINBOOL WINAPI HiliteMenuItem(HWND hWnd,HMENU hMenu,UINT uIDHiliteItem,UINT uHilite);
+  WINUSERAPI int WINAPI GetMenuStringA(HMENU hMenu,UINT uIDItem,LPSTR lpString,int cchMax,UINT flags);
+  WINUSERAPI int WINAPI GetMenuStringW(HMENU hMenu,UINT uIDItem,LPWSTR lpString,int cchMax,UINT flags);
+  WINUSERAPI UINT WINAPI GetMenuState(HMENU hMenu,UINT uId,UINT uFlags);
+  WINUSERAPI WINBOOL WINAPI DrawMenuBar(HWND hWnd);
+
+#define PMB_ACTIVE 0x00000001
+
+  WINUSERAPI HMENU WINAPI GetSystemMenu(HWND hWnd,WINBOOL bRevert);
+  WINUSERAPI HMENU WINAPI CreateMenu(VOID);
+  WINUSERAPI HMENU WINAPI CreatePopupMenu(VOID);
+  WINUSERAPI WINBOOL WINAPI DestroyMenu(HMENU hMenu);
+  WINUSERAPI DWORD WINAPI CheckMenuItem(HMENU hMenu,UINT uIDCheckItem,UINT uCheck);
+  WINUSERAPI WINBOOL WINAPI EnableMenuItem(HMENU hMenu,UINT uIDEnableItem,UINT uEnable);
+  WINUSERAPI HMENU WINAPI GetSubMenu(HMENU hMenu,int nPos);
+  WINUSERAPI UINT WINAPI GetMenuItemID(HMENU hMenu,int nPos);
+  WINUSERAPI int WINAPI GetMenuItemCount(HMENU hMenu);
+  WINUSERAPI WINBOOL WINAPI InsertMenuA(HMENU hMenu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCSTR lpNewItem);
+  WINUSERAPI WINBOOL WINAPI InsertMenuW(HMENU hMenu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCWSTR lpNewItem);
+  WINUSERAPI WINBOOL WINAPI AppendMenuA(HMENU hMenu,UINT uFlags,UINT_PTR uIDNewItem,LPCSTR lpNewItem);
+  WINUSERAPI WINBOOL WINAPI AppendMenuW(HMENU hMenu,UINT uFlags,UINT_PTR uIDNewItem,LPCWSTR lpNewItem);
+  WINUSERAPI WINBOOL WINAPI ModifyMenuA(HMENU hMnu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCSTR lpNewItem);
+  WINUSERAPI WINBOOL WINAPI ModifyMenuW(HMENU hMnu,UINT uPosition,UINT uFlags,UINT_PTR uIDNewItem,LPCWSTR lpNewItem);
+  WINUSERAPI WINBOOL WINAPI RemoveMenu(HMENU hMenu,UINT uPosition,UINT uFlags);
+  WINUSERAPI WINBOOL WINAPI DeleteMenu(HMENU hMenu,UINT uPosition,UINT uFlags);
+  WINUSERAPI WINBOOL WINAPI SetMenuItemBitmaps(HMENU hMenu,UINT uPosition,UINT uFlags,HBITMAP hBitmapUnchecked,HBITMAP hBitmapChecked);
+  WINUSERAPI LONG WINAPI GetMenuCheckMarkDimensions(VOID);
+  WINUSERAPI WINBOOL WINAPI TrackPopupMenu(HMENU hMenu,UINT uFlags,int x,int y,int nReserved,HWND hWnd,CONST RECT *prcRect);
+
+#define MNC_IGNORE 0
+#define MNC_CLOSE 1
+#define MNC_EXECUTE 2
+#define MNC_SELECT 3
+
+  typedef struct tagTPMPARAMS {
+    UINT cbSize;
+    RECT rcExclude;
+  } TPMPARAMS;
+
+  typedef TPMPARAMS *LPTPMPARAMS;
+
+  WINUSERAPI WINBOOL WINAPI TrackPopupMenuEx(HMENU,UINT,int,int,HWND,LPTPMPARAMS);
+
+#define MNS_NOCHECK 0x80000000
+#define MNS_MODELESS 0x40000000
+#define MNS_DRAGDROP 0x20000000
+#define MNS_AUTODISMISS 0x10000000
+#define MNS_NOTIFYBYPOS 0x08000000
+#define MNS_CHECKORBMP 0x04000000
+
+#define MIM_MAXHEIGHT 0x00000001
+#define MIM_BACKGROUND 0x00000002
+#define MIM_HELPID 0x00000004
+#define MIM_MENUDATA 0x00000008
+#define MIM_STYLE 0x00000010
+#define MIM_APPLYTOSUBMENUS 0x80000000
+
+  typedef struct tagMENUINFO {
+    DWORD cbSize;
+    DWORD fMask;
+    DWORD dwStyle;
+    UINT cyMax;
+    HBRUSH hbrBack;
+    DWORD dwContextHelpID;
+    ULONG_PTR dwMenuData;
+  } MENUINFO,*LPMENUINFO;
+
+  typedef MENUINFO CONST *LPCMENUINFO;
+
+  WINUSERAPI WINBOOL WINAPI GetMenuInfo(HMENU,LPMENUINFO);
+  WINUSERAPI WINBOOL WINAPI SetMenuInfo(HMENU,LPCMENUINFO);
+  WINUSERAPI WINBOOL WINAPI EndMenu(VOID);
+
+#define MND_CONTINUE 0
+#define MND_ENDMENU 1
+
+  typedef struct tagMENUGETOBJECTINFO {
+    DWORD dwFlags;
+    UINT uPos;
+    HMENU hmenu;
+    PVOID riid;
+    PVOID pvObj;
+  } MENUGETOBJECTINFO,*PMENUGETOBJECTINFO;
+
+#define MNGOF_TOPGAP 0x00000001
+#define MNGOF_BOTTOMGAP 0x00000002
+
+#define MNGO_NOINTERFACE 0x00000000
+#define MNGO_NOERROR 0x00000001
+
+#define MIIM_STATE 0x00000001
+#define MIIM_ID 0x00000002
+#define MIIM_SUBMENU 0x00000004
+#define MIIM_CHECKMARKS 0x00000008
+#define MIIM_TYPE 0x00000010
+#define MIIM_DATA 0x00000020
+
+#define MIIM_STRING 0x00000040
+#define MIIM_BITMAP 0x00000080
+#define MIIM_FTYPE 0x00000100
+
+#define HBMMENU_CALLBACK ((HBITMAP) -1)
+#define HBMMENU_SYSTEM ((HBITMAP) 1)
+#define HBMMENU_MBAR_RESTORE ((HBITMAP) 2)
+#define HBMMENU_MBAR_MINIMIZE ((HBITMAP) 3)
+#define HBMMENU_MBAR_CLOSE ((HBITMAP) 5)
+#define HBMMENU_MBAR_CLOSE_D ((HBITMAP) 6)
+#define HBMMENU_MBAR_MINIMIZE_D ((HBITMAP) 7)
+#define HBMMENU_POPUP_CLOSE ((HBITMAP) 8)
+#define HBMMENU_POPUP_RESTORE ((HBITMAP) 9)
+#define HBMMENU_POPUP_MAXIMIZE ((HBITMAP) 10)
+#define HBMMENU_POPUP_MINIMIZE ((HBITMAP) 11)
+
+  typedef struct tagMENUITEMINFOA {
+    UINT cbSize;
+    UINT fMask;
+    UINT fType;
+    UINT fState;
+    UINT wID;
+    HMENU hSubMenu;
+    HBITMAP hbmpChecked;
+    HBITMAP hbmpUnchecked;
+    ULONG_PTR dwItemData;
+    LPSTR dwTypeData;
+    UINT cch;
+    HBITMAP hbmpItem;
+  } MENUITEMINFOA,*LPMENUITEMINFOA;
+
+  typedef struct tagMENUITEMINFOW {
+    UINT cbSize;
+    UINT fMask;
+    UINT fType;
+    UINT fState;
+    UINT wID;
+    HMENU hSubMenu;
+    HBITMAP hbmpChecked;
+    HBITMAP hbmpUnchecked;
+    ULONG_PTR dwItemData;
+    LPWSTR dwTypeData;
+    UINT cch;
+    HBITMAP hbmpItem;
+  } MENUITEMINFOW,*LPMENUITEMINFOW;
+
+  __MINGW_TYPEDEF_AW(MENUITEMINFO)
+  __MINGW_TYPEDEF_AW(LPMENUITEMINFO)
+
+  typedef MENUITEMINFOA CONST *LPCMENUITEMINFOA;
+  typedef MENUITEMINFOW CONST *LPCMENUITEMINFOW;
+
+  __MINGW_TYPEDEF_AW(LPCMENUITEMINFO)
+
+#define InsertMenuItem __MINGW_NAME_AW(InsertMenuItem)
+#define GetMenuItemInfo __MINGW_NAME_AW(GetMenuItemInfo)
+#define SetMenuItemInfo __MINGW_NAME_AW(SetMenuItemInfo)
+
+  WINUSERAPI WINBOOL WINAPI InsertMenuItemA(HMENU hmenu,UINT item,WINBOOL fByPosition,LPCMENUITEMINFOA lpmi);
+  WINUSERAPI WINBOOL WINAPI InsertMenuItemW(HMENU hmenu,UINT item,WINBOOL fByPosition,LPCMENUITEMINFOW lpmi);
+  WINUSERAPI WINBOOL WINAPI GetMenuItemInfoA(HMENU hmenu,UINT item,WINBOOL fByPosition,LPMENUITEMINFOA lpmii);
+  WINUSERAPI WINBOOL WINAPI GetMenuItemInfoW(HMENU hmenu,UINT item,WINBOOL fByPosition,LPMENUITEMINFOW lpmii);
+  WINUSERAPI WINBOOL WINAPI SetMenuItemInfoA(HMENU hmenu,UINT item,WINBOOL fByPositon,LPCMENUITEMINFOA lpmii);
+  WINUSERAPI WINBOOL WINAPI SetMenuItemInfoW(HMENU hmenu,UINT item,WINBOOL fByPositon,LPCMENUITEMINFOW lpmii);
+
+#define GMDI_USEDISABLED __MSABI_LONG(0x0001)
+#define GMDI_GOINTOPOPUPS __MSABI_LONG(0x0002)
+
+  WINUSERAPI UINT WINAPI GetMenuDefaultItem(HMENU hMenu,UINT fByPos,UINT gmdiFlags);
+  WINUSERAPI WINBOOL WINAPI SetMenuDefaultItem(HMENU hMenu,UINT uItem,UINT fByPos);
+  WINUSERAPI WINBOOL WINAPI GetMenuItemRect(HWND hWnd,HMENU hMenu,UINT uItem,LPRECT lprcItem);
+  WINUSERAPI int WINAPI MenuItemFromPoint(HWND hWnd,HMENU hMenu,POINT ptScreen);
+
+#define TPM_LEFTBUTTON __MSABI_LONG(0x0000)
+#define TPM_RIGHTBUTTON __MSABI_LONG(0x0002)
+#define TPM_LEFTALIGN __MSABI_LONG(0x0000)
+#define TPM_CENTERALIGN __MSABI_LONG(0x0004)
+#define TPM_RIGHTALIGN __MSABI_LONG(0x0008)
+#define TPM_TOPALIGN __MSABI_LONG(0x0000)
+#define TPM_VCENTERALIGN __MSABI_LONG(0x0010)
+#define TPM_BOTTOMALIGN __MSABI_LONG(0x0020)
+
+#define TPM_HORIZONTAL __MSABI_LONG(0x0000)
+#define TPM_VERTICAL __MSABI_LONG(0x0040)
+#define TPM_NONOTIFY __MSABI_LONG(0x0080)
+#define TPM_RETURNCMD __MSABI_LONG(0x0100)
+#define TPM_RECURSE __MSABI_LONG(0x0001)
+#define TPM_HORPOSANIMATION __MSABI_LONG(0x0400)
+#define TPM_HORNEGANIMATION __MSABI_LONG(0x0800)
+#define TPM_VERPOSANIMATION __MSABI_LONG(0x1000)
+#define TPM_VERNEGANIMATION __MSABI_LONG(0x2000)
+#define TPM_NOANIMATION __MSABI_LONG(0x4000)
+#define TPM_LAYOUTRTL __MSABI_LONG(0x8000)
+#endif
+
+  typedef struct tagDROPSTRUCT {
+    HWND hwndSource;
+    HWND hwndSink;
+    DWORD wFmt;
+    ULONG_PTR dwData;
+    POINT ptDrop;
+    DWORD dwControlData;
+  } DROPSTRUCT,*PDROPSTRUCT,*LPDROPSTRUCT;
+
+#define DOF_EXECUTABLE 0x8001
+#define DOF_DOCUMENT 0x8002
+#define DOF_DIRECTORY 0x8003
+#define DOF_MULTIPLE 0x8004
+#define DOF_PROGMAN 0x0001
+#define DOF_SHELLDATA 0x0002
+
+#define DO_DROPFILE __MSABI_LONG(0x454C4946)
+#define DO_PRINTFILE __MSABI_LONG(0x544E5250)
+
+  WINUSERAPI DWORD WINAPI DragObject(HWND hwndParent,HWND hwndFrom,UINT fmt,ULONG_PTR data,HCURSOR hcur);
+  WINUSERAPI WINBOOL WINAPI DragDetect(HWND hwnd,POINT pt);
+  WINUSERAPI WINBOOL WINAPI DrawIcon(HDC hDC,int X,int Y,HICON hIcon);
+
+#ifndef NODRAWTEXT
+
+#define DT_TOP 0x00000000
+#define DT_LEFT 0x00000000
+#define DT_CENTER 0x00000001
+#define DT_RIGHT 0x00000002
+#define DT_VCENTER 0x00000004
+#define DT_BOTTOM 0x00000008
+#define DT_WORDBREAK 0x00000010
+#define DT_SINGLELINE 0x00000020
+#define DT_EXPANDTABS 0x00000040
+#define DT_TABSTOP 0x00000080
+#define DT_NOCLIP 0x00000100
+#define DT_EXTERNALLEADING 0x00000200
+#define DT_CALCRECT 0x00000400
+#define DT_NOPREFIX 0x00000800
+#define DT_INTERNAL 0x00001000
+
+#define DT_EDITCONTROL 0x00002000
+#define DT_PATH_ELLIPSIS 0x00004000
+#define DT_END_ELLIPSIS 0x00008000
+#define DT_MODIFYSTRING 0x00010000
+#define DT_RTLREADING 0x00020000
+#define DT_WORD_ELLIPSIS 0x00040000
+#define DT_NOFULLWIDTHCHARBREAK 0x00080000
+#define DT_HIDEPREFIX 0x00100000
+#define DT_PREFIXONLY 0x00200000
+
+  typedef struct tagDRAWTEXTPARAMS {
+    UINT cbSize;
+    int iTabLength;
+    int iLeftMargin;
+    int iRightMargin;
+    UINT uiLengthDrawn;
+  } DRAWTEXTPARAMS,*LPDRAWTEXTPARAMS;
+
+#define DrawText __MINGW_NAME_AW(DrawText)
+#define DrawTextEx __MINGW_NAME_AW(DrawTextEx)
+
+  WINUSERAPI int WINAPI DrawTextA(HDC hdc,LPCSTR lpchText,int cchText,LPRECT lprc,UINT format);
+  WINUSERAPI int WINAPI DrawTextW(HDC hdc,LPCWSTR lpchText,int cchText,LPRECT lprc,UINT format);
+  WINUSERAPI int WINAPI DrawTextExA(HDC hdc,LPSTR lpchText,int cchText,LPRECT lprc,UINT format,LPDRAWTEXTPARAMS lpdtp);
+  WINUSERAPI int WINAPI DrawTextExW(HDC hdc,LPWSTR lpchText,int cchText,LPRECT lprc,UINT format,LPDRAWTEXTPARAMS lpdtp);
+#endif
+
+#define GrayString __MINGW_NAME_AW(GrayString)
+#define DrawState __MINGW_NAME_AW(DrawState)
+#define TabbedTextOut __MINGW_NAME_AW(TabbedTextOut)
+#define GetTabbedTextExtent __MINGW_NAME_AW(GetTabbedTextExtent)
+
+  WINUSERAPI WINBOOL WINAPI GrayStringA(HDC hDC,HBRUSH hBrush,GRAYSTRINGPROC lpOutputFunc,LPARAM lpData,int nCount,int X,int Y,int nWidth,int nHeight);
+  WINUSERAPI WINBOOL WINAPI GrayStringW(HDC hDC,HBRUSH hBrush,GRAYSTRINGPROC lpOutputFunc,LPARAM lpData,int nCount,int X,int Y,int nWidth,int nHeight);
+
+#define DST_COMPLEX 0x0000
+#define DST_TEXT 0x0001
+#define DST_PREFIXTEXT 0x0002
+#define DST_ICON 0x0003
+#define DST_BITMAP 0x0004
+
+#define DSS_NORMAL 0x0000
+#define DSS_UNION 0x0010
+#define DSS_DISABLED 0x0020
+#define DSS_MONO 0x0080
+#define DSS_HIDEPREFIX 0x0200
+#define DSS_PREFIXONLY 0x0400
+#define DSS_RIGHT 0x8000
+
+  WINUSERAPI WINBOOL WINAPI DrawStateA(HDC hdc,HBRUSH hbrFore,DRAWSTATEPROC qfnCallBack,LPARAM lData,WPARAM wData,int x,int y,int cx,int cy,UINT uFlags);
+  WINUSERAPI WINBOOL WINAPI DrawStateW(HDC hdc,HBRUSH hbrFore,DRAWSTATEPROC qfnCallBack,LPARAM lData,WPARAM wData,int x,int y,int cx,int cy,UINT uFlags);
+  WINUSERAPI LONG WINAPI TabbedTextOutA(HDC hdc,int x,int y,LPCSTR lpString,int chCount,int nTabPositions,CONST INT *lpnTabStopPositions,int nTabOrigin);
+  WINUSERAPI LONG WINAPI TabbedTextOutW(HDC hdc,int x,int y,LPCWSTR lpString,int chCount,int nTabPositions,CONST INT *lpnTabStopPositions,int nTabOrigin);
+  WINUSERAPI DWORD WINAPI GetTabbedTextExtentA(HDC hdc,LPCSTR lpString,int chCount,int nTabPositions,CONST INT *lpnTabStopPositions);
+  WINUSERAPI DWORD WINAPI GetTabbedTextExtentW(HDC hdc,LPCWSTR lpString,int chCount,int nTabPositions,CONST INT *lpnTabStopPositions);
+  WINUSERAPI WINBOOL WINAPI UpdateWindow(HWND hWnd);
+  WINUSERAPI HWND WINAPI SetActiveWindow(HWND hWnd);
+  WINUSERAPI HWND WINAPI GetForegroundWindow(VOID);
+  WINUSERAPI WINBOOL WINAPI PaintDesktop(HDC hdc);
+  WINUSERAPI VOID WINAPI SwitchToThisWindow(HWND hwnd,WINBOOL fUnknown);
+  WINUSERAPI WINBOOL WINAPI SetForegroundWindow(HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI AllowSetForegroundWindow(DWORD dwProcessId);
+
+#define ASFW_ANY ((DWORD)-1)
+
+  WINUSERAPI WINBOOL WINAPI LockSetForegroundWindow(UINT uLockCode);
+
+#define LSFW_LOCK 1
+#define LSFW_UNLOCK 2
+
+  WINUSERAPI HWND WINAPI WindowFromDC(HDC hDC);
+  WINUSERAPI HDC WINAPI GetDC(HWND hWnd);
+  WINUSERAPI HDC WINAPI GetDCEx(HWND hWnd,HRGN hrgnClip,DWORD flags);
+
+#define DCX_WINDOW __MSABI_LONG(0x00000001)
+#define DCX_CACHE __MSABI_LONG(0x00000002)
+#define DCX_NORESETATTRS __MSABI_LONG(0x00000004)
+#define DCX_CLIPCHILDREN __MSABI_LONG(0x00000008)
+#define DCX_CLIPSIBLINGS __MSABI_LONG(0x00000010)
+#define DCX_PARENTCLIP __MSABI_LONG(0x00000020)
+#define DCX_EXCLUDERGN __MSABI_LONG(0x00000040)
+#define DCX_INTERSECTRGN __MSABI_LONG(0x00000080)
+#define DCX_EXCLUDEUPDATE __MSABI_LONG(0x00000100)
+#define DCX_INTERSECTUPDATE __MSABI_LONG(0x00000200)
+#define DCX_LOCKWINDOWUPDATE __MSABI_LONG(0x00000400)
+
+#define DCX_VALIDATE __MSABI_LONG(0x00200000)
+
+  WINUSERAPI HDC WINAPI GetWindowDC(HWND hWnd);
+  WINUSERAPI int WINAPI ReleaseDC(HWND hWnd,HDC hDC);
+  WINUSERAPI HDC WINAPI BeginPaint(HWND hWnd,LPPAINTSTRUCT lpPaint);
+  WINUSERAPI WINBOOL WINAPI EndPaint(HWND hWnd,CONST PAINTSTRUCT *lpPaint);
+  WINUSERAPI WINBOOL WINAPI GetUpdateRect(HWND hWnd,LPRECT lpRect,WINBOOL bErase);
+  WINUSERAPI int WINAPI GetUpdateRgn(HWND hWnd,HRGN hRgn,WINBOOL bErase);
+  WINUSERAPI int WINAPI SetWindowRgn(HWND hWnd,HRGN hRgn,WINBOOL bRedraw);
+  WINUSERAPI int WINAPI GetWindowRgn(HWND hWnd,HRGN hRgn);
+  WINUSERAPI int WINAPI GetWindowRgnBox(HWND hWnd,LPRECT lprc);
+  WINUSERAPI int WINAPI ExcludeUpdateRgn(HDC hDC,HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI InvalidateRect(HWND hWnd,CONST RECT *lpRect,WINBOOL bErase);
+  WINUSERAPI WINBOOL WINAPI ValidateRect(HWND hWnd,CONST RECT *lpRect);
+  WINUSERAPI WINBOOL WINAPI InvalidateRgn(HWND hWnd,HRGN hRgn,WINBOOL bErase);
+  WINUSERAPI WINBOOL WINAPI ValidateRgn(HWND hWnd,HRGN hRgn);
+  WINUSERAPI WINBOOL WINAPI RedrawWindow(HWND hWnd,CONST RECT *lprcUpdate,HRGN hrgnUpdate,UINT flags);
+
+#define RDW_INVALIDATE 0x0001
+#define RDW_INTERNALPAINT 0x0002
+#define RDW_ERASE 0x0004
+
+#define RDW_VALIDATE 0x0008
+#define RDW_NOINTERNALPAINT 0x0010
+#define RDW_NOERASE 0x0020
+
+#define RDW_NOCHILDREN 0x0040
+#define RDW_ALLCHILDREN 0x0080
+
+#define RDW_UPDATENOW 0x0100
+#define RDW_ERASENOW 0x0200
+
+#define RDW_FRAME 0x0400
+#define RDW_NOFRAME 0x0800
+
+  WINUSERAPI WINBOOL WINAPI LockWindowUpdate(HWND hWndLock);
+  WINUSERAPI WINBOOL WINAPI ScrollWindow(HWND hWnd,int XAmount,int YAmount,CONST RECT *lpRect,CONST RECT *lpClipRect);
+  WINUSERAPI WINBOOL WINAPI ScrollDC(HDC hDC,int dx,int dy,CONST RECT *lprcScroll,CONST RECT *lprcClip,HRGN hrgnUpdate,LPRECT lprcUpdate);
+  WINUSERAPI int WINAPI ScrollWindowEx(HWND hWnd,int dx,int dy,CONST RECT *prcScroll,CONST RECT *prcClip,HRGN hrgnUpdate,LPRECT prcUpdate,UINT flags);
+
+#define SW_SCROLLCHILDREN 0x0001
+#define SW_INVALIDATE 0x0002
+#define SW_ERASE 0x0004
+#define SW_SMOOTHSCROLL 0x0010
+
+#ifndef NOSCROLL
+  WINUSERAPI int WINAPI SetScrollPos(HWND hWnd,int nBar,int nPos,WINBOOL bRedraw);
+  WINUSERAPI int WINAPI GetScrollPos(HWND hWnd,int nBar);
+  WINUSERAPI WINBOOL WINAPI SetScrollRange(HWND hWnd,int nBar,int nMinPos,int nMaxPos,WINBOOL bRedraw);
+  WINUSERAPI WINBOOL WINAPI GetScrollRange(HWND hWnd,int nBar,LPINT lpMinPos,LPINT lpMaxPos);
+  WINUSERAPI WINBOOL WINAPI ShowScrollBar(HWND hWnd,int wBar,WINBOOL bShow);
+  WINUSERAPI WINBOOL WINAPI EnableScrollBar(HWND hWnd,UINT wSBflags,UINT wArrows);
+
+#define ESB_ENABLE_BOTH 0x0000
+#define ESB_DISABLE_BOTH 0x0003
+
+#define ESB_DISABLE_LEFT 0x0001
+#define ESB_DISABLE_RIGHT 0x0002
+
+#define ESB_DISABLE_UP 0x0001
+#define ESB_DISABLE_DOWN 0x0002
+
+#define ESB_DISABLE_LTUP ESB_DISABLE_LEFT
+#define ESB_DISABLE_RTDN ESB_DISABLE_RIGHT
+#endif
+
+#define SetProp __MINGW_NAME_AW(SetProp)
+#define GetProp __MINGW_NAME_AW(GetProp)
+#define RemoveProp __MINGW_NAME_AW(RemoveProp)
+#define EnumPropsEx __MINGW_NAME_AW(EnumPropsEx)
+#define EnumProps __MINGW_NAME_AW(EnumProps)
+#define SetWindowText __MINGW_NAME_AW(SetWindowText)
+#define GetWindowText __MINGW_NAME_AW(GetWindowText)
+#define GetWindowTextLength __MINGW_NAME_AW(GetWindowTextLength)
+
+  WINUSERAPI WINBOOL WINAPI SetPropA(HWND hWnd,LPCSTR lpString,HANDLE hData);
+  WINUSERAPI WINBOOL WINAPI SetPropW(HWND hWnd,LPCWSTR lpString,HANDLE hData);
+  WINUSERAPI HANDLE WINAPI GetPropA(HWND hWnd,LPCSTR lpString);
+  WINUSERAPI HANDLE WINAPI GetPropW(HWND hWnd,LPCWSTR lpString);
+  WINUSERAPI HANDLE WINAPI RemovePropA(HWND hWnd,LPCSTR lpString);
+  WINUSERAPI HANDLE WINAPI RemovePropW(HWND hWnd,LPCWSTR lpString);
+  WINUSERAPI int WINAPI EnumPropsExA(HWND hWnd,PROPENUMPROCEXA lpEnumFunc,LPARAM lParam);
+  WINUSERAPI int WINAPI EnumPropsExW(HWND hWnd,PROPENUMPROCEXW lpEnumFunc,LPARAM lParam);
+  WINUSERAPI int WINAPI EnumPropsA(HWND hWnd,PROPENUMPROCA lpEnumFunc);
+  WINUSERAPI int WINAPI EnumPropsW(HWND hWnd,PROPENUMPROCW lpEnumFunc);
+  WINUSERAPI WINBOOL WINAPI SetWindowTextA(HWND hWnd,LPCSTR lpString);
+  WINUSERAPI WINBOOL WINAPI SetWindowTextW(HWND hWnd,LPCWSTR lpString);
+  WINUSERAPI int WINAPI GetWindowTextA(HWND hWnd,LPSTR lpString,int nMaxCount);
+  WINUSERAPI int WINAPI GetWindowTextW(HWND hWnd,LPWSTR lpString,int nMaxCount);
+  WINUSERAPI int WINAPI GetWindowTextLengthA(HWND hWnd);
+  WINUSERAPI int WINAPI GetWindowTextLengthW(HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI GetClientRect(HWND hWnd,LPRECT lpRect);
+  WINUSERAPI WINBOOL WINAPI GetWindowRect(HWND hWnd,LPRECT lpRect);
+  WINUSERAPI WINBOOL WINAPI AdjustWindowRect(LPRECT lpRect,DWORD dwStyle,WINBOOL bMenu);
+  WINUSERAPI WINBOOL WINAPI AdjustWindowRectEx(LPRECT lpRect,DWORD dwStyle,WINBOOL bMenu,DWORD dwExStyle);
+
+#define HELPINFO_WINDOW 0x0001
+#define HELPINFO_MENUITEM 0x0002
+
+  typedef struct tagHELPINFO {
+    UINT cbSize;
+    int iContextType;
+    int iCtrlId;
+    HANDLE hItemHandle;
+    DWORD_PTR dwContextId;
+    POINT MousePos;
+  } HELPINFO,*LPHELPINFO;
+
+  WINUSERAPI WINBOOL WINAPI SetWindowContextHelpId(HWND,DWORD);
+  WINUSERAPI DWORD WINAPI GetWindowContextHelpId(HWND);
+  WINUSERAPI WINBOOL WINAPI SetMenuContextHelpId(HMENU,DWORD);
+  WINUSERAPI DWORD WINAPI GetMenuContextHelpId(HMENU);
+
+#ifndef NOMB
+
+#define MB_OK __MSABI_LONG(0x00000000)
+#define MB_OKCANCEL __MSABI_LONG(0x00000001)
+#define MB_ABORTRETRYIGNORE __MSABI_LONG(0x00000002)
+#define MB_YESNOCANCEL __MSABI_LONG(0x00000003)
+#define MB_YESNO __MSABI_LONG(0x00000004)
+#define MB_RETRYCANCEL __MSABI_LONG(0x00000005)
+#define MB_CANCELTRYCONTINUE __MSABI_LONG(0x00000006)
+#define MB_ICONHAND __MSABI_LONG(0x00000010)
+#define MB_ICONQUESTION __MSABI_LONG(0x00000020)
+#define MB_ICONEXCLAMATION __MSABI_LONG(0x00000030)
+#define MB_ICONASTERISK __MSABI_LONG(0x00000040)
+#define MB_USERICON __MSABI_LONG(0x00000080)
+#define MB_ICONWARNING MB_ICONEXCLAMATION
+#define MB_ICONERROR MB_ICONHAND
+#define MB_ICONINFORMATION MB_ICONASTERISK
+#define MB_ICONSTOP MB_ICONHAND
+#define MB_DEFBUTTON1 __MSABI_LONG(0x00000000)
+#define MB_DEFBUTTON2 __MSABI_LONG(0x00000100)
+#define MB_DEFBUTTON3 __MSABI_LONG(0x00000200)
+#define MB_DEFBUTTON4 __MSABI_LONG(0x00000300)
+#define MB_APPLMODAL __MSABI_LONG(0x00000000)
+#define MB_SYSTEMMODAL __MSABI_LONG(0x00001000)
+#define MB_TASKMODAL __MSABI_LONG(0x00002000)
+#define MB_HELP __MSABI_LONG(0x00004000)
+#define MB_NOFOCUS __MSABI_LONG(0x00008000)
+#define MB_SETFOREGROUND __MSABI_LONG(0x00010000)
+#define MB_DEFAULT_DESKTOP_ONLY __MSABI_LONG(0x00020000)
+#define MB_TOPMOST __MSABI_LONG(0x00040000)
+#define MB_RIGHT __MSABI_LONG(0x00080000)
+#define MB_RTLREADING __MSABI_LONG(0x00100000)
+#define MB_SERVICE_NOTIFICATION __MSABI_LONG(0x00200000)
+#define MB_SERVICE_NOTIFICATION_NT3X __MSABI_LONG(0x00040000)
+#define MB_TYPEMASK __MSABI_LONG(0x0000000F)
+#define MB_ICONMASK __MSABI_LONG(0x000000F0)
+#define MB_DEFMASK __MSABI_LONG(0x00000F00)
+#define MB_MODEMASK __MSABI_LONG(0x00003000)
+#define MB_MISCMASK __MSABI_LONG(0x0000C000)
+
+#define MessageBox __MINGW_NAME_AW(MessageBox)
+#define MessageBoxEx __MINGW_NAME_AW(MessageBoxEx)
+
+  WINUSERAPI int WINAPI MessageBoxA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType);
+  WINUSERAPI int WINAPI MessageBoxW(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType);
+  WINUSERAPI int WINAPI MessageBoxExA(HWND hWnd,LPCSTR lpText,LPCSTR lpCaption,UINT uType,WORD wLanguageId);
+  WINUSERAPI int WINAPI MessageBoxExW(HWND hWnd,LPCWSTR lpText,LPCWSTR lpCaption,UINT uType,WORD wLanguageId);
+
+  typedef VOID (CALLBACK *MSGBOXCALLBACK)(LPHELPINFO lpHelpInfo);
+
+  typedef struct tagMSGBOXPARAMSA {
+    UINT cbSize;
+    HWND hwndOwner;
+    HINSTANCE hInstance;
+    LPCSTR lpszText;
+    LPCSTR lpszCaption;
+    DWORD dwStyle;
+    LPCSTR lpszIcon;
+    DWORD_PTR dwContextHelpId;
+    MSGBOXCALLBACK lpfnMsgBoxCallback;
+    DWORD dwLanguageId;
+  } MSGBOXPARAMSA,*PMSGBOXPARAMSA,*LPMSGBOXPARAMSA;
+
+  typedef struct tagMSGBOXPARAMSW {
+    UINT cbSize;
+    HWND hwndOwner;
+    HINSTANCE hInstance;
+    LPCWSTR lpszText;
+    LPCWSTR lpszCaption;
+    DWORD dwStyle;
+    LPCWSTR lpszIcon;
+    DWORD_PTR dwContextHelpId;
+    MSGBOXCALLBACK lpfnMsgBoxCallback;
+    DWORD dwLanguageId;
+  } MSGBOXPARAMSW,*PMSGBOXPARAMSW,*LPMSGBOXPARAMSW;
+
+  __MINGW_TYPEDEF_AW(MSGBOXPARAMS)
+  __MINGW_TYPEDEF_AW(PMSGBOXPARAMS)
+  __MINGW_TYPEDEF_AW(LPMSGBOXPARAMS)
+
+#define MessageBoxIndirect __MINGW_NAME_AW(MessageBoxIndirect)
+
+  WINUSERAPI int WINAPI MessageBoxIndirectA(CONST MSGBOXPARAMSA *lpmbp);
+  WINUSERAPI int WINAPI MessageBoxIndirectW(CONST MSGBOXPARAMSW *lpmbp);
+  WINUSERAPI WINBOOL WINAPI MessageBeep(UINT uType);
+#endif
+
+  WINUSERAPI int WINAPI ShowCursor(WINBOOL bShow);
+  WINUSERAPI WINBOOL WINAPI SetCursorPos(int X,int Y);
+  WINUSERAPI HCURSOR WINAPI SetCursor(HCURSOR hCursor);
+  WINUSERAPI WINBOOL WINAPI GetCursorPos(LPPOINT lpPoint);
+  WINUSERAPI WINBOOL WINAPI ClipCursor(CONST RECT *lpRect);
+  WINUSERAPI WINBOOL WINAPI GetClipCursor(LPRECT lpRect);
+  WINUSERAPI HCURSOR WINAPI GetCursor(VOID);
+  WINUSERAPI WINBOOL WINAPI CreateCaret(HWND hWnd,HBITMAP hBitmap,int nWidth,int nHeight);
+  WINUSERAPI UINT WINAPI GetCaretBlinkTime(VOID);
+  WINUSERAPI WINBOOL WINAPI SetCaretBlinkTime(UINT uMSeconds);
+  WINUSERAPI WINBOOL WINAPI DestroyCaret(VOID);
+  WINUSERAPI WINBOOL WINAPI HideCaret(HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI ShowCaret(HWND hWnd);
+  WINUSERAPI WINBOOL WINAPI SetCaretPos(int X,int Y);
+  WINUSERAPI WINBOOL WINAPI GetCaretPos(LPPOINT lpPoint);
+  WINUSERAPI WINBOOL WINAPI ClientToScreen(HWND hWnd,LPPOINT lpPoint);
+  WINUSERAPI WINBOOL WINAPI ScreenToClient(HWND hWnd,LPPOINT lpPoint);
+  WINUSERAPI int WINAPI MapWindowPoints(HWND hWndFrom,HWND hWndTo,LPPOINT lpPoints,UINT cPoints);
+  WINUSERAPI HWND WINAPI WindowFromPoint(POINT Point);
+  WINUSERAPI HWND WINAPI ChildWindowFromPoint(HWND hWndParent,POINT Point);
+
+#define CWP_ALL 0x0000
+#define CWP_SKIPINVISIBLE 0x0001
+#define CWP_SKIPDISABLED 0x0002
+#define CWP_SKIPTRANSPARENT 0x0004
+
+  WINUSERAPI HWND WINAPI ChildWindowFromPointEx(HWND hwnd,POINT pt,UINT flags);
+
+#ifndef NOCOLOR
+
+#define CTLCOLOR_MSGBOX 0
+#define CTLCOLOR_EDIT 1
+#define CTLCOLOR_LISTBOX 2
+#define CTLCOLOR_BTN 3
+#define CTLCOLOR_DLG 4
+#define CTLCOLOR_SCROLLBAR 5
+#define CTLCOLOR_STATIC 6
+#define CTLCOLOR_MAX 7
+
+#define COLOR_SCROLLBAR 0
+#define COLOR_BACKGROUND 1
+#define COLOR_ACTIVECAPTION 2
+#define COLOR_INACTIVECAPTION 3
+#define COLOR_MENU 4
+#define COLOR_WINDOW 5
+#define COLOR_WINDOWFRAME 6
+#define COLOR_MENUTEXT 7
+#define COLOR_WINDOWTEXT 8
+#define COLOR_CAPTIONTEXT 9
+#define COLOR_ACTIVEBORDER 10
+#define COLOR_INACTIVEBORDER 11
+#define COLOR_APPWORKSPACE 12
+#define COLOR_HIGHLIGHT 13
+#define COLOR_HIGHLIGHTTEXT 14
+#define COLOR_BTNFACE 15
+#define COLOR_BTNSHADOW 16
+#define COLOR_GRAYTEXT 17
+#define COLOR_BTNTEXT 18
+#define COLOR_INACTIVECAPTIONTEXT 19
+#define COLOR_BTNHIGHLIGHT 20
+
+#define COLOR_3DDKSHADOW 21
+#define COLOR_3DLIGHT 22
+#define COLOR_INFOTEXT 23
+#define COLOR_INFOBK 24
+
+#define COLOR_HOTLIGHT 26
+#define COLOR_GRADIENTACTIVECAPTION 27
+#define COLOR_GRADIENTINACTIVECAPTION 28
+#define COLOR_MENUHILIGHT 29
+#define COLOR_MENUBAR 30
+
+#define COLOR_DESKTOP COLOR_BACKGROUND
+#define COLOR_3DFACE COLOR_BTNFACE
+#define COLOR_3DSHADOW COLOR_BTNSHADOW
+#define COLOR_3DHIGHLIGHT COLOR_BTNHIGHLIGHT
+#define COLOR_3DHILIGHT COLOR_BTNHIGHLIGHT
+#define COLOR_BTNHILIGHT COLOR_BTNHIGHLIGHT
+
+  WINUSERAPI DWORD WINAPI GetSysColor(int nIndex);
+  WINUSERAPI HBRUSH WINAPI GetSysColorBrush(int nIndex);
+  WINUSERAPI WINBOOL WINAPI SetSysColors(int cElements,CONST INT *lpaElements,CONST COLORREF *lpaRgbValues);
+#endif
+
+  WINUSERAPI WINBOOL WINAPI DrawFocusRect(HDC hDC,CONST RECT *lprc);
+  WINUSERAPI int WINAPI FillRect(HDC hDC,CONST RECT *lprc,HBRUSH hbr);
+  WINUSERAPI int WINAPI FrameRect(HDC hDC,CONST RECT *lprc,HBRUSH hbr);
+  WINUSERAPI WINBOOL WINAPI InvertRect(HDC hDC,CONST RECT *lprc);
+  WINUSERAPI WINBOOL WINAPI SetRect(LPRECT lprc,int xLeft,int yTop,int xRight,int yBottom);
+  WINUSERAPI WINBOOL WINAPI SetRectEmpty(LPRECT lprc);
+  WINUSERAPI WINBOOL WINAPI CopyRect(LPRECT lprcDst,CONST RECT *lprcSrc);
+  WINUSERAPI WINBOOL WINAPI InflateRect(LPRECT lprc,int dx,int dy);
+  WINUSERAPI WINBOOL WINAPI IntersectRect(LPRECT lprcDst,CONST RECT *lprcSrc1,CONST RECT *lprcSrc2);
+  WINUSERAPI WINBOOL WINAPI UnionRect(LPRECT lprcDst,CONST RECT *lprcSrc1,CONST RECT *lprcSrc2);
+  WINUSERAPI WINBOOL WINAPI SubtractRect(LPRECT lprcDst,CONST RECT *lprcSrc1,CONST RECT *lprcSrc2);
+  WINUSERAPI WINBOOL WINAPI OffsetRect(LPRECT lprc,int dx,int dy);
+  WINUSERAPI WINBOOL WINAPI IsRectEmpty(CONST RECT *lprc);
+  WINUSERAPI WINBOOL WINAPI EqualRect(CONST RECT *lprc1,CONST RECT *lprc2);
+  WINUSERAPI WINBOOL WINAPI PtInRect(CONST RECT *lprc,POINT pt);
+
+#ifndef NOWINOFFSETS
+
+#define GetWindowLong __MINGW_NAME_AW(GetWindowLong)
+#define SetWindowLong __MINGW_NAME_AW(SetWindowLong)
+
+  WINUSERAPI WORD WINAPI GetWindowWord(HWND hWnd,int nIndex);
+  WINUSERAPI WORD WINAPI SetWindowWord(HWND hWnd,int nIndex,WORD wNewWord);
+  WINUSERAPI LONG WINAPI GetWindowLongA(HWND hWnd,int nIndex);
+  WINUSERAPI LONG WINAPI GetWindowLongW(HWND hWnd,int nIndex);
+  WINUSERAPI LONG WINAPI SetWindowLongA(HWND hWnd,int nIndex,LONG dwNewLong);
+  WINUSERAPI LONG WINAPI SetWindowLongW(HWND hWnd,int nIndex,LONG dwNewLong);
+
+#ifdef _WIN64
+
+#define GetWindowLongPtr __MINGW_NAME_AW(GetWindowLongPtr)
+#define SetWindowLongPtr __MINGW_NAME_AW(SetWindowLongPtr)
+
+  WINUSERAPI LONG_PTR WINAPI GetWindowLongPtrA(HWND hWnd,int nIndex);
+  WINUSERAPI LONG_PTR WINAPI GetWindowLongPtrW(HWND hWnd,int nIndex);
+  WINUSERAPI LONG_PTR WINAPI SetWindowLongPtrA(HWND hWnd,int nIndex,LONG_PTR dwNewLong);
+  WINUSERAPI LONG_PTR WINAPI SetWindowLongPtrW(HWND hWnd,int nIndex,LONG_PTR dwNewLong);
+#else
+
+#define GetWindowLongPtr __MINGW_NAME_AW(GetWindowLongPtr)
+#define SetWindowLongPtr __MINGW_NAME_AW(SetWindowLongPtr)
+
+#define GetWindowLongPtrA GetWindowLongA
+#define GetWindowLongPtrW GetWindowLongW
+#define SetWindowLongPtrA SetWindowLongA
+#define SetWindowLongPtrW SetWindowLongW
+#endif
+
+#define GetClassLong __MINGW_NAME_AW(GetClassLong)
+#define SetClassLong __MINGW_NAME_AW(SetClassLong)
+
+  WINUSERAPI WORD WINAPI GetClassWord(HWND hWnd,int nIndex);
+  WINUSERAPI WORD WINAPI SetClassWord(HWND hWnd,int nIndex,WORD wNewWord);
+  WINUSERAPI DWORD WINAPI GetClassLongA(HWND hWnd,int nIndex);
+  WINUSERAPI DWORD WINAPI GetClassLongW(HWND hWnd,int nIndex);
+  WINUSERAPI DWORD WINAPI SetClassLongA(HWND hWnd,int nIndex,LONG dwNewLong);
+  WINUSERAPI DWORD WINAPI SetClassLongW(HWND hWnd,int nIndex,LONG dwNewLong);
+
+#ifdef _WIN64
+
+#define GetClassLongPtr __MINGW_NAME_AW(GetClassLongPtr)
+#define SetClassLongPtr __MINGW_NAME_AW(SetClassLongPtr)
+
+  WINUSERAPI ULONG_PTR WINAPI GetClassLongPtrA(HWND hWnd,int nIndex);
+  WINUSERAPI ULONG_PTR WINAPI GetClassLongPtrW(HWND hWnd,int nIndex);
+  WINUSERAPI ULONG_PTR WINAPI SetClassLongPtrA(HWND hWnd,int nIndex,LONG_PTR dwNewLong);
+  WINUSERAPI ULONG_PTR WINAPI SetClassLongPtrW(HWND hWnd,int nIndex,LONG_PTR dwNewLong);
+#else
+#define GetClassLongPtr __MINGW_NAME_AW(GetClassLongPtr)
+#define SetClassLongPtr __MINGW_NAME_AW(SetClassLongPtr)
+
+#define GetClassLongPtrA GetClassLongA
+#define GetClassLongPtrW GetClassLongW
+#define SetClassLongPtrA SetClassLongA
+#define SetClassLongPtrW SetClassLongW
+#endif
+#endif
+
+#define FindWindow __MINGW_NAME_AW(FindWindow)
+#define FindWindowEx __MINGW_NAME_AW(FindWindowEx)
+#define GetClassName __MINGW_NAME_AW(GetClassName)
+
+  WINUSERAPI WINBOOL WINAPI GetProcessDefaultLayout(DWORD *pdwDefaultLayout);
+  WINUSERAPI WINBOOL WINAPI SetProcessDefaultLayout(DWORD dwDefaultLayout);
+  WINUSERAPI HWND WINAPI GetDesktopWindow(VOID);
+  WINUSERAPI HWND WINAPI GetParent(HWND hWnd);
+  WINUSERAPI HWND WINAPI SetParent(HWND hWndChild,HWND hWndNewParent);
+  WINUSERAPI WINBOOL WINAPI EnumChildWindows(HWND hWndParent,WNDENUMPROC lpEnumFunc,LPARAM lParam);
+  WINUSERAPI HWND WINAPI FindWindowA(LPCSTR lpClassName,LPCSTR lpWindowName);
+  WINUSERAPI HWND WINAPI FindWindowW(LPCWSTR lpClassName,LPCWSTR lpWindowName);
+  WINUSERAPI HWND WINAPI FindWindowExA(HWND hWndParent,HWND hWndChildAfter,LPCSTR lpszClass,LPCSTR lpszWindow);
+  WINUSERAPI HWND WINAPI FindWindowExW(HWND hWndParent,HWND hWndChildAfter,LPCWSTR lpszClass,LPCWSTR lpszWindow);
+  WINUSERAPI HWND WINAPI GetShellWindow(VOID);
+  WINUSERAPI WINBOOL WINAPI RegisterShellHookWindow(HWND hwnd);
+  WINUSERAPI WINBOOL WINAPI DeregisterShellHookWindow(HWND hwnd);
+  WINUSERAPI WINBOOL WINAPI EnumWindows(WNDENUMPROC lpEnumFunc,LPARAM lParam);
+  WINUSERAPI WINBOOL WINAPI EnumThreadWindows(DWORD dwThreadId,WNDENUMPROC lpfn,LPARAM lParam);
+
+#define EnumTaskWindows(hTask,lpfn,lParam) EnumThreadWindows(HandleToUlong(hTask),lpfn,lParam)
+
+  WINUSERAPI int WINAPI GetClassNameA(HWND hWnd,LPSTR lpClassName,int nMaxCount);
+  WINUSERAPI int WINAPI GetClassNameW(HWND hWnd,LPWSTR lpClassName,int nMaxCount);
+  WINUSERAPI HWND WINAPI GetTopWindow(HWND hWnd);
+
+#define GetNextWindow(hWnd,wCmd) GetWindow(hWnd,wCmd)
+#define GetSysModalWindow() (NULL)
+#define SetSysModalWindow(hWnd) (NULL)
+
+  WINUSERAPI DWORD WINAPI GetWindowThreadProcessId(HWND hWnd,LPDWORD lpdwProcessId);
+  WINUSERAPI WINBOOL WINAPI IsGUIThread(WINBOOL bConvert);
+
+#define GetWindowTask(hWnd) ((HANDLE)(DWORD_PTR)GetWindowThreadProcessId(hWnd,NULL))
+
+  WINUSERAPI HWND WINAPI GetLastActivePopup(HWND hWnd);
+
+#define GW_HWNDFIRST 0
+#define GW_HWNDLAST 1
+#define GW_HWNDNEXT 2
+#define GW_HWNDPREV 3
+#define GW_OWNER 4
+#define GW_CHILD 5
+#define GW_ENABLEDPOPUP 6
+#define GW_MAX 6
+
+  WINUSERAPI HWND WINAPI GetWindow(HWND hWnd,UINT uCmd);
+
+#ifndef NOWH
+
+#define SetWindowsHook __MINGW_NAME_AW(SetWindowsHook)
+#define SetWindowsHookEx __MINGW_NAME_AW(SetWindowsHookEx)
+
+  WINUSERAPI HHOOK WINAPI SetWindowsHookA(int nFilterType,HOOKPROC pfnFilterProc);
+  WINUSERAPI HHOOK WINAPI SetWindowsHookW(int nFilterType,HOOKPROC pfnFilterProc);
+  WINUSERAPI WINBOOL WINAPI UnhookWindowsHook(int nCode,HOOKPROC pfnFilterProc);
+  WINUSERAPI HHOOK WINAPI SetWindowsHookExA(int idHook,HOOKPROC lpfn,HINSTANCE hmod,DWORD dwThreadId);
+  WINUSERAPI HHOOK WINAPI SetWindowsHookExW(int idHook,HOOKPROC lpfn,HINSTANCE hmod,DWORD dwThreadId);
+  WINUSERAPI WINBOOL WINAPI UnhookWindowsHookEx(HHOOK hhk);
+  WINUSERAPI LRESULT WINAPI CallNextHookEx(HHOOK hhk,int nCode,WPARAM wParam,LPARAM lParam);
+#define DefHookProc(nCode,wParam,lParam,phhk) CallNextHookEx(*phhk,nCode,wParam,lParam)
+#endif
+
+#ifndef NOMENUS
+
+#define MF_INSERT __MSABI_LONG(0x00000000)
+#define MF_CHANGE __MSABI_LONG(0x00000080)
+#define MF_APPEND __MSABI_LONG(0x00000100)
+#define MF_DELETE __MSABI_LONG(0x00000200)
+#define MF_REMOVE __MSABI_LONG(0x00001000)
+#define MF_BYCOMMAND __MSABI_LONG(0x00000000)
+#define MF_BYPOSITION __MSABI_LONG(0x00000400)
+#define MF_SEPARATOR __MSABI_LONG(0x00000800)
+#define MF_ENABLED __MSABI_LONG(0x00000000)
+#define MF_GRAYED __MSABI_LONG(0x00000001)
+#define MF_DISABLED __MSABI_LONG(0x00000002)
+#define MF_UNCHECKED __MSABI_LONG(0x00000000)
+#define MF_CHECKED __MSABI_LONG(0x00000008)
+#define MF_USECHECKBITMAPS __MSABI_LONG(0x00000200)
+#define MF_STRING __MSABI_LONG(0x00000000)
+#define MF_BITMAP __MSABI_LONG(0x00000004)
+#define MF_OWNERDRAW __MSABI_LONG(0x00000100)
+#define MF_POPUP __MSABI_LONG(0x00000010)
+#define MF_MENUBARBREAK __MSABI_LONG(0x00000020)
+#define MF_MENUBREAK __MSABI_LONG(0x00000040)
+#define MF_UNHILITE __MSABI_LONG(0x00000000)
+#define MF_HILITE __MSABI_LONG(0x00000080)
+#define MF_DEFAULT __MSABI_LONG(0x00001000)
+#define MF_SYSMENU __MSABI_LONG(0x00002000)
+#define MF_HELP __MSABI_LONG(0x00004000)
+#define MF_RIGHTJUSTIFY __MSABI_LONG(0x00004000)
+#define MF_MOUSESELECT __MSABI_LONG(0x00008000)
+#define MF_END __MSABI_LONG(0x00000080)
+
+#define MFT_STRING MF_STRING
+#define MFT_BITMAP MF_BITMAP
+#define MFT_MENUBARBREAK MF_MENUBARBREAK
+#define MFT_MENUBREAK MF_MENUBREAK
+#define MFT_OWNERDRAW MF_OWNERDRAW
+#define MFT_RADIOCHECK __MSABI_LONG(0x00000200)
+#define MFT_SEPARATOR MF_SEPARATOR
+#define MFT_RIGHTORDER __MSABI_LONG(0x00002000)
+#define MFT_RIGHTJUSTIFY MF_RIGHTJUSTIFY
+
+#define MFS_GRAYED __MSABI_LONG(0x00000003)
+#define MFS_DISABLED MFS_GRAYED
+#define MFS_CHECKED MF_CHECKED
+#define MFS_HILITE MF_HILITE
+#define MFS_ENABLED MF_ENABLED
+#define MFS_UNCHECKED MF_UNCHECKED
+#define MFS_UNHILITE MF_UNHILITE
+#define MFS_DEFAULT MF_DEFAULT
+
+  WINUSERAPI WINBOOL WINAPI CheckMenuRadioItem(HMENU hmenu,UINT first,UINT last,UINT check,UINT flags);
+
+  typedef struct {
+    WORD versionNumber;
+    WORD offset;
+  } MENUITEMTEMPLATEHEADER,*PMENUITEMTEMPLATEHEADER;
+
+  typedef struct {
+    WORD mtOption;
+    WORD mtID;
+    WCHAR mtString[1];
+  } MENUITEMTEMPLATE,*PMENUITEMTEMPLATE;
+#define MF_END __MSABI_LONG(0x00000080)
+#endif
+
+#ifndef NOSYSCOMMANDS
+
+#define SC_SIZE 0xF000
+#define SC_MOVE 0xF010
+#define SC_MINIMIZE 0xF020
+#define SC_MAXIMIZE 0xF030
+#define SC_NEXTWINDOW 0xF040
+#define SC_PREVWINDOW 0xF050
+#define SC_CLOSE 0xF060
+#define SC_VSCROLL 0xF070
+#define SC_HSCROLL 0xF080
+#define SC_MOUSEMENU 0xF090
+#define SC_KEYMENU 0xF100
+#define SC_ARRANGE 0xF110
+#define SC_RESTORE 0xF120
+#define SC_TASKLIST 0xF130
+#define SC_SCREENSAVE 0xF140
+#define SC_HOTKEY 0xF150
+#define SC_DEFAULT 0xF160
+#define SC_MONITORPOWER 0xF170
+#define SC_CONTEXTHELP 0xF180
+#define SC_SEPARATOR 0xF00F
+#define SC_ICON SC_MINIMIZE
+#define SC_ZOOM SC_MAXIMIZE
+#endif
+
+#define LoadBitmap __MINGW_NAME_AW(LoadBitmap)
+#define LoadCursor __MINGW_NAME_AW(LoadCursor)
+#define LoadCursorFromFile __MINGW_NAME_AW(LoadCursorFromFile)
+
+  WINUSERAPI HBITMAP WINAPI LoadBitmapA(HINSTANCE hInstance,LPCSTR lpBitmapName);
+  WINUSERAPI HBITMAP WINAPI LoadBitmapW(HINSTANCE hInstance,LPCWSTR lpBitmapName);
+  WINUSERAPI HCURSOR WINAPI LoadCursorA(HINSTANCE hInstance,LPCSTR lpCursorName);
+  WINUSERAPI HCURSOR WINAPI LoadCursorW(HINSTANCE hInstance,LPCWSTR lpCursorName);
+  WINUSERAPI HCURSOR WINAPI LoadCursorFromFileA(LPCSTR lpFileName);
+  WINUSERAPI HCURSOR WINAPI LoadCursorFromFileW(LPCWSTR lpFileName);
+  WINUSERAPI HCURSOR WINAPI CreateCursor(HINSTANCE hInst,int xHotSpot,int yHotSpot,int nWidth,int nHeight,CONST VOID *pvANDPlane,CONST VOID *pvXORPlane);
+  WINUSERAPI WINBOOL WINAPI DestroyCursor(HCURSOR hCursor);
+
+#define CopyCursor(pcur) ((HCURSOR)CopyIcon((HICON)(pcur)))
+
+#define IDC_ARROW MAKEINTRESOURCE(32512)
+#define IDC_IBEAM MAKEINTRESOURCE(32513)
+#define IDC_WAIT MAKEINTRESOURCE(32514)
+#define IDC_CROSS MAKEINTRESOURCE(32515)
+#define IDC_UPARROW MAKEINTRESOURCE(32516)
+#define IDC_SIZE MAKEINTRESOURCE(32640)
+#define IDC_ICON MAKEINTRESOURCE(32641)
+#define IDC_SIZENWSE MAKEINTRESOURCE(32642)
+#define IDC_SIZENESW MAKEINTRESOURCE(32643)
+#define IDC_SIZEWE MAKEINTRESOURCE(32644)
+#define IDC_SIZENS MAKEINTRESOURCE(32645)
+#define IDC_SIZEALL MAKEINTRESOURCE(32646)
+#define IDC_NO MAKEINTRESOURCE(32648)
+#define IDC_HAND MAKEINTRESOURCE(32649)
+#define IDC_APPSTARTING MAKEINTRESOURCE(32650)
+#define IDC_HELP MAKEINTRESOURCE(32651)
+
+  WINUSERAPI WINBOOL WINAPI SetSystemCursor(HCURSOR hcur,DWORD id);
+
+  typedef struct _ICONINFO {
+    WINBOOL fIcon;
+    DWORD xHotspot;
+    DWORD yHotspot;
+    HBITMAP hbmMask;
+    HBITMAP hbmColor;
+  } ICONINFO;
+  typedef ICONINFO *PICONINFO;
+
+#define LoadIcon __MINGW_NAME_AW(LoadIcon)
+#define PrivateExtractIcons __MINGW_NAME_AW(PrivateExtractIcons)
+
+  WINUSERAPI HICON WINAPI LoadIconA(HINSTANCE hInstance,LPCSTR lpIconName);
+  WINUSERAPI HICON WINAPI LoadIconW(HINSTANCE hInstance,LPCWSTR lpIconName);
+  WINUSERAPI UINT WINAPI PrivateExtractIconsA(LPCSTR szFileName,int nIconIndex,int cxIcon,int cyIcon,HICON *phicon,UINT *piconid,UINT nIcons,UINT flags);
+  WINUSERAPI UINT WINAPI PrivateExtractIconsW(LPCWSTR szFileName,int nIconIndex,int cxIcon,int cyIcon,HICON *phicon,UINT *piconid,UINT nIcons,UINT flags);
+  WINUSERAPI HICON WINAPI CreateIcon(HINSTANCE hInstance,int nWidth,int nHeight,BYTE cPlanes,BYTE cBitsPixel,CONST BYTE *lpbANDbits,CONST BYTE *lpbXORbits);
+  WINUSERAPI WINBOOL WINAPI DestroyIcon(HICON hIcon);
+  WINUSERAPI int WINAPI LookupIconIdFromDirectory(PBYTE presbits,WINBOOL fIcon);
+  WINUSERAPI int WINAPI LookupIconIdFromDirectoryEx(PBYTE presbits,WINBOOL fIcon,int cxDesired,int cyDesired,UINT Flags);
+  WINUSERAPI HICON WINAPI CreateIconFromResource(PBYTE presbits,DWORD dwResSize,WINBOOL fIcon,DWORD dwVer);
+  WINUSERAPI HICON WINAPI CreateIconFromResourceEx(PBYTE presbits,DWORD dwResSize,WINBOOL fIcon,DWORD dwVer,int cxDesired,int cyDesired,UINT Flags);
+
+  typedef struct tagCURSORSHAPE {
+    int xHotSpot;
+    int yHotSpot;
+    int cx;
+    int cy;
+    int cbWidth;
+    BYTE Planes;
+    BYTE BitsPixel;
+  } CURSORSHAPE,*LPCURSORSHAPE;
+
+#define IMAGE_BITMAP 0
+#define IMAGE_ICON 1
+#define IMAGE_CURSOR 2
+#define IMAGE_ENHMETAFILE 3
+
+#define LR_DEFAULTCOLOR 0x0000
+#define LR_MONOCHROME 0x0001
+#define LR_COLOR 0x0002
+#define LR_COPYRETURNORG 0x0004
+#define LR_COPYDELETEORG 0x0008
+#define LR_LOADFROMFILE 0x0010
+#define LR_LOADTRANSPARENT 0x0020
+#define LR_DEFAULTSIZE 0x0040
+#define LR_VGACOLOR 0x0080
+#define LR_LOADMAP3DCOLORS 0x1000
+#define LR_CREATEDIBSECTION 0x2000
+#define LR_COPYFROMRESOURCE 0x4000
+#define LR_SHARED 0x8000
+
+#define LoadImage __MINGW_NAME_AW(LoadImage)
+
+  WINUSERAPI HANDLE WINAPI LoadImageA(HINSTANCE hInst,LPCSTR name,UINT type,int cx,int cy,UINT fuLoad);
+  WINUSERAPI HANDLE WINAPI LoadImageW(HINSTANCE hInst,LPCWSTR name,UINT type,int cx,int cy,UINT fuLoad);
+  WINUSERAPI HANDLE WINAPI CopyImage(HANDLE h,UINT type,int cx,int cy,UINT flags);
+
+#define DI_MASK 0x0001
+#define DI_IMAGE 0x0002
+#define DI_NORMAL 0x0003
+#define DI_COMPAT 0x0004
+#define DI_DEFAULTSIZE 0x0008
+#define DI_NOMIRROR 0x0010
+
+  WINUSERAPI WINBOOL WINAPI DrawIconEx(HDC hdc,int xLeft,int yTop,HICON hIcon,int cxWidth,int cyWidth,UINT istepIfAniCur,HBRUSH hbrFlickerFreeDraw,UINT diFlags);
+  WINUSERAPI HICON WINAPI CreateIconIndirect(PICONINFO piconinfo);
+  WINUSERAPI HICON WINAPI CopyIcon(HICON hIcon);
+  WINUSERAPI WINBOOL WINAPI GetIconInfo(HICON hIcon,PICONINFO piconinfo);
+
+#define RES_ICON 1
+#define RES_CURSOR 2
+
+#ifdef OEMRESOURCE
+
+#define OBM_CLOSE 32754
+#define OBM_UPARROW 32753
+#define OBM_DNARROW 32752
+#define OBM_RGARROW 32751
+#define OBM_LFARROW 32750
+#define OBM_REDUCE 32749
+#define OBM_ZOOM 32748
+#define OBM_RESTORE 32747
+#define OBM_REDUCED 32746
+#define OBM_ZOOMD 32745
+#define OBM_RESTORED 32744
+#define OBM_UPARROWD 32743
+#define OBM_DNARROWD 32742
+#define OBM_RGARROWD 32741
+#define OBM_LFARROWD 32740
+#define OBM_MNARROW 32739
+#define OBM_COMBO 32738
+#define OBM_UPARROWI 32737
+#define OBM_DNARROWI 32736
+#define OBM_RGARROWI 32735
+#define OBM_LFARROWI 32734
+
+#define OBM_OLD_CLOSE 32767
+#define OBM_SIZE 32766
+#define OBM_OLD_UPARROW 32765
+#define OBM_OLD_DNARROW 32764
+#define OBM_OLD_RGARROW 32763
+#define OBM_OLD_LFARROW 32762
+#define OBM_BTSIZE 32761
+#define OBM_CHECK 32760
+#define OBM_CHECKBOXES 32759
+#define OBM_BTNCORNERS 32758
+#define OBM_OLD_REDUCE 32757
+#define OBM_OLD_ZOOM 32756
+#define OBM_OLD_RESTORE 32755
+
+#define OCR_NORMAL 32512
+#define OCR_IBEAM 32513
+#define OCR_WAIT 32514
+#define OCR_CROSS 32515
+#define OCR_UP 32516
+#define OCR_SIZE 32640
+#define OCR_ICON 32641
+#define OCR_SIZENWSE 32642
+#define OCR_SIZENESW 32643
+#define OCR_SIZEWE 32644
+#define OCR_SIZENS 32645
+#define OCR_SIZEALL 32646
+#define OCR_ICOCUR 32647
+#define OCR_NO 32648
+#define OCR_HAND 32649
+#define OCR_APPSTARTING 32650
+
+#define OIC_SAMPLE 32512
+#define OIC_HAND 32513
+#define OIC_QUES 32514
+#define OIC_BANG 32515
+#define OIC_NOTE 32516
+#define OIC_WINLOGO 32517
+#define OIC_WARNING OIC_BANG
+#define OIC_ERROR OIC_HAND
+#define OIC_INFORMATION OIC_NOTE
+#endif
+
+#define ORD_LANGDRIVER 1
+
+#ifndef NOICONS
+
+#ifdef RC_INVOKED
+#define IDI_APPLICATION 32512
+#define IDI_HAND 32513
+#define IDI_QUESTION 32514
+#define IDI_EXCLAMATION 32515
+#define IDI_ASTERISK 32516
+#define IDI_WINLOGO 32517
+#else
+#define IDI_APPLICATION MAKEINTRESOURCE(32512)
+#define IDI_HAND MAKEINTRESOURCE(32513)
+#define IDI_QUESTION MAKEINTRESOURCE(32514)
+#define IDI_EXCLAMATION MAKEINTRESOURCE(32515)
+#define IDI_ASTERISK MAKEINTRESOURCE(32516)
+#define IDI_WINLOGO MAKEINTRESOURCE(32517)
+#endif
+
+#define IDI_WARNING IDI_EXCLAMATION
+#define IDI_ERROR IDI_HAND
+#define IDI_INFORMATION IDI_ASTERISK
+#endif
+
+#define LoadString __MINGW_NAME_AW(LoadString)
+
+  WINUSERAPI int WINAPI LoadStringA(HINSTANCE hInstance,UINT uID,LPSTR lpBuffer,int cchBufferMax);
+  WINUSERAPI int WINAPI LoadStringW(HINSTANCE hInstance,UINT uID,LPWSTR lpBuffer,int cchBufferMax);
+
+#define IDOK 1
+#define IDCANCEL 2
+#define IDABORT 3
+#define IDRETRY 4
+#define IDIGNORE 5
+#define IDYES 6
+#define IDNO 7
+#define IDCLOSE 8
+#define IDHELP 9
+#define IDTRYAGAIN 10
+#define IDCONTINUE 11
+
+#ifndef IDTIMEOUT
+#define IDTIMEOUT 32000
+#endif
+
+#ifndef NOCTLMGR
+
+#ifndef NOWINSTYLES
+#define ES_LEFT __MSABI_LONG(0x0000)
+#define ES_CENTER __MSABI_LONG(0x0001)
+#define ES_RIGHT __MSABI_LONG(0x0002)
+#define ES_MULTILINE __MSABI_LONG(0x0004)
+#define ES_UPPERCASE __MSABI_LONG(0x0008)
+#define ES_LOWERCASE __MSABI_LONG(0x0010)
+#define ES_PASSWORD __MSABI_LONG(0x0020)
+#define ES_AUTOVSCROLL __MSABI_LONG(0x0040)
+#define ES_AUTOHSCROLL __MSABI_LONG(0x0080)
+#define ES_NOHIDESEL __MSABI_LONG(0x0100)
+#define ES_OEMCONVERT __MSABI_LONG(0x0400)
+#define ES_READONLY __MSABI_LONG(0x0800)
+#define ES_WANTRETURN __MSABI_LONG(0x1000)
+#define ES_NUMBER __MSABI_LONG(0x2000)
+#endif
+
+#define EN_SETFOCUS 0x0100
+#define EN_KILLFOCUS 0x0200
+#define EN_CHANGE 0x0300
+#define EN_UPDATE 0x0400
+#define EN_ERRSPACE 0x0500
+#define EN_MAXTEXT 0x0501
+#define EN_HSCROLL 0x0601
+#define EN_VSCROLL 0x0602
+#define EN_ALIGN_LTR_EC 0x0700
+#define EN_ALIGN_RTL_EC 0x0701
+
+#define EC_LEFTMARGIN 0x0001
+#define EC_RIGHTMARGIN 0x0002
+#define EC_USEFONTINFO 0xffff
+
+#define EMSIS_COMPOSITIONSTRING 0x0001
+
+#define EIMES_GETCOMPSTRATONCE 0x0001
+#define EIMES_CANCELCOMPSTRINFOCUS 0x0002
+#define EIMES_COMPLETECOMPSTRKILLFOCUS 0x0004
+
+#ifndef NOWINMESSAGES
+
+#define EM_GETSEL 0x00B0
+#define EM_SETSEL 0x00B1
+#define EM_GETRECT 0x00B2
+#define EM_SETRECT 0x00B3
+#define EM_SETRECTNP 0x00B4
+#define EM_SCROLL 0x00B5
+#define EM_LINESCROLL 0x00B6
+#define EM_SCROLLCARET 0x00B7
+#define EM_GETMODIFY 0x00B8
+#define EM_SETMODIFY 0x00B9
+#define EM_GETLINECOUNT 0x00BA
+#define EM_LINEINDEX 0x00BB
+#define EM_SETHANDLE 0x00BC
+#define EM_GETHANDLE 0x00BD
+#define EM_GETTHUMB 0x00BE
+#define EM_LINELENGTH 0x00C1
+#define EM_REPLACESEL 0x00C2
+#define EM_GETLINE 0x00C4
+#define EM_LIMITTEXT 0x00C5
+#define EM_CANUNDO 0x00C6
+#define EM_UNDO 0x00C7
+#define EM_FMTLINES 0x00C8
+#define EM_LINEFROMCHAR 0x00C9
+#define EM_SETTABSTOPS 0x00CB
+#define EM_SETPASSWORDCHAR 0x00CC
+#define EM_EMPTYUNDOBUFFER 0x00CD
+#define EM_GETFIRSTVISIBLELINE 0x00CE
+#define EM_SETREADONLY 0x00CF
+#define EM_SETWORDBREAKPROC 0x00D0
+#define EM_GETWORDBREAKPROC 0x00D1
+#define EM_GETPASSWORDCHAR 0x00D2
+#define EM_SETMARGINS 0x00D3
+#define EM_GETMARGINS 0x00D4
+#define EM_SETLIMITTEXT EM_LIMITTEXT
+#define EM_GETLIMITTEXT 0x00D5
+#define EM_POSFROMCHAR 0x00D6
+#define EM_CHARFROMPOS 0x00D7
+#define EM_SETIMESTATUS 0x00D8
+#define EM_GETIMESTATUS 0x00D9
+#endif
+
+#define WB_LEFT 0
+#define WB_RIGHT 1
+#define WB_ISDELIMITER 2
+
+#define BS_PUSHBUTTON __MSABI_LONG(0x00000000)
+#define BS_DEFPUSHBUTTON __MSABI_LONG(0x00000001)
+#define BS_CHECKBOX __MSABI_LONG(0x00000002)
+#define BS_AUTOCHECKBOX __MSABI_LONG(0x00000003)
+#define BS_RADIOBUTTON __MSABI_LONG(0x00000004)
+#define BS_3STATE __MSABI_LONG(0x00000005)
+#define BS_AUTO3STATE __MSABI_LONG(0x00000006)
+#define BS_GROUPBOX __MSABI_LONG(0x00000007)
+#define BS_USERBUTTON __MSABI_LONG(0x00000008)
+#define BS_AUTORADIOBUTTON __MSABI_LONG(0x00000009)
+#define BS_PUSHBOX __MSABI_LONG(0x0000000A)
+#define BS_OWNERDRAW __MSABI_LONG(0x0000000B)
+#define BS_TYPEMASK __MSABI_LONG(0x0000000F)
+#define BS_LEFTTEXT __MSABI_LONG(0x00000020)
+#define BS_TEXT __MSABI_LONG(0x00000000)
+#define BS_ICON __MSABI_LONG(0x00000040)
+#define BS_BITMAP __MSABI_LONG(0x00000080)
+#define BS_LEFT __MSABI_LONG(0x00000100)
+#define BS_RIGHT __MSABI_LONG(0x00000200)
+#define BS_CENTER __MSABI_LONG(0x00000300)
+#define BS_TOP __MSABI_LONG(0x00000400)
+#define BS_BOTTOM __MSABI_LONG(0x00000800)
+#define BS_VCENTER __MSABI_LONG(0x00000C00)
+#define BS_PUSHLIKE __MSABI_LONG(0x00001000)
+#define BS_MULTILINE __MSABI_LONG(0x00002000)
+#define BS_NOTIFY __MSABI_LONG(0x00004000)
+#define BS_FLAT __MSABI_LONG(0x00008000)
+#define BS_RIGHTBUTTON BS_LEFTTEXT
+
+#define BN_CLICKED 0
+#define BN_PAINT 1
+#define BN_HILITE 2
+#define BN_UNHILITE 3
+#define BN_DISABLE 4
+#define BN_DOUBLECLICKED 5
+#define BN_PUSHED BN_HILITE
+#define BN_UNPUSHED BN_UNHILITE
+#define BN_DBLCLK BN_DOUBLECLICKED
+#define BN_SETFOCUS 6
+#define BN_KILLFOCUS 7
+
+#define BM_GETCHECK 0x00F0
+#define BM_SETCHECK 0x00F1
+#define BM_GETSTATE 0x00F2
+#define BM_SETSTATE 0x00F3
+#define BM_SETSTYLE 0x00F4
+#define BM_CLICK 0x00F5
+#define BM_GETIMAGE 0x00F6
+#define BM_SETIMAGE 0x00F7
+
+#define BST_UNCHECKED 0x0000
+#define BST_CHECKED 0x0001
+#define BST_INDETERMINATE 0x0002
+#define BST_PUSHED 0x0004
+#define BST_FOCUS 0x0008
+
+#define SS_LEFT __MSABI_LONG(0x00000000)
+#define SS_CENTER __MSABI_LONG(0x00000001)
+#define SS_RIGHT __MSABI_LONG(0x00000002)
+#define SS_ICON __MSABI_LONG(0x00000003)
+#define SS_BLACKRECT __MSABI_LONG(0x00000004)
+#define SS_GRAYRECT __MSABI_LONG(0x00000005)
+#define SS_WHITERECT __MSABI_LONG(0x00000006)
+#define SS_BLACKFRAME __MSABI_LONG(0x00000007)
+#define SS_GRAYFRAME __MSABI_LONG(0x00000008)
+#define SS_WHITEFRAME __MSABI_LONG(0x00000009)
+#define SS_USERITEM __MSABI_LONG(0x0000000A)
+#define SS_SIMPLE __MSABI_LONG(0x0000000B)
+#define SS_LEFTNOWORDWRAP __MSABI_LONG(0x0000000C)
+#define SS_OWNERDRAW __MSABI_LONG(0x0000000D)
+#define SS_BITMAP __MSABI_LONG(0x0000000E)
+#define SS_ENHMETAFILE __MSABI_LONG(0x0000000F)
+#define SS_ETCHEDHORZ __MSABI_LONG(0x00000010)
+#define SS_ETCHEDVERT __MSABI_LONG(0x00000011)
+#define SS_ETCHEDFRAME __MSABI_LONG(0x00000012)
+#define SS_TYPEMASK __MSABI_LONG(0x0000001F)
+#define SS_REALSIZECONTROL __MSABI_LONG(0x00000040)
+#define SS_NOPREFIX __MSABI_LONG(0x00000080)
+#define SS_NOTIFY __MSABI_LONG(0x00000100)
+#define SS_CENTERIMAGE __MSABI_LONG(0x00000200)
+#define SS_RIGHTJUST __MSABI_LONG(0x00000400)
+#define SS_REALSIZEIMAGE __MSABI_LONG(0x00000800)
+#define SS_SUNKEN __MSABI_LONG(0x00001000)
+#define SS_EDITCONTROL __MSABI_LONG(0x00002000)
+#define SS_ENDELLIPSIS __MSABI_LONG(0x00004000)
+#define SS_PATHELLIPSIS __MSABI_LONG(0x00008000)
+#define SS_WORDELLIPSIS __MSABI_LONG(0x0000C000)
+#define SS_ELLIPSISMASK __MSABI_LONG(0x0000C000)
+
+#ifndef NOWINMESSAGES
+
+#define STM_SETICON 0x0170
+#define STM_GETICON 0x0171
+#define STM_SETIMAGE 0x0172
+#define STM_GETIMAGE 0x0173
+#define STN_CLICKED 0
+#define STN_DBLCLK 1
+#define STN_ENABLE 2
+#define STN_DISABLE 3
+#define STM_MSGMAX 0x0174
+#endif
+
+#define WC_DIALOG (MAKEINTATOM(0x8002))
+
+#define DWL_MSGRESULT 0
+#define DWL_DLGPROC 4
+#define DWL_USER 8
+
+#ifdef _WIN64
+
+#undef DWL_MSGRESULT
+#undef DWL_DLGPROC
+#undef DWL_USER
+#endif
+
+#define DWLP_MSGRESULT 0
+#define DWLP_DLGPROC DWLP_MSGRESULT + sizeof(LRESULT)
+#define DWLP_USER DWLP_DLGPROC + sizeof(DLGPROC)
+
+#ifndef NOMSG
+
+#define IsDialogMessage __MINGW_NAME_AW(IsDialogMessage)
+
+  WINUSERAPI WINBOOL WINAPI IsDialogMessageA(HWND hDlg,LPMSG lpMsg);
+  WINUSERAPI WINBOOL WINAPI IsDialogMessageW(HWND hDlg,LPMSG lpMsg);
+#endif
+
+#define DlgDirList __MINGW_NAME_AW(DlgDirList)
+#define DlgDirSelectEx __MINGW_NAME_AW(DlgDirSelectEx)
+#define DlgDirListComboBox __MINGW_NAME_AW(DlgDirListComboBox)
+#define DlgDirSelectComboBoxEx __MINGW_NAME_AW(DlgDirSelectComboBoxEx)
+
+  WINUSERAPI WINBOOL WINAPI MapDialogRect(HWND hDlg,LPRECT lpRect);
+  WINUSERAPI int WINAPI DlgDirListA(HWND hDlg,LPSTR lpPathSpec,int nIDListBox,int nIDStaticPath,UINT uFileType);
+  WINUSERAPI int WINAPI DlgDirListW(HWND hDlg,LPWSTR lpPathSpec,int nIDListBox,int nIDStaticPath,UINT uFileType);
+
+#define DDL_READWRITE 0x0000
+#define DDL_READONLY 0x0001
+#define DDL_HIDDEN 0x0002
+#define DDL_SYSTEM 0x0004
+#define DDL_DIRECTORY 0x0010
+#define DDL_ARCHIVE 0x0020
+
+#define DDL_POSTMSGS 0x2000
+#define DDL_DRIVES 0x4000
+#define DDL_EXCLUSIVE 0x8000
+
+  WINUSERAPI WINBOOL WINAPI DlgDirSelectExA(HWND hwndDlg,LPSTR lpString,int chCount,int idListBox);
+  WINUSERAPI WINBOOL WINAPI DlgDirSelectExW(HWND hwndDlg,LPWSTR lpString,int chCount,int idListBox);
+  WINUSERAPI int WINAPI DlgDirListComboBoxA(HWND hDlg,LPSTR lpPathSpec,int nIDComboBox,int nIDStaticPath,UINT uFiletype);
+  WINUSERAPI int WINAPI DlgDirListComboBoxW(HWND hDlg,LPWSTR lpPathSpec,int nIDComboBox,int nIDStaticPath,UINT uFiletype);
+  WINUSERAPI WINBOOL WINAPI DlgDirSelectComboBoxExA(HWND hwndDlg,LPSTR lpString,int cchOut,int idComboBox);
+  WINUSERAPI WINBOOL WINAPI DlgDirSelectComboBoxExW(HWND hwndDlg,LPWSTR lpString,int cchOut,int idComboBox);
+
+#define DS_ABSALIGN __MSABI_LONG(0x01)
+#define DS_SYSMODAL __MSABI_LONG(0x02)
+#define DS_LOCALEDIT __MSABI_LONG(0x20)
+#define DS_SETFONT __MSABI_LONG(0x40)
+#define DS_MODALFRAME __MSABI_LONG(0x80)
+#define DS_NOIDLEMSG __MSABI_LONG(0x100)
+#define DS_SETFOREGROUND __MSABI_LONG(0x200)
+
+#define DS_3DLOOK __MSABI_LONG(0x0004)
+#define DS_FIXEDSYS __MSABI_LONG(0x0008)
+#define DS_NOFAILCREATE __MSABI_LONG(0x0010)
+#define DS_CONTROL __MSABI_LONG(0x0400)
+#define DS_CENTER __MSABI_LONG(0x0800)
+#define DS_CENTERMOUSE __MSABI_LONG(0x1000)
+#define DS_CONTEXTHELP __MSABI_LONG(0x2000)
+
+#define DS_SHELLFONT (DS_SETFONT | DS_FIXEDSYS)
+
+#if(_WIN32_WCE >= 0x0500)
+#define DS_USEPIXELS __MSABI_LONG(0x8000)
+#endif
+
+#define DM_GETDEFID (WM_USER+0)
+#define DM_SETDEFID (WM_USER+1)
+#define DM_REPOSITION (WM_USER+2)
+
+#define DC_HASDEFID 0x534B
+
+#define DLGC_WANTARROWS 0x0001
+#define DLGC_WANTTAB 0x0002
+#define DLGC_WANTALLKEYS 0x0004
+#define DLGC_WANTMESSAGE 0x0004
+#define DLGC_HASSETSEL 0x0008
+#define DLGC_DEFPUSHBUTTON 0x0010
+#define DLGC_UNDEFPUSHBUTTON 0x0020
+#define DLGC_RADIOBUTTON 0x0040
+#define DLGC_WANTCHARS 0x0080
+#define DLGC_STATIC 0x0100
+#define DLGC_BUTTON 0x2000
+
+#define LB_CTLCODE __MSABI_LONG(0)
+
+#define LB_OKAY 0
+#define LB_ERR (-1)
+#define LB_ERRSPACE (-2)
+
+#define LBN_ERRSPACE (-2)
+#define LBN_SELCHANGE 1
+#define LBN_DBLCLK 2
+#define LBN_SELCANCEL 3
+#define LBN_SETFOCUS 4
+#define LBN_KILLFOCUS 5
+
+#ifndef NOWINMESSAGES
+
+#define LB_ADDSTRING 0x0180
+#define LB_INSERTSTRING 0x0181
+#define LB_DELETESTRING 0x0182
+#define LB_SELITEMRANGEEX 0x0183
+#define LB_RESETCONTENT 0x0184
+#define LB_SETSEL 0x0185
+#define LB_SETCURSEL 0x0186
+#define LB_GETSEL 0x0187
+#define LB_GETCURSEL 0x0188
+#define LB_GETTEXT 0x0189
+#define LB_GETTEXTLEN 0x018A
+#define LB_GETCOUNT 0x018B
+#define LB_SELECTSTRING 0x018C
+#define LB_DIR 0x018D
+#define LB_GETTOPINDEX 0x018E
+#define LB_FINDSTRING 0x018F
+#define LB_GETSELCOUNT 0x0190
+#define LB_GETSELITEMS 0x0191
+#define LB_SETTABSTOPS 0x0192
+#define LB_GETHORIZONTALEXTENT 0x0193
+#define LB_SETHORIZONTALEXTENT 0x0194
+#define LB_SETCOLUMNWIDTH 0x0195
+#define LB_ADDFILE 0x0196
+#define LB_SETTOPINDEX 0x0197
+#define LB_GETITEMRECT 0x0198
+#define LB_GETITEMDATA 0x0199
+#define LB_SETITEMDATA 0x019A
+#define LB_SELITEMRANGE 0x019B
+#define LB_SETANCHORINDEX 0x019C
+#define LB_GETANCHORINDEX 0x019D
+#define LB_SETCARETINDEX 0x019E
+#define LB_GETCARETINDEX 0x019F
+#define LB_SETITEMHEIGHT 0x01A0
+#define LB_GETITEMHEIGHT 0x01A1
+#define LB_FINDSTRINGEXACT 0x01A2
+#define LB_SETLOCALE 0x01A5
+#define LB_GETLOCALE 0x01A6
+#define LB_SETCOUNT 0x01A7
+#define LB_INITSTORAGE 0x01A8
+#define LB_ITEMFROMPOINT 0x01A9
+#if(_WIN32_WCE >= 0x0400)
+#define LB_MULTIPLEADDSTRING 0x01B1
+#endif
+#define LB_GETLISTBOXINFO 0x01B2
+#define LB_MSGMAX 0x01B3
+#endif
+
+#ifndef NOWINSTYLES
+
+#define LBS_NOTIFY __MSABI_LONG(0x0001)
+#define LBS_SORT __MSABI_LONG(0x0002)
+#define LBS_NOREDRAW __MSABI_LONG(0x0004)
+#define LBS_MULTIPLESEL __MSABI_LONG(0x0008)
+#define LBS_OWNERDRAWFIXED __MSABI_LONG(0x0010)
+#define LBS_OWNERDRAWVARIABLE __MSABI_LONG(0x0020)
+#define LBS_HASSTRINGS __MSABI_LONG(0x0040)
+#define LBS_USETABSTOPS __MSABI_LONG(0x0080)
+#define LBS_NOINTEGRALHEIGHT __MSABI_LONG(0x0100)
+#define LBS_MULTICOLUMN __MSABI_LONG(0x0200)
+#define LBS_WANTKEYBOARDINPUT __MSABI_LONG(0x0400)
+#define LBS_EXTENDEDSEL __MSABI_LONG(0x0800)
+#define LBS_DISABLENOSCROLL __MSABI_LONG(0x1000)
+#define LBS_NODATA __MSABI_LONG(0x2000)
+#define LBS_NOSEL __MSABI_LONG(0x4000)
+#define LBS_COMBOBOX __MSABI_LONG(0x8000)
+
+#define LBS_STANDARD (LBS_NOTIFY | LBS_SORT | WS_VSCROLL | WS_BORDER)
+#endif
+
+#define CB_OKAY 0
+#define CB_ERR (-1)
+#define CB_ERRSPACE (-2)
+
+#define CBN_ERRSPACE (-1)
+#define CBN_SELCHANGE 1
+#define CBN_DBLCLK 2
+#define CBN_SETFOCUS 3
+#define CBN_KILLFOCUS 4
+#define CBN_EDITCHANGE 5
+#define CBN_EDITUPDATE 6
+#define CBN_DROPDOWN 7
+#define CBN_CLOSEUP 8
+#define CBN_SELENDOK 9
+#define CBN_SELENDCANCEL 10
+
+#ifndef NOWINSTYLES
+
+#define CBS_SIMPLE __MSABI_LONG(0x0001)
+#define CBS_DROPDOWN __MSABI_LONG(0x0002)
+#define CBS_DROPDOWNLIST __MSABI_LONG(0x0003)
+#define CBS_OWNERDRAWFIXED __MSABI_LONG(0x0010)
+#define CBS_OWNERDRAWVARIABLE __MSABI_LONG(0x0020)
+#define CBS_AUTOHSCROLL __MSABI_LONG(0x0040)
+#define CBS_OEMCONVERT __MSABI_LONG(0x0080)
+#define CBS_SORT __MSABI_LONG(0x0100)
+#define CBS_HASSTRINGS __MSABI_LONG(0x0200)
+#define CBS_NOINTEGRALHEIGHT __MSABI_LONG(0x0400)
+#define CBS_DISABLENOSCROLL __MSABI_LONG(0x0800)
+#define CBS_UPPERCASE __MSABI_LONG(0x2000)
+#define CBS_LOWERCASE __MSABI_LONG(0x4000)
+#endif
+
+#ifndef NOWINMESSAGES
+#define CB_GETEDITSEL 0x0140
+#define CB_LIMITTEXT 0x0141
+#define CB_SETEDITSEL 0x0142
+#define CB_ADDSTRING 0x0143
+#define CB_DELETESTRING 0x0144
+#define CB_DIR 0x0145
+#define CB_GETCOUNT 0x0146
+#define CB_GETCURSEL 0x0147
+#define CB_GETLBTEXT 0x0148
+#define CB_GETLBTEXTLEN 0x0149
+#define CB_INSERTSTRING 0x014A
+#define CB_RESETCONTENT 0x014B
+#define CB_FINDSTRING 0x014C
+#define CB_SELECTSTRING 0x014D
+#define CB_SETCURSEL 0x014E
+#define CB_SHOWDROPDOWN 0x014F
+#define CB_GETITEMDATA 0x0150
+#define CB_SETITEMDATA 0x0151
+#define CB_GETDROPPEDCONTROLRECT 0x0152
+#define CB_SETITEMHEIGHT 0x0153
+#define CB_GETITEMHEIGHT 0x0154
+#define CB_SETEXTENDEDUI 0x0155
+#define CB_GETEXTENDEDUI 0x0156
+#define CB_GETDROPPEDSTATE 0x0157
+#define CB_FINDSTRINGEXACT 0x0158
+#define CB_SETLOCALE 0x0159
+#define CB_GETLOCALE 0x015A
+#define CB_GETTOPINDEX 0x015b
+#define CB_SETTOPINDEX 0x015c
+#define CB_GETHORIZONTALEXTENT 0x015d
+#define CB_SETHORIZONTALEXTENT 0x015e
+#define CB_GETDROPPEDWIDTH 0x015f
+#define CB_SETDROPPEDWIDTH 0x0160
+#define CB_INITSTORAGE 0x0161
+#if(_WIN32_WCE >= 0x0400)
+#define CB_MULTIPLEADDSTRING 0x0163
+#endif
+#define CB_GETCOMBOBOXINFO 0x0164
+#define CB_MSGMAX 0x0165
+#endif
+
+#ifndef NOWINSTYLES
+
+#define SBS_HORZ __MSABI_LONG(0x0000)
+#define SBS_VERT __MSABI_LONG(0x0001)
+#define SBS_TOPALIGN __MSABI_LONG(0x0002)
+#define SBS_LEFTALIGN __MSABI_LONG(0x0002)
+#define SBS_BOTTOMALIGN __MSABI_LONG(0x0004)
+#define SBS_RIGHTALIGN __MSABI_LONG(0x0004)
+#define SBS_SIZEBOXTOPLEFTALIGN __MSABI_LONG(0x0002)
+#define SBS_SIZEBOXBOTTOMRIGHTALIGN __MSABI_LONG(0x0004)
+#define SBS_SIZEBOX __MSABI_LONG(0x0008)
+#define SBS_SIZEGRIP __MSABI_LONG(0x0010)
+#endif
+
+#ifndef NOWINMESSAGES
+#define SBM_SETPOS 0x00E0
+#define SBM_GETPOS 0x00E1
+#define SBM_SETRANGE 0x00E2
+#define SBM_SETRANGEREDRAW 0x00E6
+#define SBM_GETRANGE 0x00E3
+#define SBM_ENABLE_ARROWS 0x00E4
+#define SBM_SETSCROLLINFO 0x00E9
+#define SBM_GETSCROLLINFO 0x00EA
+#define SBM_GETSCROLLBARINFO 0x00EB
+
+#define SIF_RANGE 0x0001
+#define SIF_PAGE 0x0002
+#define SIF_POS 0x0004
+#define SIF_DISABLENOSCROLL 0x0008
+#define SIF_TRACKPOS 0x0010
+#define SIF_ALL (SIF_RANGE | SIF_PAGE | SIF_POS | SIF_TRACKPOS)
+
+  typedef struct tagSCROLLINFO {
+    UINT cbSize;
+    UINT fMask;
+    int nMin;
+    int nMax;
+    UINT nPage;
+    int nPos;
+    int nTrackPos;
+  } SCROLLINFO,*LPSCROLLINFO;
+  typedef SCROLLINFO CONST *LPCSCROLLINFO;
+
+  WINUSERAPI int WINAPI SetScrollInfo(HWND hwnd,int nBar,LPCSCROLLINFO lpsi,WINBOOL redraw);
+  WINUSERAPI WINBOOL WINAPI GetScrollInfo(HWND hwnd,int nBar,LPSCROLLINFO lpsi);
+#endif
+#endif
+
+#ifndef NOMDI
+
+#define MDIS_ALLCHILDSTYLES 0x0001
+
+#define MDITILE_VERTICAL 0x0000
+#define MDITILE_HORIZONTAL 0x0001
+#define MDITILE_SKIPDISABLED 0x0002
+#define MDITILE_ZORDER 0x0004
+
+  typedef struct tagMDICREATESTRUCTA {
+    LPCSTR szClass;
+    LPCSTR szTitle;
+    HANDLE hOwner;
+    int x;
+    int y;
+    int cx;
+    int cy;
+    DWORD style;
+    LPARAM lParam;
+  } MDICREATESTRUCTA,*LPMDICREATESTRUCTA;
+
+  typedef struct tagMDICREATESTRUCTW {
+    LPCWSTR szClass;
+    LPCWSTR szTitle;
+    HANDLE hOwner;
+    int x;
+    int y;
+    int cx;
+    int cy;
+    DWORD style;
+    LPARAM lParam;
+  } MDICREATESTRUCTW,*LPMDICREATESTRUCTW;
+
+  __MINGW_TYPEDEF_AW(MDICREATESTRUCT)
+  __MINGW_TYPEDEF_AW(LPMDICREATESTRUCT)
+
+  typedef struct tagCLIENTCREATESTRUCT {
+    HANDLE hWindowMenu;
+    UINT idFirstChild;
+  } CLIENTCREATESTRUCT,*LPCLIENTCREATESTRUCT;
+
+#define DefFrameProc __MINGW_NAME_AW(DefFrameProc)
+#define DefMDIChildProc __MINGW_NAME_AW(DefMDIChildProc)
+#define CreateMDIWindow __MINGW_NAME_AW(CreateMDIWindow)
+
+  WINUSERAPI LRESULT WINAPI DefFrameProcA(HWND hWnd,HWND hWndMDIClient,UINT uMsg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI LRESULT WINAPI DefFrameProcW(HWND hWnd,HWND hWndMDIClient,UINT uMsg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI LRESULT WINAPI DefMDIChildProcA(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
+  WINUSERAPI LRESULT WINAPI DefMDIChildProcW(HWND hWnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
+
+#ifndef NOMSG
+  WINUSERAPI WINBOOL WINAPI TranslateMDISysAccel(HWND hWndClient,LPMSG lpMsg);
+#endif
+
+  WINUSERAPI UINT WINAPI ArrangeIconicWindows(HWND hWnd);
+  WINUSERAPI HWND WINAPI CreateMDIWindowA(LPCSTR lpClassName,LPCSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HINSTANCE hInstance,LPARAM lParam);
+  WINUSERAPI HWND WINAPI CreateMDIWindowW(LPCWSTR lpClassName,LPCWSTR lpWindowName,DWORD dwStyle,int X,int Y,int nWidth,int nHeight,HWND hWndParent,HINSTANCE hInstance,LPARAM lParam);
+  WINUSERAPI WORD WINAPI TileWindows(HWND hwndParent,UINT wHow,CONST RECT *lpRect,UINT cKids,const HWND *lpKids);
+  WINUSERAPI WORD WINAPI CascadeWindows(HWND hwndParent,UINT wHow,CONST RECT *lpRect,UINT cKids,const HWND *lpKids);
+#endif
+#endif
+
+#ifndef NOHELP
+
+  typedef DWORD HELPPOLY;
+  typedef struct tagMULTIKEYHELPA {
+    DWORD mkSize;
+    CHAR mkKeylist;
+    CHAR szKeyphrase[1];
+  } MULTIKEYHELPA,*PMULTIKEYHELPA,*LPMULTIKEYHELPA;
+
+  typedef struct tagMULTIKEYHELPW {
+    DWORD mkSize;
+    WCHAR mkKeylist;
+    WCHAR szKeyphrase[1];
+  } MULTIKEYHELPW,*PMULTIKEYHELPW,*LPMULTIKEYHELPW;
+
+  __MINGW_TYPEDEF_AW(MULTIKEYHELP)
+  __MINGW_TYPEDEF_AW(PMULTIKEYHELP)
+  __MINGW_TYPEDEF_AW(LPMULTIKEYHELP)
+
+  typedef struct tagHELPWININFOA {
+    int wStructSize;
+    int x;
+    int y;
+    int dx;
+    int dy;
+    int wMax;
+    CHAR rgchMember[2];
+  } HELPWININFOA,*PHELPWININFOA,*LPHELPWININFOA;
+
+  typedef struct tagHELPWININFOW {
+    int wStructSize;
+    int x;
+    int y;
+    int dx;
+    int dy;
+    int wMax;
+    WCHAR rgchMember[2];
+  } HELPWININFOW,*PHELPWININFOW,*LPHELPWININFOW;
+
+  __MINGW_TYPEDEF_AW(HELPWININFO)
+  __MINGW_TYPEDEF_AW(PHELPWININFO)
+  __MINGW_TYPEDEF_AW(LPHELPWININFO)
+
+#define HELP_CONTEXT 0x0001
+#define HELP_QUIT 0x0002
+#define HELP_INDEX 0x0003
+#define HELP_CONTENTS 0x0003
+#define HELP_HELPONHELP 0x0004
+#define HELP_SETINDEX 0x0005
+#define HELP_SETCONTENTS 0x0005
+#define HELP_CONTEXTPOPUP 0x0008
+#define HELP_FORCEFILE 0x0009
+#define HELP_KEY 0x0101
+#define HELP_COMMAND 0x0102
+#define HELP_PARTIALKEY 0x0105
+#define HELP_MULTIKEY 0x0201
+#define HELP_SETWINPOS 0x0203
+#define HELP_CONTEXTMENU 0x000a
+#define HELP_FINDER 0x000b
+#define HELP_WM_HELP 0x000c
+#define HELP_SETPOPUP_POS 0x000d
+
+#define HELP_TCARD 0x8000
+#define HELP_TCARD_DATA 0x0010
+#define HELP_TCARD_OTHER_CALLER 0x0011
+
+#define IDH_NO_HELP 28440
+#define IDH_MISSING_CONTEXT 28441
+#define IDH_GENERIC_HELP_BUTTON 28442
+#define IDH_OK 28443
+#define IDH_CANCEL 28444
+#define IDH_HELP 28445
+
+#define WinHelp __MINGW_NAME_AW(WinHelp)
+
+  WINUSERAPI WINBOOL WINAPI WinHelpA(HWND hWndMain,LPCSTR lpszHelp,UINT uCommand,ULONG_PTR dwData);
+  WINUSERAPI WINBOOL WINAPI WinHelpW(HWND hWndMain,LPCWSTR lpszHelp,UINT uCommand,ULONG_PTR dwData);
+#endif
+
+#define GR_GDIOBJECTS 0
+#define GR_USEROBJECTS 1
+
+  WINUSERAPI DWORD WINAPI GetGuiResources(HANDLE hProcess,DWORD uiFlags);
+
+#ifndef NOSYSPARAMSINFO
+
+#define SPI_GETBEEP 0x0001
+#define SPI_SETBEEP 0x0002
+#define SPI_GETMOUSE 0x0003
+#define SPI_SETMOUSE 0x0004
+#define SPI_GETBORDER 0x0005
+#define SPI_SETBORDER 0x0006
+#define SPI_GETKEYBOARDSPEED 0x000A
+#define SPI_SETKEYBOARDSPEED 0x000B
+#define SPI_LANGDRIVER 0x000C
+#define SPI_ICONHORIZONTALSPACING 0x000D
+#define SPI_GETSCREENSAVETIMEOUT 0x000E
+#define SPI_SETSCREENSAVETIMEOUT 0x000F
+#define SPI_GETSCREENSAVEACTIVE 0x0010
+#define SPI_SETSCREENSAVEACTIVE 0x0011
+#define SPI_GETGRIDGRANULARITY 0x0012
+#define SPI_SETGRIDGRANULARITY 0x0013
+#define SPI_SETDESKWALLPAPER 0x0014
+#define SPI_SETDESKPATTERN 0x0015
+#define SPI_GETKEYBOARDDELAY 0x0016
+#define SPI_SETKEYBOARDDELAY 0x0017
+#define SPI_ICONVERTICALSPACING 0x0018
+#define SPI_GETICONTITLEWRAP 0x0019
+#define SPI_SETICONTITLEWRAP 0x001A
+#define SPI_GETMENUDROPALIGNMENT 0x001B
+#define SPI_SETMENUDROPALIGNMENT 0x001C
+#define SPI_SETDOUBLECLKWIDTH 0x001D
+#define SPI_SETDOUBLECLKHEIGHT 0x001E
+#define SPI_GETICONTITLELOGFONT 0x001F
+#define SPI_SETDOUBLECLICKTIME 0x0020
+#define SPI_SETMOUSEBUTTONSWAP 0x0021
+#define SPI_SETICONTITLELOGFONT 0x0022
+#define SPI_GETFASTTASKSWITCH 0x0023
+#define SPI_SETFASTTASKSWITCH 0x0024
+#define SPI_SETDRAGFULLWINDOWS 0x0025
+#define SPI_GETDRAGFULLWINDOWS 0x0026
+#define SPI_GETNONCLIENTMETRICS 0x0029
+#define SPI_SETNONCLIENTMETRICS 0x002A
+#define SPI_GETMINIMIZEDMETRICS 0x002B
+#define SPI_SETMINIMIZEDMETRICS 0x002C
+#define SPI_GETICONMETRICS 0x002D
+#define SPI_SETICONMETRICS 0x002E
+#define SPI_SETWORKAREA 0x002F
+#define SPI_GETWORKAREA 0x0030
+#define SPI_SETPENWINDOWS 0x0031
+
+#define SPI_GETHIGHCONTRAST 0x0042
+#define SPI_SETHIGHCONTRAST 0x0043
+#define SPI_GETKEYBOARDPREF 0x0044
+#define SPI_SETKEYBOARDPREF 0x0045
+#define SPI_GETSCREENREADER 0x0046
+#define SPI_SETSCREENREADER 0x0047
+#define SPI_GETANIMATION 0x0048
+#define SPI_SETANIMATION 0x0049
+#define SPI_GETFONTSMOOTHING 0x004A
+#define SPI_SETFONTSMOOTHING 0x004B
+#define SPI_SETDRAGWIDTH 0x004C
+#define SPI_SETDRAGHEIGHT 0x004D
+#define SPI_SETHANDHELD 0x004E
+#define SPI_GETLOWPOWERTIMEOUT 0x004F
+#define SPI_GETPOWEROFFTIMEOUT 0x0050
+#define SPI_SETLOWPOWERTIMEOUT 0x0051
+#define SPI_SETPOWEROFFTIMEOUT 0x0052
+#define SPI_GETLOWPOWERACTIVE 0x0053
+#define SPI_GETPOWEROFFACTIVE 0x0054
+#define SPI_SETLOWPOWERACTIVE 0x0055
+#define SPI_SETPOWEROFFACTIVE 0x0056
+#define SPI_SETCURSORS 0x0057
+#define SPI_SETICONS 0x0058
+#define SPI_GETDEFAULTINPUTLANG 0x0059
+#define SPI_SETDEFAULTINPUTLANG 0x005A
+#define SPI_SETLANGTOGGLE 0x005B
+#define SPI_GETWINDOWSEXTENSION 0x005C
+#define SPI_SETMOUSETRAILS 0x005D
+#define SPI_GETMOUSETRAILS 0x005E
+#define SPI_SETSCREENSAVERRUNNING 0x0061
+#define SPI_SCREENSAVERRUNNING SPI_SETSCREENSAVERRUNNING
+#define SPI_GETFILTERKEYS 0x0032
+#define SPI_SETFILTERKEYS 0x0033
+#define SPI_GETTOGGLEKEYS 0x0034
+#define SPI_SETTOGGLEKEYS 0x0035
+#define SPI_GETMOUSEKEYS 0x0036
+#define SPI_SETMOUSEKEYS 0x0037
+#define SPI_GETSHOWSOUNDS 0x0038
+#define SPI_SETSHOWSOUNDS 0x0039
+#define SPI_GETSTICKYKEYS 0x003A
+#define SPI_SETSTICKYKEYS 0x003B
+#define SPI_GETACCESSTIMEOUT 0x003C
+#define SPI_SETACCESSTIMEOUT 0x003D
+#define SPI_GETSERIALKEYS 0x003E
+#define SPI_SETSERIALKEYS 0x003F
+#define SPI_GETSOUNDSENTRY 0x0040
+#define SPI_SETSOUNDSENTRY 0x0041
+#define SPI_GETSNAPTODEFBUTTON 0x005F
+#define SPI_SETSNAPTODEFBUTTON 0x0060
+#define SPI_GETMOUSEHOVERWIDTH 0x0062
+#define SPI_SETMOUSEHOVERWIDTH 0x0063
+#define SPI_GETMOUSEHOVERHEIGHT 0x0064
+#define SPI_SETMOUSEHOVERHEIGHT 0x0065
+#define SPI_GETMOUSEHOVERTIME 0x0066
+#define SPI_SETMOUSEHOVERTIME 0x0067
+#define SPI_GETWHEELSCROLLLINES 0x0068
+#define SPI_SETWHEELSCROLLLINES 0x0069
+#define SPI_GETMENUSHOWDELAY 0x006A
+#define SPI_SETMENUSHOWDELAY 0x006B
+#define SPI_GETWHEELSCROLLCHARS 0x006C
+#define SPI_SETWHEELSCROLLCHARS 0x006D
+#define SPI_GETSHOWIMEUI 0x006E
+#define SPI_SETSHOWIMEUI 0x006F
+#define SPI_GETMOUSESPEED 0x0070
+#define SPI_SETMOUSESPEED 0x0071
+#define SPI_GETSCREENSAVERRUNNING 0x0072
+#define SPI_GETDESKWALLPAPER 0x0073
+#define SPI_GETAUDIODESCRIPTION 0x0074
+#define SPI_SETAUDIODESCRIPTION 0x0075
+#define SPI_GETSCREENSAVESECURE 0x0076
+#define SPI_SETSCREENSAVESECURE 0x0077
+#define SPI_GETHUNGAPPTIMEOUT 0x0078
+#define SPI_SETHUNGAPPTIMEOUT 0x0079
+#define SPI_GETWAITTOKILLTIMEOUT 0x007A
+#define SPI_SETWAITTOKILLTIMEOUT 0x007B
+#define SPI_GETWAITTOKILLSERVICETIMEOUT 0x007C
+#define SPI_SETWAITTOKILLSERVICETIMEOUT 0x007D
+#define SPI_GETMOUSEDOCKTHRESHOLD 0x007E
+#define SPI_SETMOUSEDOCKTHRESHOLD 0x007F
+#define SPI_GETPENDOCKTHRESHOLD 0x0080
+#define SPI_SETPENDOCKTHRESHOLD 0x0081
+#define SPI_GETWINARRANGING 0x0082
+#define SPI_SETWINARRANGING 0x0083
+#define SPI_GETMOUSEDRAGOUTTHRESHOLD 0x0084
+#define SPI_SETMOUSEDRAGOUTTHRESHOLD 0x0085
+#define SPI_GETPENDRAGOUTTHRESHOLD 0x0086
+#define SPI_SETPENDRAGOUTTHRESHOLD 0x0087
+#define SPI_GETMOUSESIDEMOVETHRESHOLD 0x0088
+#define SPI_SETMOUSESIDEMOVETHRESHOLD 0x0089
+#define SPI_GETPENSIDEMOVETHRESHOLD 0x008A
+#define SPI_SETPENSIDEMOVETHRESHOLD 0x008B
+#define SPI_GETDRAGFROMMAXIMIZE 0x008C
+#define SPI_SETDRAGFROMMAXIMIZE 0x008D
+#define SPI_GETSNAPSIZING 0x008E
+#define SPI_GETDOCKMOVING 0x0090
+#define SPI_SETDOCKMOVING 0x0091
+
+#if (_WIN32_WINNT >= 0x0600)
+#define SPI_GETAUDIODESCRIPTION 0x0074
+#define SPI_SETAUDIODESCRIPTION 0x0075
+#endif
+
+#define SPI_GETACTIVEWINDOWTRACKING 0x1000
+#define SPI_SETACTIVEWINDOWTRACKING 0x1001
+#define SPI_GETMENUANIMATION 0x1002
+#define SPI_SETMENUANIMATION 0x1003
+#define SPI_GETCOMBOBOXANIMATION 0x1004
+#define SPI_SETCOMBOBOXANIMATION 0x1005
+#define SPI_GETLISTBOXSMOOTHSCROLLING 0x1006
+#define SPI_SETLISTBOXSMOOTHSCROLLING 0x1007
+#define SPI_GETGRADIENTCAPTIONS 0x1008
+#define SPI_SETGRADIENTCAPTIONS 0x1009
+#define SPI_GETKEYBOARDCUES 0x100A
+#define SPI_SETKEYBOARDCUES 0x100B
+#define SPI_GETMENUUNDERLINES SPI_GETKEYBOARDCUES
+#define SPI_SETMENUUNDERLINES SPI_SETKEYBOARDCUES
+#define SPI_GETACTIVEWNDTRKZORDER 0x100C
+#define SPI_SETACTIVEWNDTRKZORDER 0x100D
+#define SPI_GETHOTTRACKING 0x100E
+#define SPI_SETHOTTRACKING 0x100F
+#define SPI_GETMENUFADE 0x1012
+#define SPI_SETMENUFADE 0x1013
+#define SPI_GETSELECTIONFADE 0x1014
+#define SPI_SETSELECTIONFADE 0x1015
+#define SPI_GETTOOLTIPANIMATION 0x1016
+#define SPI_SETTOOLTIPANIMATION 0x1017
+#define SPI_GETTOOLTIPFADE 0x1018
+#define SPI_SETTOOLTIPFADE 0x1019
+#define SPI_GETCURSORSHADOW 0x101A
+#define SPI_SETCURSORSHADOW 0x101B
+#define SPI_GETMOUSESONAR 0x101C
+#define SPI_SETMOUSESONAR 0x101D
+#define SPI_GETMOUSECLICKLOCK 0x101E
+#define SPI_SETMOUSECLICKLOCK 0x101F
+#define SPI_GETMOUSEVANISH 0x1020
+#define SPI_SETMOUSEVANISH 0x1021
+#define SPI_GETFLATMENU 0x1022
+#define SPI_SETFLATMENU 0x1023
+#define SPI_GETDROPSHADOW 0x1024
+#define SPI_SETDROPSHADOW 0x1025
+#define SPI_GETBLOCKSENDINPUTRESETS 0x1026
+#define SPI_SETBLOCKSENDINPUTRESETS 0x1027
+#define SPI_GETUIEFFECTS 0x103E
+#define SPI_SETUIEFFECTS 0x103F
+#define SPI_GETDISABLEOVERLAPPEDCONTENT 0x1040
+#define SPI_SETDISABLEOVERLAPPEDCONTENT 0x1041
+#define SPI_GETCLIENTAREAANIMATION 0x1042
+#define SPI_SETCLIENTAREAANIMATION 0x1043
+#define SPI_GETCLEARTYPE 0x1048
+#define SPI_SETCLEARTYPE 0x1049
+#define SPI_GETFOREGROUNDLOCKTIMEOUT 0x2000
+#define SPI_SETFOREGROUNDLOCKTIMEOUT 0x2001
+#define SPI_GETACTIVEWNDTRKTIMEOUT 0x2002
+#define SPI_SETACTIVEWNDTRKTIMEOUT 0x2003
+#define SPI_GETFOREGROUNDFLASHCOUNT 0x2004
+#define SPI_SETFOREGROUNDFLASHCOUNT 0x2005
+#define SPI_GETCARETWIDTH 0x2006
+#define SPI_SETCARETWIDTH 0x2007
+#define SPI_GETMOUSECLICKLOCKTIME 0x2008
+#define SPI_SETMOUSECLICKLOCKTIME 0x2009
+#define SPI_GETFONTSMOOTHINGTYPE 0x200A
+#define SPI_SETFONTSMOOTHINGTYPE 0x200B
+
+#define FE_FONTSMOOTHINGSTANDARD 0x0001
+#define FE_FONTSMOOTHINGCLEARTYPE 0x0002
+#define FE_FONTSMOOTHINGDOCKING 0x8000
+
+#define SPI_GETFONTSMOOTHINGCONTRAST 0x200C
+#define SPI_SETFONTSMOOTHINGCONTRAST 0x200D
+#define SPI_GETFOCUSBORDERWIDTH 0x200E
+#define SPI_SETFOCUSBORDERWIDTH 0x200F
+#define SPI_GETFOCUSBORDERHEIGHT 0x2010
+#define SPI_SETFOCUSBORDERHEIGHT 0x2011
+#define SPI_GETFONTSMOOTHINGORIENTATION 0x2012
+#define SPI_SETFONTSMOOTHINGORIENTATION 0x2013
+#define SPI_GETMESSAGEDURATION 0x2016
+#define SPI_SETMESSAGEDURATION 0x2017
+
+#define FE_FONTSMOOTHINGORIENTATIONBGR 0x0000
+#define FE_FONTSMOOTHINGORIENTATIONRGB 0x0001
+
+#define SPIF_UPDATEINIFILE 0x0001
+#define SPIF_SENDWININICHANGE 0x0002
+#define SPIF_SENDCHANGE SPIF_SENDWININICHANGE
+
+#define METRICS_USEDEFAULT -1
+#ifdef _WINGDI_
+#ifndef NOGDI
+  typedef struct tagNONCLIENTMETRICSA {
+    UINT cbSize;
+    int iBorderWidth;
+    int iScrollWidth;
+    int iScrollHeight;
+    int iCaptionWidth;
+    int iCaptionHeight;
+    LOGFONTA lfCaptionFont;
+    int iSmCaptionWidth;
+    int iSmCaptionHeight;
+    LOGFONTA lfSmCaptionFont;
+    int iMenuWidth;
+    int iMenuHeight;
+    LOGFONTA lfMenuFont;
+    LOGFONTA lfStatusFont;
+    LOGFONTA lfMessageFont;
+  } NONCLIENTMETRICSA,*PNONCLIENTMETRICSA,*LPNONCLIENTMETRICSA;
+
+  typedef struct tagNONCLIENTMETRICSW {
+    UINT cbSize;
+    int iBorderWidth;
+    int iScrollWidth;
+    int iScrollHeight;
+    int iCaptionWidth;
+    int iCaptionHeight;
+    LOGFONTW lfCaptionFont;
+    int iSmCaptionWidth;
+    int iSmCaptionHeight;
+    LOGFONTW lfSmCaptionFont;
+    int iMenuWidth;
+    int iMenuHeight;
+    LOGFONTW lfMenuFont;
+    LOGFONTW lfStatusFont;
+    LOGFONTW lfMessageFont;
+  } NONCLIENTMETRICSW,*PNONCLIENTMETRICSW,*LPNONCLIENTMETRICSW;
+
+  __MINGW_TYPEDEF_AW(NONCLIENTMETRICS)
+  __MINGW_TYPEDEF_AW(PNONCLIENTMETRICS)
+  __MINGW_TYPEDEF_AW(LPNONCLIENTMETRICS)
+#endif
+#endif
+
+#define ARW_BOTTOMLEFT __MSABI_LONG(0x0000)
+#define ARW_BOTTOMRIGHT __MSABI_LONG(0x0001)
+#define ARW_TOPLEFT __MSABI_LONG(0x0002)
+#define ARW_TOPRIGHT __MSABI_LONG(0x0003)
+#define ARW_STARTMASK __MSABI_LONG(0x0003)
+#define ARW_STARTRIGHT __MSABI_LONG(0x0001)
+#define ARW_STARTTOP __MSABI_LONG(0x0002)
+
+#define ARW_LEFT __MSABI_LONG(0x0000)
+#define ARW_RIGHT __MSABI_LONG(0x0000)
+#define ARW_UP __MSABI_LONG(0x0004)
+#define ARW_DOWN __MSABI_LONG(0x0004)
+#define ARW_HIDE __MSABI_LONG(0x0008)
+
+  typedef struct tagMINIMIZEDMETRICS {
+    UINT cbSize;
+    int iWidth;
+    int iHorzGap;
+    int iVertGap;
+    int iArrange;
+  } MINIMIZEDMETRICS,*PMINIMIZEDMETRICS,*LPMINIMIZEDMETRICS;
+
+#ifdef _WINGDI_
+#ifndef NOGDI
+  typedef struct tagICONMETRICSA {
+    UINT cbSize;
+    int iHorzSpacing;
+    int iVertSpacing;
+    int iTitleWrap;
+    LOGFONTA lfFont;
+  } ICONMETRICSA,*PICONMETRICSA,*LPICONMETRICSA;
+
+  typedef struct tagICONMETRICSW {
+    UINT cbSize;
+    int iHorzSpacing;
+    int iVertSpacing;
+    int iTitleWrap;
+    LOGFONTW lfFont;
+  } ICONMETRICSW,*PICONMETRICSW,*LPICONMETRICSW;
+
+  __MINGW_TYPEDEF_AW(ICONMETRICS)
+  __MINGW_TYPEDEF_AW(PICONMETRICS)
+  __MINGW_TYPEDEF_AW(LPICONMETRICS)
+#endif
+#endif
+
+  typedef struct tagANIMATIONINFO {
+    UINT cbSize;
+    int iMinAnimate;
+  } ANIMATIONINFO,*LPANIMATIONINFO;
+
+  typedef struct tagSERIALKEYSA {
+    UINT cbSize;
+    DWORD dwFlags;
+    LPSTR lpszActivePort;
+    LPSTR lpszPort;
+    UINT iBaudRate;
+    UINT iPortState;
+    UINT iActive;
+  } SERIALKEYSA,*LPSERIALKEYSA;
+
+  typedef struct tagSERIALKEYSW {
+    UINT cbSize;
+    DWORD dwFlags;
+    LPWSTR lpszActivePort;
+    LPWSTR lpszPort;
+    UINT iBaudRate;
+    UINT iPortState;
+    UINT iActive;
+  } SERIALKEYSW,*LPSERIALKEYSW;
+
+  __MINGW_TYPEDEF_AW(SERIALKEYS)
+  __MINGW_TYPEDEF_AW(LPSERIALKEYS)
+
+#define SERKF_SERIALKEYSON 0x00000001
+#define SERKF_AVAILABLE 0x00000002
+#define SERKF_INDICATOR 0x00000004
+
+  typedef struct tagHIGHCONTRASTA {
+    UINT cbSize;
+    DWORD dwFlags;
+    LPSTR lpszDefaultScheme;
+  } HIGHCONTRASTA,*LPHIGHCONTRASTA;
+
+  typedef struct tagHIGHCONTRASTW {
+    UINT cbSize;
+    DWORD dwFlags;
+    LPWSTR lpszDefaultScheme;
+  } HIGHCONTRASTW,*LPHIGHCONTRASTW;
+
+  __MINGW_TYPEDEF_AW(HIGHCONTRAST)
+  __MINGW_TYPEDEF_AW(LPHIGHCONTRAST)
+
+#define HCF_HIGHCONTRASTON 0x00000001
+#define HCF_AVAILABLE 0x00000002
+#define HCF_HOTKEYACTIVE 0x00000004
+#define HCF_CONFIRMHOTKEY 0x00000008
+#define HCF_HOTKEYSOUND 0x00000010
+#define HCF_INDICATOR 0x00000020
+#define HCF_HOTKEYAVAILABLE 0x00000040
+#define HCF_LOGONDESKTOP 0x00000100
+#define HCF_DEFAULTDESKTOP 0x00000200
+
+#define CDS_UPDATEREGISTRY 0x00000001
+#define CDS_TEST 0x00000002
+#define CDS_FULLSCREEN 0x00000004
+#define CDS_GLOBAL 0x00000008
+#define CDS_SET_PRIMARY 0x00000010
+#define CDS_VIDEOPARAMETERS 0x00000020
+#define CDS_RESET 0x40000000
+#define CDS_NORESET 0x10000000
+
+#include <tvout.h>
+
+#define DISP_CHANGE_SUCCESSFUL 0
+#define DISP_CHANGE_RESTART 1
+#define DISP_CHANGE_FAILED -1
+#define DISP_CHANGE_BADMODE -2
+#define DISP_CHANGE_NOTUPDATED -3
+#define DISP_CHANGE_BADFLAGS -4
+#define DISP_CHANGE_BADPARAM -5
+#define DISP_CHANGE_BADDUALVIEW -6
+
+#ifdef _WINGDI_
+#ifndef NOGDI
+
+#define ChangeDisplaySettings __MINGW_NAME_AW(ChangeDisplaySettings)
+#define ChangeDisplaySettingsEx __MINGW_NAME_AW(ChangeDisplaySettingsEx)
+#define EnumDisplaySettings __MINGW_NAME_AW(EnumDisplaySettings)
+#define EnumDisplaySettingsEx __MINGW_NAME_AW(EnumDisplaySettingsEx)
+#define EnumDisplayDevices __MINGW_NAME_AW(EnumDisplayDevices)
+
+  WINUSERAPI LONG WINAPI ChangeDisplaySettingsA(LPDEVMODEA lpDevMode,DWORD dwFlags);
+  WINUSERAPI LONG WINAPI ChangeDisplaySettingsW(LPDEVMODEW lpDevMode,DWORD dwFlags);
+  WINUSERAPI LONG WINAPI ChangeDisplaySettingsExA(LPCSTR lpszDeviceName,LPDEVMODEA lpDevMode,HWND hwnd,DWORD dwflags,LPVOID lParam);
+  WINUSERAPI LONG WINAPI ChangeDisplaySettingsExW(LPCWSTR lpszDeviceName,LPDEVMODEW lpDevMode,HWND hwnd,DWORD dwflags,LPVOID lParam);
+
+#define ENUM_CURRENT_SETTINGS ((DWORD)-1)
+#define ENUM_REGISTRY_SETTINGS ((DWORD)-2)
+
+  WINUSERAPI WINBOOL WINAPI EnumDisplaySettingsA(LPCSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEA lpDevMode);
+  WINUSERAPI WINBOOL WINAPI EnumDisplaySettingsW(LPCWSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEW lpDevMode);
+  WINUSERAPI WINBOOL WINAPI EnumDisplaySettingsExA(LPCSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEA lpDevMode,DWORD dwFlags);
+  WINUSERAPI WINBOOL WINAPI EnumDisplaySettingsExW(LPCWSTR lpszDeviceName,DWORD iModeNum,LPDEVMODEW lpDevMode,DWORD dwFlags);
+
+#define EDS_RAWMODE 0x00000002
+
+  WINUSERAPI WINBOOL WINAPI EnumDisplayDevicesA(LPCSTR lpDevice,DWORD iDevNum,PDISPLAY_DEVICEA lpDisplayDevice,DWORD dwFlags);
+  WINUSERAPI WINBOOL WINAPI EnumDisplayDevicesW(LPCWSTR lpDevice,DWORD iDevNum,PDISPLAY_DEVICEW lpDisplayDevice,DWORD dwFlags);
+#endif
+#endif
+
+#define SystemParametersInfo __MINGW_NAME_AW(SystemParametersInfo)
+
+  WINUSERAPI WINBOOL WINAPI SystemParametersInfoA(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinIni);
+  WINUSERAPI WINBOOL WINAPI SystemParametersInfoW(UINT uiAction,UINT uiParam,PVOID pvParam,UINT fWinIni);
+#endif
+
+  typedef struct tagFILTERKEYS {
+    UINT cbSize;
+    DWORD dwFlags;
+    DWORD iWaitMSec;
+    DWORD iDelayMSec;
+    DWORD iRepeatMSec;
+    DWORD iBounceMSec;
+  } FILTERKEYS,*LPFILTERKEYS;
+
+#define FKF_FILTERKEYSON 0x00000001
+#define FKF_AVAILABLE 0x00000002
+#define FKF_HOTKEYACTIVE 0x00000004
+#define FKF_CONFIRMHOTKEY 0x00000008
+#define FKF_HOTKEYSOUND 0x00000010
+#define FKF_INDICATOR 0x00000020
+#define FKF_CLICKON 0x00000040
+
+  typedef struct tagSTICKYKEYS {
+    UINT cbSize;
+    DWORD dwFlags;
+  } STICKYKEYS,*LPSTICKYKEYS;
+
+#define SKF_STICKYKEYSON 0x00000001
+#define SKF_AVAILABLE 0x00000002
+#define SKF_HOTKEYACTIVE 0x00000004
+#define SKF_CONFIRMHOTKEY 0x00000008
+#define SKF_HOTKEYSOUND 0x00000010
+#define SKF_INDICATOR 0x00000020
+#define SKF_AUDIBLEFEEDBACK 0x00000040
+#define SKF_TRISTATE 0x00000080
+#define SKF_TWOKEYSOFF 0x00000100
+#define SKF_LALTLATCHED 0x10000000
+#define SKF_LCTLLATCHED 0x04000000
+#define SKF_LSHIFTLATCHED 0x01000000
+#define SKF_RALTLATCHED 0x20000000
+#define SKF_RCTLLATCHED 0x08000000
+#define SKF_RSHIFTLATCHED 0x02000000
+#define SKF_LWINLATCHED 0x40000000
+#define SKF_RWINLATCHED 0x80000000
+#define SKF_LALTLOCKED 0x00100000
+#define SKF_LCTLLOCKED 0x00040000
+#define SKF_LSHIFTLOCKED 0x00010000
+#define SKF_RALTLOCKED 0x00200000
+#define SKF_RCTLLOCKED 0x00080000
+#define SKF_RSHIFTLOCKED 0x00020000
+#define SKF_LWINLOCKED 0x00400000
+#define SKF_RWINLOCKED 0x00800000
+
+  typedef struct tagMOUSEKEYS {
+    UINT cbSize;
+    DWORD dwFlags;
+    DWORD iMaxSpeed;
+    DWORD iTimeToMaxSpeed;
+    DWORD iCtrlSpeed;
+    DWORD dwReserved1;
+    DWORD dwReserved2;
+  } MOUSEKEYS,*LPMOUSEKEYS;
+
+#define MKF_MOUSEKEYSON 0x00000001
+#define MKF_AVAILABLE 0x00000002
+#define MKF_HOTKEYACTIVE 0x00000004
+#define MKF_CONFIRMHOTKEY 0x00000008
+#define MKF_HOTKEYSOUND 0x00000010
+#define MKF_INDICATOR 0x00000020
+#define MKF_MODIFIERS 0x00000040
+#define MKF_REPLACENUMBERS 0x00000080
+#define MKF_LEFTBUTTONSEL 0x10000000
+#define MKF_RIGHTBUTTONSEL 0x20000000
+#define MKF_LEFTBUTTONDOWN 0x01000000
+#define MKF_RIGHTBUTTONDOWN 0x02000000
+#define MKF_MOUSEMODE 0x80000000
+
+  typedef struct tagACCESSTIMEOUT {
+    UINT cbSize;
+    DWORD dwFlags;
+    DWORD iTimeOutMSec;
+  } ACCESSTIMEOUT,*LPACCESSTIMEOUT;
+
+#define ATF_TIMEOUTON 0x00000001
+#define ATF_ONOFFFEEDBACK 0x00000002
+
+#define SSGF_NONE 0
+#define SSGF_DISPLAY 3
+
+#define SSTF_NONE 0
+#define SSTF_CHARS 1
+#define SSTF_BORDER 2
+#define SSTF_DISPLAY 3
+
+#define SSWF_NONE 0
+#define SSWF_TITLE 1
+#define SSWF_WINDOW 2
+#define SSWF_DISPLAY 3
+#define SSWF_CUSTOM 4
+
+  typedef struct tagSOUNDSENTRYA {
+    UINT cbSize;
+    DWORD dwFlags;
+    DWORD iFSTextEffect;
+    DWORD iFSTextEffectMSec;
+    DWORD iFSTextEffectColorBits;
+    DWORD iFSGrafEffect;
+    DWORD iFSGrafEffectMSec;
+    DWORD iFSGrafEffectColor;
+    DWORD iWindowsEffect;
+    DWORD iWindowsEffectMSec;
+    LPSTR lpszWindowsEffectDLL;
+    DWORD iWindowsEffectOrdinal;
+  } SOUNDSENTRYA,*LPSOUNDSENTRYA;
+
+  typedef struct tagSOUNDSENTRYW {
+    UINT cbSize;
+    DWORD dwFlags;
+    DWORD iFSTextEffect;
+    DWORD iFSTextEffectMSec;
+    DWORD iFSTextEffectColorBits;
+    DWORD iFSGrafEffect;
+    DWORD iFSGrafEffectMSec;
+    DWORD iFSGrafEffectColor;
+    DWORD iWindowsEffect;
+    DWORD iWindowsEffectMSec;
+    LPWSTR lpszWindowsEffectDLL;
+    DWORD iWindowsEffectOrdinal;
+  } SOUNDSENTRYW,*LPSOUNDSENTRYW;
+
+  __MINGW_TYPEDEF_AW(SOUNDSENTRY)
+  __MINGW_TYPEDEF_AW(LPSOUNDSENTRY)
+
+#define SSF_SOUNDSENTRYON 0x00000001
+#define SSF_AVAILABLE 0x00000002
+#define SSF_INDICATOR 0x00000004
+
+  typedef struct tagTOGGLEKEYS {
+    UINT cbSize;
+    DWORD dwFlags;
+  } TOGGLEKEYS,*LPTOGGLEKEYS;
+
+#define TKF_TOGGLEKEYSON 0x00000001
+#define TKF_AVAILABLE 0x00000002
+#define TKF_HOTKEYACTIVE 0x00000004
+#define TKF_CONFIRMHOTKEY 0x00000008
+#define TKF_HOTKEYSOUND 0x00000010
+#define TKF_INDICATOR 0x00000020
+
+  WINUSERAPI VOID WINAPI SetDebugErrorLevel(DWORD dwLevel);
+
+#define SLE_ERROR 0x00000001
+#define SLE_MINORERROR 0x00000002
+#define SLE_WARNING 0x00000003
+
+  WINUSERAPI VOID WINAPI SetLastErrorEx(DWORD dwErrCode,DWORD dwType);
+  WINUSERAPI int WINAPI InternalGetWindowText(HWND hWnd,LPWSTR pString,int cchMaxCount);
+
+#ifdef WINNT
+  WINUSERAPI WINBOOL WINAPI EndTask(HWND hWnd,WINBOOL fShutDown,WINBOOL fForce);
+#endif
+
+#define MONITOR_DEFAULTTONULL 0x00000000
+#define MONITOR_DEFAULTTOPRIMARY 0x00000001
+#define MONITOR_DEFAULTTONEAREST 0x00000002
+
+  WINUSERAPI HMONITOR WINAPI MonitorFromPoint(POINT pt,DWORD dwFlags);
+  WINUSERAPI HMONITOR WINAPI MonitorFromRect(LPCRECT lprc,DWORD dwFlags);
+  WINUSERAPI HMONITOR WINAPI MonitorFromWindow(HWND hwnd,DWORD dwFlags);
+
+#define MONITORINFOF_PRIMARY 0x00000001
+
+#ifndef CCHDEVICENAME
+#define CCHDEVICENAME 32
+#endif
+
+  typedef struct tagMONITORINFO {
+    DWORD cbSize;
+    RECT rcMonitor;
+    RECT rcWork;
+    DWORD dwFlags;
+  } MONITORINFO,*LPMONITORINFO;
+
+#ifdef __cplusplus
+  typedef struct tagMONITORINFOEXA : public tagMONITORINFO {
+    CHAR szDevice[CCHDEVICENAME];
+  } MONITORINFOEXA,*LPMONITORINFOEXA;
+
+  typedef struct tagMONITORINFOEXW : public tagMONITORINFO {
+    WCHAR szDevice[CCHDEVICENAME];
+  } MONITORINFOEXW,*LPMONITORINFOEXW;
+
+  __MINGW_TYPEDEF_AW(MONITORINFOEX)
+  __MINGW_TYPEDEF_AW(LPMONITORINFOEX)
+#else
+  typedef struct tagMONITORINFOEXA {
+    __C89_NAMELESS struct {
+      DWORD cbSize;
+      RECT rcMonitor;
+      RECT rcWork;
+      DWORD dwFlags;
+    };
+    CHAR szDevice[CCHDEVICENAME];
+  } MONITORINFOEXA,*LPMONITORINFOEXA;
+
+  typedef struct tagMONITORINFOEXW {
+    __C89_NAMELESS struct {
+      DWORD cbSize;
+      RECT rcMonitor;
+      RECT rcWork;
+      DWORD dwFlags;
+    };
+    WCHAR szDevice[CCHDEVICENAME];
+  } MONITORINFOEXW,*LPMONITORINFOEXW;
+
+  __MINGW_TYPEDEF_AW(MONITORINFOEX)
+  __MINGW_TYPEDEF_AW(LPMONITORINFOEX)
+#endif
+
+#define GetMonitorInfo __MINGW_NAME_AW(GetMonitorInfo)
+
+  WINUSERAPI WINBOOL WINAPI GetMonitorInfoA(HMONITOR hMonitor,LPMONITORINFO lpmi);
+  WINUSERAPI WINBOOL WINAPI GetMonitorInfoW(HMONITOR hMonitor,LPMONITORINFO lpmi);
+
+  typedef WINBOOL (CALLBACK *MONITORENUMPROC)(HMONITOR,HDC,LPRECT,LPARAM);
+
+  WINUSERAPI WINBOOL WINAPI EnumDisplayMonitors(HDC hdc,LPCRECT lprcClip,MONITORENUMPROC lpfnEnum,LPARAM dwData);
+
+#ifndef NOWINABLE
+  WINUSERAPI VOID WINAPI NotifyWinEvent(DWORD event,HWND hwnd,LONG idObject,LONG idChild);
+
+  typedef VOID (CALLBACK *WINEVENTPROC)(HWINEVENTHOOK hWinEventHook,DWORD event,HWND hwnd,LONG idObject,LONG idChild,DWORD idEventThread,DWORD dwmsEventTime);
+
+  WINUSERAPI HWINEVENTHOOK WINAPI SetWinEventHook(DWORD eventMin,DWORD eventMax,HMODULE hmodWinEventProc,WINEVENTPROC pfnWinEventProc,DWORD idProcess,DWORD idThread,DWORD dwFlags);
+  WINUSERAPI WINBOOL WINAPI IsWinEventHookInstalled(DWORD event);
+
+#define WINEVENT_OUTOFCONTEXT 0x0000
+#define WINEVENT_SKIPOWNTHREAD 0x0001
+#define WINEVENT_SKIPOWNPROCESS 0x0002
+#define WINEVENT_INCONTEXT 0x0004
+
+  WINUSERAPI WINBOOL WINAPI UnhookWinEvent(HWINEVENTHOOK hWinEventHook);
+
+#define CHILDID_SELF 0
+#define INDEXID_OBJECT 0
+#define INDEXID_CONTAINER 0
+
+#define OBJID_WINDOW ((LONG)0x00000000)
+#define OBJID_SYSMENU ((LONG)0xFFFFFFFF)
+#define OBJID_TITLEBAR ((LONG)0xFFFFFFFE)
+#define OBJID_MENU ((LONG)0xFFFFFFFD)
+#define OBJID_CLIENT ((LONG)0xFFFFFFFC)
+#define OBJID_VSCROLL ((LONG)0xFFFFFFFB)
+#define OBJID_HSCROLL ((LONG)0xFFFFFFFA)
+#define OBJID_SIZEGRIP ((LONG)0xFFFFFFF9)
+#define OBJID_CARET ((LONG)0xFFFFFFF8)
+#define OBJID_CURSOR ((LONG)0xFFFFFFF7)
+#define OBJID_ALERT ((LONG)0xFFFFFFF6)
+#define OBJID_SOUND ((LONG)0xFFFFFFF5)
+#define OBJID_QUERYCLASSNAMEIDX ((LONG)0xFFFFFFF4)
+#define OBJID_NATIVEOM ((LONG)0xFFFFFFF0)
+
+#define EVENT_MIN 0x00000001
+#define EVENT_MAX 0x7FFFFFFF
+
+#define EVENT_SYSTEM_SOUND 0x0001
+#define EVENT_SYSTEM_ALERT 0x0002
+#define EVENT_SYSTEM_FOREGROUND 0x0003
+#define EVENT_SYSTEM_MENUSTART 0x0004
+#define EVENT_SYSTEM_MENUEND 0x0005
+#define EVENT_SYSTEM_MENUPOPUPSTART 0x0006
+#define EVENT_SYSTEM_MENUPOPUPEND 0x0007
+#define EVENT_SYSTEM_CAPTURESTART 0x0008
+#define EVENT_SYSTEM_CAPTUREEND 0x0009
+#define EVENT_SYSTEM_MOVESIZESTART 0x000A
+#define EVENT_SYSTEM_MOVESIZEEND 0x000B
+#define EVENT_SYSTEM_CONTEXTHELPSTART 0x000C
+#define EVENT_SYSTEM_CONTEXTHELPEND 0x000D
+#define EVENT_SYSTEM_DRAGDROPSTART 0x000E
+#define EVENT_SYSTEM_DRAGDROPEND 0x000F
+#define EVENT_SYSTEM_DIALOGSTART 0x0010
+#define EVENT_SYSTEM_DIALOGEND 0x0011
+#define EVENT_SYSTEM_SCROLLINGSTART 0x0012
+#define EVENT_SYSTEM_SCROLLINGEND 0x0013
+#define EVENT_SYSTEM_SWITCHSTART 0x0014
+#define EVENT_SYSTEM_SWITCHEND 0x0015
+#define EVENT_SYSTEM_MINIMIZESTART 0x0016
+#define EVENT_SYSTEM_MINIMIZEEND 0x0017
+
+#define EVENT_CONSOLE_CARET 0x4001
+#define EVENT_CONSOLE_UPDATE_REGION 0x4002
+#define EVENT_CONSOLE_UPDATE_SIMPLE 0x4003
+#define EVENT_CONSOLE_UPDATE_SCROLL 0x4004
+#define EVENT_CONSOLE_LAYOUT 0x4005
+#define EVENT_CONSOLE_START_APPLICATION 0x4006
+#define EVENT_CONSOLE_END_APPLICATION 0x4007
+
+#define CONSOLE_APPLICATION_16BIT 0x0001
+
+#define CONSOLE_CARET_SELECTION 0x0001
+#define CONSOLE_CARET_VISIBLE 0x0002
+
+#define EVENT_OBJECT_CREATE 0x8000
+#define EVENT_OBJECT_DESTROY 0x8001
+#define EVENT_OBJECT_SHOW 0x8002
+#define EVENT_OBJECT_HIDE 0x8003
+#define EVENT_OBJECT_REORDER 0x8004
+
+#define EVENT_OBJECT_FOCUS 0x8005
+#define EVENT_OBJECT_SELECTION 0x8006
+#define EVENT_OBJECT_SELECTIONADD 0x8007
+#define EVENT_OBJECT_SELECTIONREMOVE 0x8008
+#define EVENT_OBJECT_SELECTIONWITHIN 0x8009
+
+#define EVENT_OBJECT_STATECHANGE 0x800A
+
+#define EVENT_OBJECT_LOCATIONCHANGE 0x800B
+
+#define EVENT_OBJECT_NAMECHANGE 0x800C
+#define EVENT_OBJECT_DESCRIPTIONCHANGE 0x800D
+#define EVENT_OBJECT_VALUECHANGE 0x800E
+#define EVENT_OBJECT_PARENTCHANGE 0x800F
+#define EVENT_OBJECT_HELPCHANGE 0x8010
+#define EVENT_OBJECT_DEFACTIONCHANGE 0x8011
+#define EVENT_OBJECT_ACCELERATORCHANGE 0x8012
+
+#define SOUND_SYSTEM_STARTUP 1
+#define SOUND_SYSTEM_SHUTDOWN 2
+#define SOUND_SYSTEM_BEEP 3
+#define SOUND_SYSTEM_ERROR 4
+#define SOUND_SYSTEM_QUESTION 5
+#define SOUND_SYSTEM_WARNING 6
+#define SOUND_SYSTEM_INFORMATION 7
+#define SOUND_SYSTEM_MAXIMIZE 8
+#define SOUND_SYSTEM_MINIMIZE 9
+#define SOUND_SYSTEM_RESTOREUP 10
+#define SOUND_SYSTEM_RESTOREDOWN 11
+#define SOUND_SYSTEM_APPSTART 12
+#define SOUND_SYSTEM_FAULT 13
+#define SOUND_SYSTEM_APPEND 14
+#define SOUND_SYSTEM_MENUCOMMAND 15
+#define SOUND_SYSTEM_MENUPOPUP 16
+#define CSOUND_SYSTEM 16
+
+#define ALERT_SYSTEM_INFORMATIONAL 1
+#define ALERT_SYSTEM_WARNING 2
+#define ALERT_SYSTEM_ERROR 3
+#define ALERT_SYSTEM_QUERY 4
+#define ALERT_SYSTEM_CRITICAL 5
+#define CALERT_SYSTEM 6
+
+  typedef struct tagGUITHREADINFO {
+    DWORD cbSize;
+    DWORD flags;
+    HWND hwndActive;
+    HWND hwndFocus;
+    HWND hwndCapture;
+    HWND hwndMenuOwner;
+    HWND hwndMoveSize;
+    HWND hwndCaret;
+    RECT rcCaret;
+  } GUITHREADINFO,*PGUITHREADINFO,*LPGUITHREADINFO;
+
+#define GUI_CARETBLINKING 0x00000001
+#define GUI_INMOVESIZE 0x00000002
+#define GUI_INMENUMODE 0x00000004
+#define GUI_SYSTEMMENUMODE 0x00000008
+#define GUI_POPUPMENUMODE 0x00000010
+#define GUI_16BITTASK 0x00000020
+
+#define GetWindowModuleFileName __MINGW_NAME_AW(GetWindowModuleFileName)
+
+  WINUSERAPI WINBOOL WINAPI GetGUIThreadInfo(DWORD idThread,PGUITHREADINFO pgui);
+  WINUSERAPI UINT WINAPI GetWindowModuleFileNameA(HWND hwnd,LPSTR pszFileName,UINT cchFileNameMax);
+  WINUSERAPI UINT WINAPI GetWindowModuleFileNameW(HWND hwnd,LPWSTR pszFileName,UINT cchFileNameMax);
+
+#ifndef NO_STATE_FLAGS
+#define STATE_SYSTEM_UNAVAILABLE 0x00000001
+#define STATE_SYSTEM_SELECTED 0x00000002
+#define STATE_SYSTEM_FOCUSED 0x00000004
+#define STATE_SYSTEM_PRESSED 0x00000008
+#define STATE_SYSTEM_CHECKED 0x00000010
+#define STATE_SYSTEM_MIXED 0x00000020
+#define STATE_SYSTEM_INDETERMINATE STATE_SYSTEM_MIXED
+#define STATE_SYSTEM_READONLY 0x00000040
+#define STATE_SYSTEM_HOTTRACKED 0x00000080
+#define STATE_SYSTEM_DEFAULT 0x00000100
+#define STATE_SYSTEM_EXPANDED 0x00000200
+#define STATE_SYSTEM_COLLAPSED 0x00000400
+#define STATE_SYSTEM_BUSY 0x00000800
+#define STATE_SYSTEM_FLOATING 0x00001000
+#define STATE_SYSTEM_MARQUEED 0x00002000
+#define STATE_SYSTEM_ANIMATED 0x00004000
+#define STATE_SYSTEM_INVISIBLE 0x00008000
+#define STATE_SYSTEM_OFFSCREEN 0x00010000
+#define STATE_SYSTEM_SIZEABLE 0x00020000
+#define STATE_SYSTEM_MOVEABLE 0x00040000
+#define STATE_SYSTEM_SELFVOICING 0x00080000
+#define STATE_SYSTEM_FOCUSABLE 0x00100000
+#define STATE_SYSTEM_SELECTABLE 0x00200000
+#define STATE_SYSTEM_LINKED 0x00400000
+#define STATE_SYSTEM_TRAVERSED 0x00800000
+#define STATE_SYSTEM_MULTISELECTABLE 0x01000000
+#define STATE_SYSTEM_EXTSELECTABLE 0x02000000
+#define STATE_SYSTEM_ALERT_LOW 0x04000000
+#define STATE_SYSTEM_ALERT_MEDIUM 0x08000000
+#define STATE_SYSTEM_ALERT_HIGH 0x10000000
+#define STATE_SYSTEM_PROTECTED 0x20000000
+#define STATE_SYSTEM_VALID 0x3FFFFFFF
+#endif
+
+#define CCHILDREN_TITLEBAR 5
+#define CCHILDREN_SCROLLBAR 5
+
+  typedef struct tagCURSORINFO {
+    DWORD cbSize;
+    DWORD flags;
+    HCURSOR hCursor;
+    POINT ptScreenPos;
+  } CURSORINFO,*PCURSORINFO,*LPCURSORINFO;
+
+#define CURSOR_SHOWING 0x00000001
+
+  WINUSERAPI WINBOOL WINAPI GetCursorInfo(PCURSORINFO pci);
+
+  typedef struct tagWINDOWINFO {
+    DWORD cbSize;
+    RECT rcWindow;
+    RECT rcClient;
+    DWORD dwStyle;
+    DWORD dwExStyle;
+    DWORD dwWindowStatus;
+    UINT cxWindowBorders;
+    UINT cyWindowBorders;
+    ATOM atomWindowType;
+    WORD wCreatorVersion;
+  } WINDOWINFO,*PWINDOWINFO,*LPWINDOWINFO;
+
+#define WS_ACTIVECAPTION 0x0001
+
+  WINUSERAPI WINBOOL WINAPI GetWindowInfo(HWND hwnd,PWINDOWINFO pwi);
+
+  typedef struct tagTITLEBARINFO {
+    DWORD cbSize;
+    RECT rcTitleBar;
+    DWORD rgstate[CCHILDREN_TITLEBAR + 1];
+  } TITLEBARINFO,*PTITLEBARINFO,*LPTITLEBARINFO;
+
+  WINUSERAPI WINBOOL WINAPI GetTitleBarInfo(HWND hwnd,PTITLEBARINFO pti);
+
+  typedef struct tagMENUBARINFO {
+    DWORD cbSize;
+    RECT rcBar;
+    HMENU hMenu;
+    HWND hwndMenu;
+    WINBOOL fBarFocused:1;
+    WINBOOL fFocused:1;
+  } MENUBARINFO,*PMENUBARINFO,*LPMENUBARINFO;
+
+  WINUSERAPI WINBOOL WINAPI GetMenuBarInfo(HWND hwnd,LONG idObject,LONG idItem,PMENUBARINFO pmbi);
+
+  typedef struct tagSCROLLBARINFO {
+    DWORD cbSize;
+    RECT rcScrollBar;
+    int dxyLineButton;
+    int xyThumbTop;
+    int xyThumbBottom;
+    int reserved;
+    DWORD rgstate[CCHILDREN_SCROLLBAR + 1];
+  } SCROLLBARINFO,*PSCROLLBARINFO,*LPSCROLLBARINFO;
+
+  WINUSERAPI WINBOOL WINAPI GetScrollBarInfo(HWND hwnd,LONG idObject,PSCROLLBARINFO psbi);
+
+  typedef struct tagCOMBOBOXINFO {
+    DWORD cbSize;
+    RECT rcItem;
+    RECT rcButton;
+    DWORD stateButton;
+    HWND hwndCombo;
+    HWND hwndItem;
+    HWND hwndList;
+  } COMBOBOXINFO,*PCOMBOBOXINFO,*LPCOMBOBOXINFO;
+
+  WINUSERAPI WINBOOL WINAPI GetComboBoxInfo(HWND hwndCombo,PCOMBOBOXINFO pcbi);
+
+#define GA_PARENT 1
+#define GA_ROOT 2
+#define GA_ROOTOWNER 3
+
+  WINUSERAPI HWND WINAPI GetAncestor(HWND hwnd,UINT gaFlags);
+  WINUSERAPI HWND WINAPI RealChildWindowFromPoint(HWND hwndParent,POINT ptParentClientCoords);
+  WINUSERAPI UINT WINAPI RealGetWindowClassA(HWND hwnd,LPSTR ptszClassName,UINT cchClassNameMax);
+  WINUSERAPI UINT WINAPI RealGetWindowClassW(HWND hwnd,LPWSTR ptszClassName,UINT cchClassNameMax);
+
+#define RealGetWindowClass __MINGW_NAME_AW(RealGetWindowClass)
+
+  typedef struct tagALTTABINFO {
+    DWORD cbSize;
+    int cItems;
+    int cColumns;
+    int cRows;
+    int iColFocus;
+    int iRowFocus;
+    int cxItem;
+    int cyItem;
+    POINT ptStart;
+  } ALTTABINFO,*PALTTABINFO,*LPALTTABINFO;
+
+#define GetAltTabInfo __MINGW_NAME_AW(GetAltTabInfo)
+
+  WINUSERAPI WINBOOL WINAPI GetAltTabInfoA(HWND hwnd,int iItem,PALTTABINFO pati,LPSTR pszItemText,UINT cchItemText);
+  WINUSERAPI WINBOOL WINAPI GetAltTabInfoW(HWND hwnd,int iItem,PALTTABINFO pati,LPWSTR pszItemText,UINT cchItemText);
+  WINUSERAPI DWORD WINAPI GetListBoxInfo(HWND hwnd);
+#endif
+
+  WINUSERAPI WINBOOL WINAPI LockWorkStation(VOID);
+  WINUSERAPI WINBOOL WINAPI UserHandleGrantAccess(HANDLE hUserHandle,HANDLE hJob,WINBOOL bGrant);
+
+  DECLARE_HANDLE(HRAWINPUT);
+
+#define GET_RAWINPUT_CODE_WPARAM(wParam) ((wParam) & 0xff)
+
+#define RIM_INPUT 0
+#define RIM_INPUTSINK 1
+
+  typedef struct tagRAWINPUTHEADER {
+    DWORD dwType;
+    DWORD dwSize;
+    HANDLE hDevice;
+    WPARAM wParam;
+  } RAWINPUTHEADER,*PRAWINPUTHEADER,*LPRAWINPUTHEADER;
+
+#define RIM_TYPEMOUSE 0
+#define RIM_TYPEKEYBOARD 1
+#define RIM_TYPEHID 2
+
+  typedef struct tagRAWMOUSE {
+    USHORT usFlags;
+    __C89_NAMELESS union {
+      ULONG ulButtons;
+      __C89_NAMELESS struct {
+	USHORT usButtonFlags;
+	USHORT usButtonData;
+      };
+    };
+    ULONG ulRawButtons;
+    LONG lLastX;
+    LONG lLastY;
+    ULONG ulExtraInformation;
+  } RAWMOUSE,*PRAWMOUSE,*LPRAWMOUSE;
+
+#define RI_MOUSE_LEFT_BUTTON_DOWN 0x0001
+#define RI_MOUSE_LEFT_BUTTON_UP 0x0002
+#define RI_MOUSE_RIGHT_BUTTON_DOWN 0x0004
+#define RI_MOUSE_RIGHT_BUTTON_UP 0x0008
+#define RI_MOUSE_MIDDLE_BUTTON_DOWN 0x0010
+#define RI_MOUSE_MIDDLE_BUTTON_UP 0x0020
+
+#define RI_MOUSE_BUTTON_1_DOWN RI_MOUSE_LEFT_BUTTON_DOWN
+#define RI_MOUSE_BUTTON_1_UP RI_MOUSE_LEFT_BUTTON_UP
+#define RI_MOUSE_BUTTON_2_DOWN RI_MOUSE_RIGHT_BUTTON_DOWN
+#define RI_MOUSE_BUTTON_2_UP RI_MOUSE_RIGHT_BUTTON_UP
+#define RI_MOUSE_BUTTON_3_DOWN RI_MOUSE_MIDDLE_BUTTON_DOWN
+#define RI_MOUSE_BUTTON_3_UP RI_MOUSE_MIDDLE_BUTTON_UP
+
+#define RI_MOUSE_BUTTON_4_DOWN 0x0040
+#define RI_MOUSE_BUTTON_4_UP 0x0080
+#define RI_MOUSE_BUTTON_5_DOWN 0x0100
+#define RI_MOUSE_BUTTON_5_UP 0x0200
+
+#define RI_MOUSE_WHEEL 0x0400
+
+#define MOUSE_MOVE_RELATIVE 0
+#define MOUSE_MOVE_ABSOLUTE 1
+#define MOUSE_VIRTUAL_DESKTOP 0x02
+#define MOUSE_ATTRIBUTES_CHANGED 0x04
+
+  typedef struct tagRAWKEYBOARD {
+    USHORT MakeCode;
+    USHORT Flags;
+    USHORT Reserved;
+    USHORT VKey;
+    UINT Message;
+    ULONG ExtraInformation;
+  } RAWKEYBOARD,*PRAWKEYBOARD,*LPRAWKEYBOARD;
+
+#define KEYBOARD_OVERRUN_MAKE_CODE 0xFF
+
+#define RI_KEY_MAKE 0
+#define RI_KEY_BREAK 1
+#define RI_KEY_E0 2
+#define RI_KEY_E1 4
+#define RI_KEY_TERMSRV_SET_LED 8
+#define RI_KEY_TERMSRV_SHADOW 0x10
+
+  typedef struct tagRAWHID {
+    DWORD dwSizeHid;
+    DWORD dwCount;
+    BYTE bRawData[1];
+  } RAWHID,*PRAWHID,*LPRAWHID;
+
+  typedef struct tagRAWINPUT {
+    RAWINPUTHEADER header;
+    union {
+      RAWMOUSE mouse;
+      RAWKEYBOARD keyboard;
+      RAWHID hid;
+    } data;
+  } RAWINPUT,*PRAWINPUT,*LPRAWINPUT;
+
+#ifdef _WIN64
+#define RAWINPUT_ALIGN(x) (((x) + sizeof(QWORD) - 1) & ~(sizeof(QWORD) - 1))
+#else
+#define RAWINPUT_ALIGN(x) (((x) + sizeof(DWORD) - 1) & ~(sizeof(DWORD) - 1))
+#endif
+
+#define NEXTRAWINPUTBLOCK(ptr) ((PRAWINPUT)RAWINPUT_ALIGN((ULONG_PTR)((PBYTE)(ptr) + (ptr)->header.dwSize)))
+
+#define RID_INPUT 0x10000003
+#define RID_HEADER 0x10000005
+
+  WINUSERAPI UINT WINAPI GetRawInputData(HRAWINPUT hRawInput,UINT uiCommand,LPVOID pData,PUINT pcbSize,UINT cbSizeHeader);
+
+#define RIDI_PREPARSEDDATA 0x20000005
+#define RIDI_DEVICENAME 0x20000007
+#define RIDI_DEVICEINFO 0x2000000b
+
+  typedef struct tagRID_DEVICE_INFO_MOUSE {
+    DWORD dwId;
+    DWORD dwNumberOfButtons;
+    DWORD dwSampleRate;
+  } RID_DEVICE_INFO_MOUSE,*PRID_DEVICE_INFO_MOUSE;
+
+  typedef struct tagRID_DEVICE_INFO_KEYBOARD {
+    DWORD dwType;
+    DWORD dwSubType;
+    DWORD dwKeyboardMode;
+    DWORD dwNumberOfFunctionKeys;
+    DWORD dwNumberOfIndicators;
+    DWORD dwNumberOfKeysTotal;
+  } RID_DEVICE_INFO_KEYBOARD,*PRID_DEVICE_INFO_KEYBOARD;
+
+  typedef struct tagRID_DEVICE_INFO_HID {
+    DWORD dwVendorId;
+    DWORD dwProductId;
+    DWORD dwVersionNumber;
+    USHORT usUsagePage;
+    USHORT usUsage;
+  } RID_DEVICE_INFO_HID,*PRID_DEVICE_INFO_HID;
+
+  typedef struct tagRID_DEVICE_INFO {
+    DWORD cbSize;
+    DWORD dwType;
+    __C89_NAMELESS union {
+      RID_DEVICE_INFO_MOUSE mouse;
+      RID_DEVICE_INFO_KEYBOARD keyboard;
+      RID_DEVICE_INFO_HID hid;
+    } DUMMYUNIONNAME;
+  } RID_DEVICE_INFO,*PRID_DEVICE_INFO,*LPRID_DEVICE_INFO;
+
+#define GetRawInputDeviceInfo __MINGW_NAME_AW(GetRawInputDeviceInfo)
+
+  WINUSERAPI UINT WINAPI GetRawInputDeviceInfoA(HANDLE hDevice,UINT uiCommand,LPVOID pData,PUINT pcbSize);
+  WINUSERAPI UINT WINAPI GetRawInputDeviceInfoW(HANDLE hDevice,UINT uiCommand,LPVOID pData,PUINT pcbSize);
+  WINUSERAPI UINT WINAPI GetRawInputBuffer(PRAWINPUT pData,PUINT pcbSize,UINT cbSizeHeader);
+
+  typedef struct tagRAWINPUTDEVICE {
+    USHORT usUsagePage;
+    USHORT usUsage;
+    DWORD dwFlags;
+    HWND hwndTarget;
+  } RAWINPUTDEVICE,*PRAWINPUTDEVICE,*LPRAWINPUTDEVICE;
+
+  typedef CONST RAWINPUTDEVICE *PCRAWINPUTDEVICE;
+
+#define RIDEV_REMOVE 0x00000001
+#define RIDEV_EXCLUDE 0x00000010
+#define RIDEV_PAGEONLY 0x00000020
+#define RIDEV_NOLEGACY 0x00000030
+#define RIDEV_INPUTSINK 0x00000100
+#define RIDEV_CAPTUREMOUSE 0x00000200
+#define RIDEV_NOHOTKEYS 0x00000200
+#define RIDEV_APPKEYS 0x00000400
+#define RIDEV_EXMODEMASK 0x000000F0
+#define RIDEV_EXMODE(mode) ((mode) & RIDEV_EXMODEMASK)
+
+#define MAPVK_VK_TO_VSC    0
+#define MAPVK_VSC_TO_VK    1
+#define MAPVK_VK_TO_CHAR   2
+#define MAPVK_VSC_TO_VK_EX 3
+#if (_WIN32_WINNT >= 0x0600)
+#define MAPVK_VK_TO_VSC_EX 4
+#endif
+
+#if (_WIN32_WINNT >= 0x0601)
+#define WM_TOUCHMOVE 576
+#define WM_TOUCHDOWN 577
+#define WM_TOUCHUP 578
+
+#define TOUCHEVENTF_MOVE        0x0001
+#define TOUCHEVENTF_DOWN        0x0002
+#define TOUCHEVENTF_UP          0x0004
+#define TOUCHEVENTF_INRANGE     0x0008
+#define TOUCHEVENTF_PRIMARY     0x0010
+#define TOUCHEVENTF_NOCOALESCE  0x0020
+#define TOUCHEVENTF_PEN         0x0040
+#define TOUCHEVENTF_PALM        0x0080
+
+#define TOUCHINPUTMASKF_TIMEFROMSYSTEM  0x0001
+#define TOUCHINPUTMASKF_EXTRAINFO       0x0002
+#define TOUCHINPUTMASKF_CONTACTAREA     0x0004
+
+DECLARE_HANDLE(HTOUCHINPUT);
+
+  typedef struct _TOUCHINPUT {
+    LONG x;
+    LONG y;
+    HANDLE hSource;
+    DWORD dwID;
+    DWORD dwFlags;
+    DWORD dwMask;
+    DWORD dwTime;
+    ULONG_PTR dwExtraInfo;
+    DWORD cxContact;
+    DWORD cyContact;
+  } TOUCHINPUT,*PTOUCHINPUT;
+
+  WINUSERAPI WINBOOL WINAPI CloseTouchInputHandle(HANDLE hTouchInput);
+  WINUSERAPI WINBOOL WINAPI GetTouchInputInfo(HANDLE hTouchInput, UINT cInputs, PTOUCHINPUT pInputs, int cbSize);
+  WINUSERAPI WINBOOL WINAPI IsTouchWindow(HWND hWnd,PULONG pulFlags);
+  WINUSERAPI WINBOOL WINAPI RegisterTouchWindow(HWND hWnd,ULONG ulFlags);
+  WINUSERAPI WINBOOL WINAPI UnregisterTouchWindow(HWND hWnd);
+
+#endif /* (_WIN32_WINNT >= 0x0601) */
+
+  WINUSERAPI WINBOOL WINAPI RegisterRawInputDevices(PCRAWINPUTDEVICE pRawInputDevices,UINT uiNumDevices,UINT cbSize);
+  WINUSERAPI UINT WINAPI GetRegisteredRawInputDevices(PRAWINPUTDEVICE pRawInputDevices,PUINT puiNumDevices,UINT cbSize);
+
+  typedef struct tagRAWINPUTDEVICELIST {
+    HANDLE hDevice;
+    DWORD dwType;
+  } RAWINPUTDEVICELIST,*PRAWINPUTDEVICELIST;
+
+  WINUSERAPI UINT WINAPI GetRawInputDeviceList(PRAWINPUTDEVICELIST pRawInputDeviceList,PUINT puiNumDevices,UINT cbSize);
+  WINUSERAPI LRESULT WINAPI DefRawInputProc(PRAWINPUT *paRawInput,INT nInput,UINT cbSizeHeader);
+
+#if (_WIN32_WINNT >= 0x0600)
+typedef struct _AUDIODESCRIPTION {
+  UINT cbSize;
+  BOOL Enabled;
+  LCID Locale;
+} AUDIODESCRIPTION, *PAUDIODESCRIPTION;
+
+#ifndef NOGDI
+#define CreateDesktopEx __MINGW_NAME_AW(CreateDesktopEx)
+
+WINUSERAPI HDESK WINAPI CreateDesktopExA(
+  LPCSTR lpszDesktop,
+  LPCSTR lpszDevice,
+  DEVMODE *pDevmode,
+  DWORD dwFlags,
+  ACCESS_MASK dwDesiredAccess,
+  LPSECURITY_ATTRIBUTES lpsa,
+  ULONG ulHeapSize,
+  PVOID pvoid
+);
+
+WINUSERAPI HDESK WINAPI CreateDesktopExW(
+  LPCWSTR lpszDesktop,
+  LPCWSTR lpszDevice,
+  DEVMODE *pDevmode,
+  DWORD dwFlags,
+  ACCESS_MASK dwDesiredAccess,
+  LPSECURITY_ATTRIBUTES lpsa,
+  ULONG ulHeapSize,
+  PVOID pvoid
+);
+#endif	/* NOGDI */
+
+WINUSERAPI WINBOOL WINAPI ShutdownBlockReasonCreate(
+  HWND hWnd,
+  LPCWSTR pwszReason
+);
+
+WINUSERAPI WINBOOL WINAPI ShutdownBlockReasonDestroy(
+  HWND hWnd
+);
+
+WINUSERAPI WINBOOL WINAPI ShutdownBlockReasonQuery(
+  HWND hWnd,
+  LPWSTR pwszBuff,
+  DWORD *pcchBuff
+);
+
+#endif /*(_WIN32_WINNT >= 0x0600)*/
+
+#if (_WIN32_WINNT >= 0x0601)
+
+#define GF_BEGIN 0x00000001
+#define GF_INERTIA 0x00000002
+#define GF_END 0x00000004
+
+#define GID_BEGIN 1
+#define GID_END 2
+#define GID_ZOOM 3
+#define GID_PAN 4
+#define GID_ROTATE 5
+#define GID_TWOFINGERTAP 6
+#define GID_PRESSANDTAP 7
+#define GID_ROLLOVER GID_PRESSANDTAP
+
+#define GC_ALLGESTURES 0x00000001
+#define GC_ZOOM 0x00000001
+
+#define GC_PAN 0x00000001
+#define GC_PAN_WITH_SINGLE_FINGER_VERTICALLY 0x00000002
+#define GC_PAN_WITH_SINGLE_FINGER_HORIZONTALLY 0x00000004
+#define GC_PAN_WITH_GUTTER 0x00000008
+#define GC_PAN_WITH_INERTIA 0x00000010
+
+#define GC_ROTATE 0x00000001
+#define GC_TWOFINGERTAP 0x00000001
+#define GC_PRESSANDTAP 0x00000001
+#define GC_ROLLOVER GC_PRESSANDTAP
+
+#define GCF_INCLUDE_ANCESTORS 0x00000001
+
+#define GESTURECONFIGMAXCOUNT 256
+
+DECLARE_HANDLE(HGESTUREINFO);
+
+#define GID_ROTATE_ANGLE_TO_ARGUMENT(_arg_) ((USHORT)((((_arg_) + 2.0 * 3.14159265) / (4.0 * 3.14159265)) * 65535.0))
+#define GID_ROTATE_ANGLE_FROM_ARGUMENT(_arg_) ((((double)(_arg_) /65535.0) * 4.0 * 3.14159265) - 2.0 * 3.14159265)
+
+typedef struct _GESTUREINFO {
+  UINT      cbSize;
+  DWORD     dwFlags;
+  DWORD     dwID;
+  HWND      hwndTarget;
+  POINTS    ptsLocation;
+  DWORD     dwInstanceID;
+  DWORD     dwSequenceID;
+  ULONGLONG ullArguments;
+  UINT      cbExtraArgs;
+} GESTUREINFO, *PGESTUREINFO;
+
+typedef GESTUREINFO const * PCGESTUREINFO;
+
+typedef struct tagGESTURENOTIFYSTRUCT {
+  UINT   cbSize;
+  DWORD  dwFlags;
+  HWND   hwndTarget;
+  POINTS ptsLocation;
+  DWORD  dwInstanceID;
+} GESTURENOTIFYSTRUCT, *PGESTURENOTIFYSTRUCT;
+
+typedef struct _GESTURECONFIG {
+  DWORD dwID;
+  DWORD dwWant;
+  DWORD dwBlock;
+} GESTURECONFIG, *PGESTURECONFIG;
+
+WINUSERAPI WINBOOL WINAPI SetGestureConfig(
+  HWND hwnd,
+  DWORD dwReserved,
+  UINT cIDs,
+  PGESTURECONFIG pGestureConfig,
+  UINT cbSize
+);
+
+WINUSERAPI WINBOOL WINAPI GetGestureConfig(
+  HWND hwnd,
+  DWORD dwReserved,
+  DWORD dwFlags,
+  PUINT pcIDs,
+  PGESTURECONFIG pGestureConfig,
+  UINT cbSize
+);
+
+WINUSERAPI WINBOOL WINAPI GetGestureInfo(
+  HGESTUREINFO hGestureInfo,
+  PGESTUREINFO pGestureInfo
+);
+
+WINUSERAPI WINBOOL WINAPI GetGestureExtraArgs(
+  HGESTUREINFO hGestureInfo,
+  UINT cbExtraArgs,
+  PBYTE pExtraArgs
+);
+
+WINUSERAPI WINBOOL WINAPI CloseGestureInfoHandle(
+    HGESTUREINFO hGestureInfo
+);
+
+#endif /*(_WIN32_WINNT >= 0x0601)*/
+
+#endif /* NOUSER */
+
+#ifdef __cplusplus
+}
+#endif
+#endif

-- 
Debian Wine Gecko packaging



More information about the pkg-wine-party mailing list