Я только что сделал скрипт для autohotkey, который выполняет это в Windows 10 до 10 рабочих столов.
Как работает:
скачать и установить autohotkey. Скопируйте и вставьте код ниже в блокнот и сохраните его с расширением .транспортное средство
Я предлагаю сделать ярлык этого файла в папке автозагрузки, чтобы он запускался при запуске Windows.
ГОРЯЧИЕ КЛАВИШИ ПО УМОЛЧАНИЮ:
переключатель рабочий стол: WIN + номер рабочего стола (0 = номер рабочего стола 10)
новый рабочий стол: CTRL + WIN+D
закрыть рабочий стол: CTRL + WIN+F4
отображение состояния рабочего стола: WIN+'
важно:
для того, чтобы он работал, вы должны использовать только горячие клавиши для открытия, закрытия и изменения рабочих столов, потому что сценарий слушает эти горячие клавиши, чтобы знать текущее и общее количество рабочих столов.
Если вы создаете, закрыть или изменить десктопы через меню WIN + TAB мышкой скрипт перестанет работать. Чтобы заставить его работать снова, вам нужно будет отредактировать первые две строки, чтобы отразить текущее состояние ваших рабочих столов. (desktopcount / currentdesktop)
это не означает, что вы не можете использовать экран WIN+TAB в качестве обзора ваших текущих рабочих столов. Вы можете использовать его в комбинации горячих клавиш для организации рабочего стола. Да, горячие клавиши по-прежнему работают при открытом средстве просмотра задач windows! (WIN+TAB) просто Не используйте мышь!!!
кроме того, подождите, пока скрипт загрузится после запуска Windows, Прежде чем создавать новые рабочие столы, или он не будет работать. Это может занять некоторое время в зависимости от того, сколько программ запуска у вас есть.
Ok, я добавил еще одну вещь, чтобы упростить повторную синхронизацию скрипта с состоянием рабочего стола. Теперь есть горячая клавиша, которая будет отображать состояние, в котором скрипт считает рабочие столы, поэтому все, что вам нужно сделать, это настроить рабочие столы с помощью мыши, чтобы они соответствовали скрипт и все это будет синхронизировано снова! Для меня со швейцарской клавиатурой это сработало хорошо имея '? ключ рядом с 0, и это имеет смысл с a ? на нем, но на других клавиатурах вы можете изменить это, что можно легко сделать, изменив строку сразу после горячей клавиши для 0/10 (начиная с #') на то, что вам нравится.
на самом деле, я только что понял.... до тех пор, пока количество рабочих столов правильно, чем создание нового рабочего стола будет автоматически повторно синхронизировать текущий рабочий стол значение.
(строки, начинающиеся с ; являются комментариями и никак не влияют на сценарий)
код:
#NoTrayIcon
;If the script stops working:
;Change the following values to reflect your current desktop state and reload the script.
;Remember to change them back to 1 after reloading the script if you have it set to start with Windows
desktopcount := 1
currentdesktop := 1
;You can change the hotkeys for creating, closing, and switching desktops bellow.
;The current hotkeys are CTRL+WIN+D for new desktop, CTRL+WIN+F4 to close desktop
;and WIN+NUMBER for switching desktops.
;For example, to change the hotkey for new desktop replace ^#D bellow with the desired hotkey.
;Refer to the autohotkey documentation for a full list of symbols refering to modifier keys,
;as you can see ^ is CTRL and # is WIN key.
;If you wanted to change the switch desktop from WIN key to CTRL for example you would have
;to replace the # before each number to a ^
^#D::NewDesktop()
^#F4::CloseDesktop()
#1::SwitchDesktop(1)
#2::SwitchDesktop(2)
#3::SwitchDesktop(3)
#4::SwitchDesktop(4)
#5::SwitchDesktop(5)
#6::SwitchDesktop(6)
#7::SwitchDesktop(7)
#8::SwitchDesktop(8)
#9::SwitchDesktop(9)
#0::SwitchDesktop(10)
#'::MsgBox Desktop Count = %desktopcount%`nCurrent Desktop = %currentdesktop%
;Do not change anything after this line, unless you know what you are doing ;)
;-----------------------------------------------------------------------------------------------
SwitchDesktop(desktop)
{
global desktopcount
global currentdesktop
desktopdiff := desktop - currentdesktop
if (desktop > desktopcount)
{
return
}
if (desktopdiff < 0)
{
desktopdiff *= -1
Loop %desktopdiff%
{
Send ^#{Left}
}
}
else if (desktopdiff > 0)
{
Loop %desktopdiff%
{
Send ^#{Right}
}
}
currentdesktop := desktop
}
NewDesktop()
{
global desktopcount
global currentdesktop
if (desktopcount > 9)
{
return
}
desktopcount ++
currentdesktop := desktopcount
Send ^#d
}
CloseDesktop()
{
global desktopcount
global currentdesktop
desktopcount --
if (currentdesktop != 1)
{
currentdesktop --
}
Send ^#{f4}
}