From a0788a96d75cb46ab813d4e7984f3d3a133f128f Mon Sep 17 00:00:00 2001
From: Tom Ritter <t...@ritter.vg>
Date: Wed, 5 Jan 2022 22:32:47 -0500
Subject: [PATCH] Add IVirtualDesktopManager

---
 mingw-w64-headers/include/shobjidl.h   | 138 +++++++++++++++++++++++++
 mingw-w64-headers/include/shobjidl.idl |  11 ++
 2 files changed, 149 insertions(+)

diff --git a/mingw-w64-headers/include/shobjidl.h b/mingw-w64-headers/include/shobjidl.h
index a39bbaa1e..61a018e4e 100644
--- a/mingw-w64-headers/include/shobjidl.h
+++ b/mingw-w64-headers/include/shobjidl.h
@@ -1562,6 +1562,14 @@ interface IDesktopGadget;
 #endif /* __cplusplus */
 #endif
 
+#ifndef __IVirtualDesktopManager_FWD_DEFINED__
+#define __IVirtualDesktopManager_FWD_DEFINED__
+typedef interface IVirtualDesktopManager IVirtualDesktopManager;
+#ifdef __cplusplus
+interface IVirtualDesktopManager;
+#endif /* __cplusplus */
+#endif
+
 #ifndef __IDesktopWallpaper_FWD_DEFINED__
 #define __IDesktopWallpaper_FWD_DEFINED__
 typedef interface IDesktopWallpaper IDesktopWallpaper;
@@ -2246,6 +2254,15 @@ typedef struct ExecuteFolder ExecuteFolder;
 #endif /* defined __cplusplus */
 #endif /* defined __ExecuteFolder_FWD_DEFINED__ */
 
+#ifndef __VirtualDesktopManager_FWD_DEFINED__
+#define __VirtualDesktopManager_FWD_DEFINED__
+#ifdef __cplusplus
+typedef class VirtualDesktopManager VirtualDesktopManager;
+#else
+typedef struct VirtualDesktopManager VirtualDesktopManager;
+#endif /* defined __cplusplus */
+#endif /* defined __VirtualDesktopManager_FWD_DEFINED__ */
+
 #ifndef __IAssocHandlerInvoker_FWD_DEFINED__
 #define __IAssocHandlerInvoker_FWD_DEFINED__
 typedef interface IAssocHandlerInvoker IAssocHandlerInvoker;
@@ -30555,6 +30572,114 @@ static FORCEINLINE HRESULT IDesktopGadget_RunGadget(IDesktopGadget* This,LPCWSTR
 #endif  /* __IDesktopGadget_INTERFACE_DEFINED__ */
 
 
+#if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)
+/*****************************************************************************
+ * IVirtualDesktopManager interface
+ */
+#ifndef __IVirtualDesktopManager_INTERFACE_DEFINED__
+#define __IVirtualDesktopManager_INTERFACE_DEFINED__
+
+DEFINE_GUID(IID_IVirtualDesktopManager, 0xa5cd92ff, 0x29be, 0x454c, 0x8d,0x04, 0xd8,0x28,0x79,0xfb,0x3f,0x1b);
+#if defined(__cplusplus) && !defined(CINTERFACE)
+MIDL_INTERFACE("a5cd92ff-29be-454c-8d04-d82879fb3f1b")
+IVirtualDesktopManager : public IUnknown
+{
+    virtual HRESULT STDMETHODCALLTYPE IsWindowOnCurrentVirtualDesktop(
+        HWND topLevelWindow,
+        WINBOOL *onCurrentDesktop) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE GetWindowDesktopId(
+        HWND topLevelWindow,
+        GUID *desktopId) = 0;
+
+    virtual HRESULT STDMETHODCALLTYPE MoveWindowToDesktop(
+        HWND topLevelWindow,
+        REFGUID desktopId) = 0;
+
+};
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(IVirtualDesktopManager, 0xa5cd92ff, 0x29be, 0x454c, 0x8d,0x04, 0xd8,0x28,0x79,0xfb,0x3f,0x1b)
+#endif
+#else
+typedef struct IVirtualDesktopManagerVtbl {
+    BEGIN_INTERFACE
+
+    /*** IUnknown methods ***/
+    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
+        IVirtualDesktopManager *This,
+        REFIID riid,
+        void **ppvObject);
+
+    ULONG (STDMETHODCALLTYPE *AddRef)(
+        IVirtualDesktopManager *This);
+
+    ULONG (STDMETHODCALLTYPE *Release)(
+        IVirtualDesktopManager *This);
+
+    /*** IVirtualDesktopManager methods ***/
+    HRESULT (STDMETHODCALLTYPE *IsWindowOnCurrentVirtualDesktop)(
+        IVirtualDesktopManager *This,
+        HWND topLevelWindow,
+        WINBOOL *onCurrentDesktop);
+
+    HRESULT (STDMETHODCALLTYPE *GetWindowDesktopId)(
+        IVirtualDesktopManager *This,
+        HWND topLevelWindow,
+        GUID *desktopId);
+
+    HRESULT (STDMETHODCALLTYPE *MoveWindowToDesktop)(
+        IVirtualDesktopManager *This,
+        HWND topLevelWindow,
+        REFGUID desktopId);
+
+    END_INTERFACE
+} IVirtualDesktopManagerVtbl;
+
+interface IVirtualDesktopManager {
+    CONST_VTBL IVirtualDesktopManagerVtbl* lpVtbl;
+};
+
+#ifdef COBJMACROS
+#ifndef WIDL_C_INLINE_WRAPPERS
+/*** IUnknown methods ***/
+#define IVirtualDesktopManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
+#define IVirtualDesktopManager_AddRef(This) (This)->lpVtbl->AddRef(This)
+#define IVirtualDesktopManager_Release(This) (This)->lpVtbl->Release(This)
+/*** IVirtualDesktopManager methods ***/
+#define IVirtualDesktopManager_IsWindowOnCurrentVirtualDesktop(This,topLevelWindow,onCurrentDesktop) (This)->lpVtbl->IsWindowOnCurrentVirtualDesktop(This,topLevelWindow,onCurrentDesktop)
+#define IVirtualDesktopManager_GetWindowDesktopId(This,topLevelWindow,desktopId) (This)->lpVtbl->GetWindowDesktopId(This,topLevelWindow,desktopId)
+#define IVirtualDesktopManager_MoveWindowToDesktop(This,topLevelWindow,desktopId) (This)->lpVtbl->MoveWindowToDesktop(This,topLevelWindow,desktopId)
+#else
+/*** IUnknown methods ***/
+static FORCEINLINE HRESULT IVirtualDesktopManager_QueryInterface(IVirtualDesktopManager* This,REFIID riid,void **ppvObject) {
+    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
+}
+static FORCEINLINE ULONG IVirtualDesktopManager_AddRef(IVirtualDesktopManager* This) {
+    return This->lpVtbl->AddRef(This);
+}
+static FORCEINLINE ULONG IVirtualDesktopManager_Release(IVirtualDesktopManager* This) {
+    return This->lpVtbl->Release(This);
+}
+/*** IVirtualDesktopManager methods ***/
+static FORCEINLINE HRESULT IVirtualDesktopManager_IsWindowOnCurrentVirtualDesktop(IVirtualDesktopManager* This,HWND topLevelWindow,WINBOOL *onCurrentDesktop) {
+    return This->lpVtbl->IsWindowOnCurrentVirtualDesktop(This,topLevelWindow,onCurrentDesktop);
+}
+static FORCEINLINE HRESULT IVirtualDesktopManager_GetWindowDesktopId(IVirtualDesktopManager* This,HWND topLevelWindow,GUID *desktopId) {
+    return This->lpVtbl->GetWindowDesktopId(This,topLevelWindow,desktopId);
+}
+static FORCEINLINE HRESULT IVirtualDesktopManager_MoveWindowToDesktop(IVirtualDesktopManager* This,HWND topLevelWindow,REFGUID desktopId) {
+    return This->lpVtbl->MoveWindowToDesktop(This,topLevelWindow,desktopId);
+}
+#endif
+#endif
+
+#endif
+
+
+#endif  /* __IVirtualDesktopManager_INTERFACE_DEFINED__ */
+
+#endif
+
 #if NTDDI_VERSION >= NTDDI_WIN8
 /*****************************************************************************
  * IDesktopWallpaper interface
@@ -32797,6 +32922,19 @@ __CRT_UUID_DECL(ExecuteFolder, 0x11dbb47c, 0xa525, 0x400b, 0x9e,0x80, 0xa5,0x46,
 #endif
 #endif
 
+/*****************************************************************************
+ * VirtualDesktopManager coclass
+ */
+
+DEFINE_GUID(CLSID_VirtualDesktopManager, 0xaa509086, 0x5ca9, 0x4c25, 0x8f,0x95, 0x58,0x9d,0x3c,0x07,0xb4,0x8a);
+
+#ifdef __cplusplus
+class DECLSPEC_UUID("aa509086-5ca9-4c25-8f95-589d3c07b48a") VirtualDesktopManager;
+#ifdef __CRT_UUID_DECL
+__CRT_UUID_DECL(VirtualDesktopManager, 0xaa509086, 0x5ca9, 0x4c25, 0x8f,0x95, 0x58,0x9d,0x3c,0x07,0xb4,0x8a)
+#endif
+#endif
+
 #endif /* __ShellObjects_LIBRARY_DEFINED__ */
 
 #if NTDDI_VERSION >= NTDDI_VISTA
diff --git a/mingw-w64-headers/include/shobjidl.idl b/mingw-w64-headers/include/shobjidl.idl
index 6c3881a4a..501162974 100644
--- a/mingw-w64-headers/include/shobjidl.idl
+++ b/mingw-w64-headers/include/shobjidl.idl
@@ -3981,6 +3981,16 @@ interface IDesktopGadget : IUnknown {
   HRESULT RunGadget ([in] LPCWSTR gadgetPath);
 }
 
+cpp_quote("")
+cpp_quote("#if (NTDDI_VERSION >= NTDDI_WINTHRESHOLD)")
+[object, uuid (a5cd92ff-29be-454c-8d04-d82879fb3f1b),]
+interface IVirtualDesktopManager : IUnknown {
+  HRESULT IsWindowOnCurrentVirtualDesktop ([in] HWND topLevelWindow, [out] BOOL *onCurrentDesktop);
+  HRESULT GetWindowDesktopId ([in] HWND topLevelWindow, [out] GUID *desktopId);
+  HRESULT MoveWindowToDesktop ([in] HWND topLevelWindow, [in] REFGUID desktopId);
+}
+cpp_quote("#endif")
+
 cpp_quote("")
 cpp_quote("#if NTDDI_VERSION >= NTDDI_WIN8")
 [object, uuid (B92B56A9-8b55-4e14-9a89-0199bbb6f93b)]
@@ -4274,6 +4284,7 @@ library ShellObjects {
   [uuid (45ba127d-10a8-46ea-8ab7-56ea9078943c)] coclass ApplicationActivationManager { interface IApplicationActivationManager; }
   [uuid (958a6fb5-dcb2-4faf-aafd-7fb054ad1a3b)] coclass ApplicationDesignModeSettings { interface IApplicationDesignModeSettings; }
   [uuid (11dbb47c-a525-400b-9e80-a54615a090c0)] coclass ExecuteFolder { interface IExecuteCommand; }
+  [uuid (aa509086-5ca9-4c25-8f95-589d3c07b48a)] coclass VirtualDesktopManager { interface IVirtualDesktopManager; }
 };
 cpp_quote("")
 cpp_quote("#if NTDDI_VERSION >= NTDDI_VISTA")
-- 
2.25.1

_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to