Я хотел бы, чтобы Windows 8 автоматически возвращалась к начальному экрану Metro при закрытии программы или файла, а не возвращалась на рабочий стол.
Как это может быть сделано?
Я хотел бы, чтобы Windows 8 автоматически возвращалась к начальному экрану Metro при закрытии программы или файла, а не возвращалась на рабочий стол.
Как это может быть сделано?
Вы можете добиться этого с помощью AutoHotKey. Установите его и создайте следующие 2 файла:
switcher.ahk
#SingleInstance force
WinGet, id_ini, list,,, Program Manager
prev = %id_ini%
loop
{
sleep 3000 ; Milliseconds for which the loop waits before another iteration
WinGet, id, list,,, Program Manager
current = %id%
if(current < prev)
{
;somethin closed - press windows key here
Run, "C:\press_windows.vbs"
}
prev = %id%
sleep 500
}
press_windows.vbs
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.SendKeys "^{ESCAPE}"
После создания обоих файлов и настройки пути в файле switcher.ahk на местоположение созданных вами vbs. Вам просто нужно запустить файл Autohotkey (т.е. switcher.ahk), и все готово.
При этом будут учитываться все окна (исключая фоновые службы и процессы), а при уменьшении количества окон отправляется нажатие клавиши Windows и переключение на Modern-UI.
Я использую VBS, потому что по какой-то причине Windows-8 не принимает нажатие клавиши Windows от AHK.
Примечание. Этот скрипт необходимо доработать, иногда он может вести себя неожиданно, поскольку он также считает контекстное меню и уведомления как новое окно. Поэтому, когда они закрыты, посылается нажатие клавиши.
Чтобы избежать такого поведения, мы должны исключить такие вещи, которые можно легко сделать.
Если вы создаете файл сценария VBS и используете его для запуска целевого приложения, следующие инструкции будут выполнять все, что вам нужно:
'// File: app2metro.vbs
'// Desc: launch notepad then return to the metro interface
'//create shell object
Set WshShell = WScript.CreateObject("WScript.Shell")
'// run and wait for it to return
intReturn = WshShell.Run("notepad " & WScript.ScriptFullName, 1, TRUE)
'//switch to metro
WshShell.SendKeys "^{ESCAPE}"
Хотя совсем не сложно нажать клавишу "Windows" после закрытия программы, имеет смысл, что если вы запустите программу с начального экрана Metro, вы вернетесь к ней позже. Особенно если это то, что вы хотите продвигать.