--- /dev/null
+/* Copyright (C) 2011 TigerVNC Team. All Rights Reserved.
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#ifdef WIN32
+
+#define INITGUID
+#include <basetyps.h>
+
+#ifndef HAVE_ACTIVE_DESKTOP_L
+DEFINE_GUID(CLSID_ActiveDesktop,0x75048700L,0xEF1F,0x11D0,0x98,0x88,0x00,0x60,0x97,0xDE,0xAC,0xF9);
+DEFINE_GUID(IID_IActiveDesktop,0xF490EB00L,0x1240,0x11D1,0x98,0x88,0x00,0x60,0x97,0xDE,0xAC,0xF9);
+#endif
+
+#endif /* WIN32 */
--- /dev/null
+/* Copyright (C) 2011 TigerVNC Team. All Rights Reserved.
+ *
+ * This is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This software 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this software; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
+ * USA.
+ */
+
+#ifndef OS_W32TIGER_H
+#define OS_W32TIGER_H
+
+#ifdef WIN32
+
+#include <windows.h>
+#include <wininet.h>
+#include <shlobj.h>
+#include <shlguid.h>
+#include <wininet.h>
+
+
+/* MSLLHOOKSTRUCT structure*/
+#ifndef LLMHF_INJECTED
+#define LLMHF_INJECTED 0x00000001
+#endif
+
+
+/* IActiveDesktop. As of 2011-10-12, MinGW does not define
+ IActiveDesktop in any way (see tracker 2877129), while MinGW64 is
+ broken: has the headers but not the lib symbols. */
+#ifndef HAVE_ACTIVE_DESKTOP_H
+extern const GUID CLSID_ActiveDesktop;
+extern const GUID IID_IActiveDesktop;
+
+/* IActiveDesktop::AddUrl */
+#define ADDURL_SILENT 0x0001
+
+/* IActiveDesktop::AddDesktopItemWithUI */
+#define DTI_ADDUI_DEFAULT 0x00000000
+#define DTI_ADDUI_DISPSUBWIZARD 0x00000001
+#define DTI_ADDUI_POSITIONITEM 0x00000002
+
+/* IActiveDesktop::ModifyDesktopItem */
+#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 0x00007FFF /* OR-ed all COMP_ELEM_ */
+
+/* IActiveDesktop::GetWallpaper */
+#define AD_GETWP_BMP 0x00000000
+#define AD_GETWP_IMAGE 0x00000001
+#define AD_GETWP_LAST_APPLIED 0x00000002
+
+/* IActiveDesktop::ApplyChanges */
+#define AD_APPLY_SAVE 0x00000001
+#define AD_APPLY_HTMLGEN 0x00000002
+#define AD_APPLY_REFRESH 0x00000004
+#define AD_APPLY_ALL 0x00000007 /* OR-ed three AD_APPLY_ above */
+#define AD_APPLY_FORCE 0x00000008
+#define AD_APPLY_BUFFERED_REFRESH 0x00000010
+#define AD_APPLY_DYNAMICREFRESH 0x00000020
+
+/* Structures for IActiveDesktop */
+typedef struct {
+ DWORD dwSize;
+ int iLeft;
+ int iTop;
+ DWORD dwWidth;
+ DWORD dwHeight;
+ DWORD dwItemState;
+} COMPSTATEINFO, *LPCOMPSTATEINFO;
+typedef const COMPSTATEINFO *LPCCOMPSTATEINFO;
+
+typedef struct {
+ DWORD dwSize;
+ int iLeft;
+ int iTop;
+ DWORD dwWidth;
+ DWORD dwHeight;
+ int izIndex;
+ BOOL fCanResize;
+ BOOL fCanResizeX;
+ BOOL fCanResizeY;
+ int iPreferredLeftPercent;
+ int iPreferredTopPercent;
+} COMPPOS, *LPCOMPPOS;
+typedef const COMPPOS *LPCCOMPPOS;
+
+typedef struct {
+ DWORD dwSize;
+ DWORD dwID;
+ int iComponentType;
+ BOOL fChecked;
+ BOOL fDirty;
+ BOOL 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, *LPCOMPONENT;
+typedef const COMPONENT *LPCCOMPONENT;
+
+typedef struct {
+ DWORD dwSize;
+ BOOL fEnableComponents;
+ BOOL fActiveDesktop;
+} COMPONENTSOPT, *LPCOMPONENTSOPT;
+typedef const COMPONENTSOPT *LPCCOMPONENTSOPT;
+
+typedef struct {
+ DWORD dwSize;
+ DWORD dwStyle;
+} WALLPAPEROPT, *LPWALLPAPEROPT;
+typedef const WALLPAPEROPT *LPCWALLPAPEROPT;
+
+/* WALLPAPEROPT styles */
+#define WPSTYLE_CENTER 0x0
+#define WPSTYLE_TILE 0x1
+#define WPSTYLE_STRETCH 0x2
+#define WPSTYLE_MAX 0x3
+
+/* Those two are defined in Windows 7 and newer, we don't need them now */
+#if 0
+#define WPSTYLE_KEEPASPECT 0x3
+#define WPSTYLE_CROPTOFIT 0x4
+#endif
+
+#define INTERFACE IActiveDesktop
+DECLARE_INTERFACE_(IActiveDesktop, IUnknown)
+{
+ STDMETHOD(QueryInterface)(THIS_ REFIID,PVOID*) PURE;
+ STDMETHOD_(ULONG,AddRef)(THIS) PURE;
+ STDMETHOD_(ULONG,Release)(THIS) PURE;
+ STDMETHOD(AddDesktopItem)(THIS_ LPCOMPONENT,DWORD) PURE;
+ STDMETHOD(AddDesktopItemWithUI)(THIS_ HWND,LPCOMPONENT,DWORD) PURE;
+ STDMETHOD(AddUrl)(THIS_ HWND,LPCWSTR,LPCOMPONENT,DWORD) PURE;
+ STDMETHOD(ApplyChanges)(THIS_ DWORD) PURE;
+ STDMETHOD(GenerateDesktopItemHtml)(THIS_ LPCWSTR,LPCOMPONENT,DWORD) PURE;
+ STDMETHOD(GetDesktopItem)(THIS_ int,LPCOMPONENT,DWORD) PURE;
+ STDMETHOD(GetDesktopItemByID)(THIS_ DWORD,LPCOMPONENT,DWORD) PURE;
+ STDMETHOD(GetDesktopItemBySource)(THIS_ LPCWSTR,LPCOMPONENT,DWORD) PURE;
+ STDMETHOD(GetDesktopItemCount)(THIS_ LPINT,DWORD) PURE;
+ STDMETHOD(GetDesktopItemOptions)(THIS_ LPCOMPONENTSOPT,DWORD) PURE;
+ STDMETHOD(GetPattern)(THIS_ LPWSTR,UINT,DWORD) PURE;
+ STDMETHOD(GetWallpaper)(THIS_ LPWSTR,UINT,DWORD) PURE;
+ STDMETHOD(GetWallpaperOptions)(THIS_ LPWALLPAPEROPT,DWORD) PURE;
+ STDMETHOD(ModifyDesktopItem)(THIS_ LPCCOMPONENT,DWORD) PURE;
+ STDMETHOD(RemoveDesktopItem)(THIS_ LPCCOMPONENT,DWORD) PURE;
+ STDMETHOD(SetDesktopItemOptions)(THIS_ LPCCOMPONENTSOPT,DWORD) PURE;
+ STDMETHOD(SetPattern)(THIS_ LPCWSTR,DWORD) PURE;
+ STDMETHOD(SetWallpaper)(THIS_ LPCWSTR,DWORD) PURE;
+ STDMETHOD(SetWallpaperOptions)(THIS_ LPCWALLPAPEROPT,DWORD) PURE;
+};
+#undef INTERFACE
+#endif /* HAVE_ACTIVE_DESKTOP_H */
+
+#endif /* WIN32 */
+#endif /* OS_W32TIGER_H */