force foreground window when switching virtual desktop

This commit is contained in:
Kang Yu 2024-03-24 14:23:01 -07:00
parent af7add873f
commit 3472349519
3 changed files with 21 additions and 4 deletions

View file

@ -26,12 +26,14 @@ namespace PersistentWindows.Common
public class VirtualDesktop
{
private IVirtualDesktopManager _manager = null;
private static IVirtualDesktopManager _static_manager = null;
public VirtualDesktop()
{
try
{
_manager = (IVirtualDesktopManager)new CVirtualDesktopManager();
_static_manager = _manager;
}
catch
{
@ -44,9 +46,13 @@ namespace PersistentWindows.Common
return _manager != null;
}
public bool IsWindowOnCurrentVirtualDesktop(IntPtr TopLevelWindow)
public static bool IsWindowOnCurrentVirtualDesktop(IntPtr TopLevelWindow)
{
int hr = _manager.IsWindowOnCurrentVirtualDesktop(TopLevelWindow, out int result);
if (_static_manager == null)
return true;
int result = 1;
int hr = _static_manager.IsWindowOnCurrentVirtualDesktop(TopLevelWindow, out result);
if (hr != 0)
{
//Marshal.ThrowExceptionForHR(hr);
@ -70,6 +76,9 @@ namespace PersistentWindows.Common
public void MoveWindowToDesktop(IntPtr TopLevelWindow, Guid CurrentDesktop)
{
if (!Enabled())
return;
int hr = _manager.MoveWindowToDesktop(TopLevelWindow, CurrentDesktop);
if (hr != 0)
{