Еще один сценарий AHK

Еще один сценарий AHK

Представлена ​​Windows 10Вид задачи- возможность иметь несколько виртуальных рабочих столов. Когда я нахожусь в окне на Рабочем столе 1, как быстрее всего переместить его на Рабочий стол 2?

В настоящее время мне нужно войти в переключатель задач (значок на панели задач или Win+ Tab), найти окно и перетащить его между рабочими столами. Это неудобно. Есть ли более быстрый способ?

решение1

Я думаю, что для более быстрого переключения это должно быть в заголовке окна, поэтому я создал для этого инструмент:

https://github.com/Eun/MoveToDesktop

введите описание изображения здесь

Вы также можете перемещать окна с помощью WIN+ ALT+ Left/ Rightили менять сочетание клавиш по мере необходимости.

решение2

Я также искал эту опцию, и, судя по результатам поиска (думаю, я также видел ее на форумах Microsoft), на данный момент она не является встроенной.

Лучший способ, который я придумал на данный момент, чтобы избежать использования мыши, это:

  • Winkey+ tabдля экрана рабочего стола
  • Щелкните правой кнопкой мыши по окну, которое вы хотите переместить.
    Используйте правую кнопку мыши на клавиатуре или Shift+ F10, если у вас нет такой клавиши на клавиатуре.
  • Выберите Move to(или введите M, так как он отмечен), а затем нужный вам рабочий стол (или Nдля нового рабочего стола, также отмеченный)

Это не особо помогает, но так будет до тех пор, пока кто-то не придумает что-то, что облегчит задачу.

Обновлять:Я начал изучать это. Есть значение реестра, которое изменяется, когда приложение перемещается между рабочими столами. В этом месте находятся все открытые приложения:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\ApplicationViewManagement 
(I guess the session number will change if there is more than one logged in).

Идентификатор текущего рабочего стола находится здесь:

HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\SessionInfo\1\VirtualDesktops\CurrentVirtualDesktop

Недостаточно просто изменить ее на другую клавишу виртуального рабочего стола, поскольку необходимо некоторое обновление пользовательского интерфейса.

Я проверил с помощью procmon, и вот библиотеки DLL, которые используются в процессе:

  • msctf.dll
  • twinui.dll
  • windows.immersiveshell.serviceprovider.dll
  • shell32.dll
  • UIAnimation.dll

Я предполагаю, что один из них отвечает за визуальное обновление, и главный подозреваемый — UIAnimation.dll!

Если кто-то захочет продолжить расследование, это послужит началом.

решение3

Еще один сценарий AHK

#Left::
  WinGetTitle, Title, A
  WinSet, ExStyle, ^0x80, %Title%
  Send {LWin down}{Ctrl down}{Left}{Ctrl up}{LWin up}
  sleep, 50
  WinSet, ExStyle, ^0x80, %Title%
  WinActivate, %Title%
Return

#Right::
  WinGetTitle, Title, A
  WinSet, ExStyle, ^0x80, %Title%
  Send {LWin down}{Ctrl down}{Right}{Ctrl up}{LWin up}
  sleep, 50
  WinSet, ExStyle, ^0x80, %Title%
  WinActivate, %Title%
Return

Это перемещает активное окно влево или вправо с помощью клавиш win+стрелка. Протестировано на Win10 версии 10.0.17134.1365 с отключенной анимацией.

решение4

На этом уровне управления Windows, я действительно думаю, что вам следует использовать стороннюю программу, чтобы помочь. Моим собственным решением было добавить простой ярлык дляAutoHotKey(АХК):

#|::Send, +{F10}M{Enter}

#|это сокращение, которое переводится как Win+|

На моей клавиатуре это имеет смысл, как |указано выше Tab, но вы можете изменить это на то, что вам нужно.

С использованиемвыше ответ arieljannai, отправив Shift+ F10, M, Enter, отмеченное окно будет перемещено на другой виртуальный рабочий стол, если вы переключаетесь между двумя.

Для ознакомления с AHK см.https://autohotkey.com/docs/Tutorial.htm.

Связанный контент