본문 바로가기
c#

Windows 10 및 Windows 11에서 가상 데스크톱을 관리하는 C# command util 도구

by yoon-record 2023. 7. 4.

Windows 10 및 Windows 11에서 가상 데스크톱을 관리하는 C# 명령줄 도구

https://github.com/MScholtes/VirtualDesktop

 

ex) notepad 프로세스를 3번 데스크탑으로 이동

(데스크탑 번호는 0번부터 시작, 데스트탑이 4개인경우 0 1 2 3)

virtualdesktop gd:3 mw:notepad

 

아래는 메뉴얼입니다.

E:\project_down>virtualdesktop


VirtualDesktop.exe                              Markus Scholtes, 2023, v1.13

Command line tool to manage the virtual desktops of Windows 10.
Parameters can be given as a sequence of commands. The result - most of the
times the number of the processed desktop - can be used as input for the next
parameter. The result of the last command is returned as error level.
Virtual desktop numbers start with 0.

Parameters (leading / can be omitted or - can be used instead):

/Help /h /?      this help screen.
/Verbose /Quiet  enable verbose (default) or quiet mode (short: /v and /q).
/Break /Continue break (default) or continue on error (short: /b and /co).
/List            list all virtual desktops (short: /li).
/Count           get count of virtual desktops to pipeline (short: /c).
/GetDesktop:<n|s> get number of virtual desktop <n> or desktop with text <s> in
                   name to pipeline (short: /gd).
/GetCurrentDesktop  get number of current desktop to pipeline (short: /gcd).
/Name[:<s>]      set name of desktop with number in pipeline (short: /na).
/IsVisible[:<n|s>] is desktop number <n>, desktop with text <s> in name or with
                   number in pipeline visible (short: /iv)? Returns 0 for
                   visible and 1 for invisible.
/Switch[:<n|s>]  switch to desktop with number <n>, desktop with text <s> in
                   name or with number in pipeline (short: /s).
/Left            switch to virtual desktop to the left of the active desktop
                   (short: /l).
/Right           switch to virtual desktop to the right of the active desktop
                   (short: /ri).
/Wrap /NoWrap    /Left or /Right switch over or generate an error when the edge
                   is reached (default)(short /w and /nw).
/New             create new desktop (short: /n). Number is stored in pipeline.
/Remove[:<n|s>]  remove desktop number <n>, desktop with text <s> in name or
                   desktop with number in pipeline (short: /r).
/SwapDesktop:<n|s>  swap desktop in pipeline with desktop number <n> or desktop
                   with text <s> in name (short: /sd).
/InsertDesktop:<n|s>  insert desktop number <n> or desktop with text <s> in
                   name before desktop in pipeline or vice versa (short: /id).
/MoveWindowsToDesktop:<n|s>  move windows on desktop in pipeline to desktop
                   number <n> or desktop with text <s> in name (short: /mwtd).
/MoveWindow:<s|n>  move process with name <s> or id <n> to desktop with number
                   in pipeline (short: /mw).
/MoveWindowHandle:<s|n>  move window with text <s> in title or handle <n> to
                   desktop with number in pipeline (short: /mwh).
/MoveActiveWindow  move active window to desktop with number in pipeline
                   (short: /maw).
/GetDesktopFromWindow:<s|n>  get desktop number where process with name <s> or
                   id <n> is displayed (short: /gdfw).
/GetDesktopFromWindowHandle:<s|n>  get desktop number where window with text
                   <s> in title or handle <n> is displayed (short: /gdfwh).
/IsWindowOnDesktop:<s|n>  check if process with name <s> or id <n> is on
                   desktop with number in pipeline (short: /iwod). Returns 0
                   for yes, 1 for no.
/IsWindowHandleOnDesktop:<s|n>  check if window with text <s> in title or
                   handle <n> is on desktop with number in pipeline
                   (short: /iwhod). Returns 0 for yes, 1 for no.
/ListWindowsOnDesktop[:<n|s>]  list handles of windows on desktop number <n>,
                   desktop with text <s> in name or desktop with number in
                   pipeline (short: /lwod).
/CloseWindowsOnDesktop[:<n|s>]  close windows on desktop number <n>, desktop
                   with text <s> in name or desktop with number in pipeline
                   (short: /cwod).
/PinWindow:<s|n>  pin process with name <s> or id <n> to all desktops
                   (short: /pw).
/PinWindowHandle:<s|n>  pin window with text <s> in title or handle <n> to all
                   desktops (short: /pwh).
/UnPinWindow:<s|n>  unpin process with name <s> or id <n> from all desktops
                   (short: /upw).
/UnPinWindowHandle:<s|n>  unpin window with text <s> in title or handle <n>
                   from all desktops (short: /upwh).
/IsWindowPinned:<s|n>  check if process with name <s> or id <n> is pinned to
                   all desktops (short: /iwp). Returns 0 for yes, 1 for no.
/IsWindowHandlePinned:<s|n>  check if window with text <s> in title or handle
                   <n> is pinned to all desktops (short: /iwhp). Returns 0 for
                   yes, 1 for no.
/PinApplication:<s|n>  pin application with name <s> or id <n> to all desktops
                   (short: /pa).
/UnPinApplication:<s|n>  unpin application with name <s> or id <n> from all
                   desktops (short: /upa).
/IsApplicationPinned:<s|n>  check if application with name <s> or id <n> is
                   pinned to all desktops (short: /iap). Returns 0 for yes, 1
                   for no.
/Calc:<n>        add <n> to result, negative values are allowed (short: /ca).
/WaitKey         wait for key press (short: /wk).
/Sleep:<n>       wait for <n> milliseconds (short: /sl).

Hint: Instead of a desktop name you can use LAST or *LAST* to select the last
virtual desktop.
Hint: Insert ^^ somewhere in window title parameters to prevent finding the own
window. ^ is removed before searching window titles.

Examples:
Virtualdesktop.exe /LIST
Virtualdesktop.exe "-Switch:Desktop 2"
Virtualdesktop.exe -New -Switch -GetCurrentDesktop
Virtualdesktop.exe Q N /MOVEACTIVEWINDOW /SWITCH
Virtualdesktop.exe sleep:200 gd:1 mw:notepad s
Virtualdesktop.exe /Count /continue /Remove /Remove /Count
Virtualdesktop.exe /Count /Calc:-1 /Switch
VirtualDesktop.exe -IsWindowPinned:cmd
if ERRORLEVEL 1 VirtualDesktop.exe PinWindow:cmd
Virtualdesktop.exe -GetDesktop:*last* "-MoveWindowHandle:note^^pad"

 

'c#' 카테고리의 다른 글

c# dll 폴더 관리  (0) 2023.07.27