Skip to content

Commit

Permalink
Merge branch 'dev'
Browse files Browse the repository at this point in the history
  • Loading branch information
Tobias Kiertscher committed Mar 16, 2023
2 parents 27ec38f + f6330b9 commit eaa4a1c
Show file tree
Hide file tree
Showing 12 changed files with 397 additions and 321 deletions.
6 changes: 3 additions & 3 deletions src/WinMan.Cli/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Tobias Kiertscher")]
[assembly: AssemblyProduct("Mastersign WinMan")]
[assembly: AssemblyCopyright("Copyright © Tobias Kiertscher 2021")]
[assembly: AssemblyCopyright("Copyright © Tobias Kiertscher 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Expand All @@ -32,5 +32,5 @@
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.16.2.0")]
[assembly: AssemblyFileVersion("1.16.2.0")]
[assembly: AssemblyVersion("1.17.0.0")]
[assembly: AssemblyFileVersion("1.17.0.0")]
1 change: 0 additions & 1 deletion src/WinMan.Lib/Mastersign.WinMan.Lib.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,6 @@
<Compile Include="vendor\VirtualDesktop\Interop\VirtualDesktopManagerInternal.cs" />
<Compile Include="vendor\VirtualDesktop\VirtualDesktop.cs" />
<Compile Include="vendor\VirtualDesktop\VirtualDesktop.static.cs" />
<Compile Include="vendor\VirtualDesktop\VirtualDesktop.static.notification.cs" />
<Compile Include="vendor\VirtualDesktop\VirtualDesktop.static.pin.cs" />
<Compile Include="vendor\VirtualDesktop\VirtualDesktopChangedEventArgs.cs" />
<Compile Include="vendor\VirtualDesktop\VirtualDesktopDestroyEventArgs.cs" />
Expand Down
6 changes: 3 additions & 3 deletions src/WinMan.Lib/Properties/AssemblyInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Tobias Kiertscher")]
[assembly: AssemblyProduct("Mastersign WinMan")]
[assembly: AssemblyCopyright("Copyright © Tobias Kiertscher 2021")]
[assembly: AssemblyCopyright("Copyright © Tobias Kiertscher 2023")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

Expand All @@ -32,5 +32,5 @@
// Sie können alle Werte angeben oder Standardwerte für die Build- und Revisionsnummern verwenden,
// indem Sie "*" wie unten gezeigt eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.16.2.0")]
[assembly: AssemblyFileVersion("1.16.2.0")]
[assembly: AssemblyVersion("1.17.0.0")]
[assembly: AssemblyFileVersion("1.17.0.0")]
9 changes: 3 additions & 6 deletions src/WinMan.Lib/vendor/VirtualDesktop/Interop/ComObjects.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,8 @@ namespace WindowsDesktop.Interop
{
public static class ComObjects
{
private static IDisposable _listener;
private static ExplorerRestartListenerWindow _listenerWindow;
private static readonly ConcurrentDictionary<Guid, IVirtualDesktop> _virtualDesktops = new ConcurrentDictionary<Guid, IVirtualDesktop>();
private static readonly ConcurrentDictionary<Guid, VirtualDesktopHandle> _virtualDesktops = new ConcurrentDictionary<Guid, VirtualDesktopHandle>();

internal static IVirtualDesktopManager VirtualDesktopManager { get; private set; }
internal static VirtualDesktopManagerInternal VirtualDesktopManagerInternal { get; private set; }
Expand All @@ -33,22 +32,20 @@ internal static void Initialize()
ApplicationViewCollection = GetApplicationViewCollection();

_virtualDesktops.Clear();
_listener = VirtualDesktop.RegisterListener();
}

internal static void Register(IVirtualDesktop vd)
internal static void Register(VirtualDesktopHandle vd)
{
_virtualDesktops.AddOrUpdate(vd.GetID(), vd, (guid, desktop) => vd);
}

internal static IVirtualDesktop GetVirtualDesktop(Guid id)
internal static VirtualDesktopHandle GetVirtualDesktop(Guid id)
{
return _virtualDesktops.GetOrAdd(id, x => VirtualDesktopManagerInternal.FindDesktop(ref x));
}

internal static void Terminate()
{
_listener?.Dispose();
_listenerWindow?.Close();
}

Expand Down
51 changes: 51 additions & 0 deletions src/WinMan.Lib/vendor/VirtualDesktop/Interop/IVirtualDesktop.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,55 @@ public interface IVirtualDesktop

Guid GetID();
}

[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("536D3495-B208-4CC9-AE26-DE8111275BF8")]
public interface IVirtualDesktop22000
{
bool IsViewVisible(IApplicationView view);

Guid GetId();

IntPtr Unknown1();
[return: MarshalAs(UnmanagedType.HString)]

string GetName();
[return: MarshalAs(UnmanagedType.HString)]

string GetWallpaperPath();
}

public readonly struct VirtualDesktopHandle
{
private readonly IVirtualDesktop vd;
private readonly IVirtualDesktop22000 vd2;

public IVirtualDesktop VirtualDesktop => vd;
public IVirtualDesktop22000 VirtualDesktop22000 => vd2;

public VirtualDesktopHandle(IVirtualDesktop vd)
{
this.vd = vd;
this.vd2 = null;
}

public VirtualDesktopHandle(IVirtualDesktop22000 vd)
{
this.vd = null;
this.vd2 = vd;
}

public bool IsViewVisible(IApplicationView pView)
{
if (vd2 != null) return vd2.IsViewVisible(pView);
return vd.IsViewVisible(pView);
}

public Guid GetID()
{
if (vd2 != null) return vd2.GetId();
return vd.GetID();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,85 @@ internal interface IVirtualDesktopManagerInternal14328
IVirtualDesktop FindDesktop(ref Guid desktopId);
}

public enum AdjacentDesktop
/*
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("0f3a72b0-4566-487e-9a33-4ed302f6d6ce")]
internal interface IVirtualDesktopManagerInternal2
{
int GetCount();
void MoveViewToDesktop(IApplicationView view, IVirtualDesktop desktop);
bool CanViewMoveDesktops(IApplicationView view);
IVirtualDesktop GetCurrentDesktop();
void GetDesktops(out IObjectArray desktops);
[PreserveSig]
int GetAdjacentDesktop(IVirtualDesktop from, AdjacentDesktop uDirection, out IVirtualDesktop desktop);
void SwitchDesktop(IVirtualDesktop desktop);
IVirtualDesktop CreateDesktop();
void RemoveDesktop(IVirtualDesktop desktop, IVirtualDesktop fallback);
IVirtualDesktop FindDesktop(ref Guid desktopid);
void Unknown1(IVirtualDesktop desktop, out IntPtr unknown1, out IntPtr unknown2);
void SetName(IVirtualDesktop desktop, [MarshalAs(UnmanagedType.HString)] string name);
}
*/

[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("b2f925b9-5a0f-4d2e-9f4d-2b1507593c10")]
internal interface IVirtualDesktopManagerInternal22000
{
int GetCount(IntPtr hWndOrMon);

void MoveViewToDesktop(IApplicationView view, IVirtualDesktop22000 desktop);

bool CanViewMoveDesktops(IApplicationView view);

IVirtualDesktop22000 GetCurrentDesktop(IntPtr hWndOrMon);

IObjectArray GetAllCurrentDesktops();

void GetDesktops(IntPtr hWndOrMon, out IObjectArray desktops);

[PreserveSig]
int GetAdjacentDesktop(IVirtualDesktop22000 from, AdjacentDesktop uDirection, out IVirtualDesktop22000 desktop);

void SwitchDesktop(IntPtr hWndOrMon, IVirtualDesktop22000 desktop);

IVirtualDesktop22000 CreateDesktop(IntPtr hWndOrMon);

void MoveDesktop(IVirtualDesktop22000 desktop, IntPtr hWndOrMon, int nIndex);

void RemoveDesktop(IVirtualDesktop22000 desktop, IVirtualDesktop22000 fallback);

IVirtualDesktop22000 FindDesktop(ref Guid desktopid);

void GetDesktopSwitchIncludeExcludeViews(IVirtualDesktop22000 desktop, out IObjectArray unknown1, out IObjectArray unknown2);

void SetDesktopName(IVirtualDesktop22000 desktop, [MarshalAs(UnmanagedType.HString)] string name);

void SetDesktopWallpaper(IVirtualDesktop22000 desktop, [MarshalAs(UnmanagedType.HString)] string path);

void UpdateWallpaperPathForAllDesktops([MarshalAs(UnmanagedType.HString)] string path);

void CopyDesktopState(IApplicationView pView0, IApplicationView pView1);

int GetDesktopIsPerMonitor();

void SetDesktopIsPerMonitor(bool state);
}

public enum AdjacentDesktop
{
LeftDirection = 3,
RightDirection = 4,
Expand Down
Loading

0 comments on commit eaa4a1c

Please sign in to comment.