How to? Closing desktop created by DESKTOP command

Jul 29, 2016
49
1
I was just experimenting with the DESKTOP command (running Windows 10 Pro, and TCC v26.02.43). The documentation says that the desktops created in Windows 10 are just "virtual" desktops, so I wanted to see what it was like to create a "real" desktop via TCC. The desktop was created successfully and I can successfully switch between the two using the DESKTOP command, but now I want to know how I can close the new desktop that I created.
 
Jul 29, 2016
49
1
Good to know. I haven't been keeping up on the forums lately, but I was playing around with "desktops" in Windows 10 and looked in the TCC documentation about the DESKTOP command. I had tried it in Windows 8.1, but it caused problems. I tried it again now in Windows 10 (thinking there was a difference between "virtual" desktops and the ones that TCC creates), and it actually worked, but discovered that it doesn't work totally properly.
 
Is a binary available (I couldn't find one) or do you have to build it yourself?
Nope, you must build it yourself.

All you have to do is run the Compile.bat
Code:
@echo off
:: Markus Scholtes, 2020
:: Compile VirtualDesktop in .Net 4.x environment
setlocal

C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe "%~dp0VirtualDesktop.cs" /win32icon:"%~dp0MScholtes.ico"
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe "%~dp0VirtualDesktop1803.cs" /win32icon:"%~dp0MScholtes.ico"
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe "%~dp0VirtualDesktop1607.cs" /win32icon:"%~dp0MScholtes.ico"

:: was batch started in Windows Explorer? Yes, then pause
echo "%CMDCMDLINE%" | find /i "/c" > nul
if %ERRORLEVEL%==0 pause

Joe
 
May 20, 2008
10,987
86
Syracuse, NY, USA
Nope, you must build it yourself.

All you have to do is run the Compile.bat
Code:
@echo off
:: Markus Scholtes, 2020
:: Compile VirtualDesktop in .Net 4.x environment
setlocal

C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe "%~dp0VirtualDesktop.cs" /win32icon:"%~dp0MScholtes.ico"
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe "%~dp0VirtualDesktop1803.cs" /win32icon:"%~dp0MScholtes.ico"
C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe "%~dp0VirtualDesktop1607.cs" /win32icon:"%~dp0MScholtes.ico"

:: was batch started in Windows Explorer? Yes, then pause
echo "%CMDCMDLINE%" | find /i "/c" > nul
if %ERRORLEVEL%==0 pause

Joe
Yup, that's what I did. I had no idea that I couild build anything in C#. What do you do with a command line interface to virtual desktops? Win-Ctrl-D, Win-Ctrl-Left/Right, and Win-Ctrl-F4 do all I want.
 
May 20, 2008
10,987
86
Syracuse, NY, USA
It's interesting how the command line arguments form a "pipeline" (as the skimpy help says) with the desktop_in_question being automatically passed from argument to argument. I called the executable VD.EXE and came up with this one.

Code:
start devenv & delay 2 & vd /N /MW:%@pid[devenv.exe] /S

That is, start devenv, wait a bit, create a new desktop, move devenv to it, and switch to it
 
May 20, 2008
10,987
86
Syracuse, NY, USA
... and I just realized that that could be done more simply (and more logically):

Code:
vd /n /s & start devenv

It's a little odd how TCC (on a hidden desktop after vd /n /s) starts devenv on the (new) visible desktop.
 
It's a little odd how TCC (on a hidden desktop after vd /n /s) starts devenv on the (new) visible desktop.
I was single-stepping through the VirtualDesktop.cs code (using CS-Script) in Visual Studio 2019, and it seems (as @rconn said previously) that Microsoft keeps changing the way they handle Virtual Desktops.

Way above my C# abilities, which is why I only use C# for scripting.

The author has also written a module that provides management of Virtual Desktops in PowerShell.

Joe