1

У меня есть простой скрипт AHK:

#n::Run notepad.exe

Если я смотрю на рабочий стол и нажимаю Win+N, я вижу Блокнот. Проблема в том, что если я смотрю на стартовый экран и нажимаю Win+N, я ничего не получаю. Блокнот открывается на рабочем столе, но не выводит меня на рабочий стол, чтобы увидеть его.

Это нормальное поведение? Есть ли какой-нибудь причудливый способ вывести меня на рабочий стол, если меня сейчас нет? Может быть, видя, что активным окном является ImmersiveLauncher , нажмите клавишу Пуск? AutoHotkey может сделать это, верно?

Правка 1: Я понял логику, но быстро понял, что клавиша «Пуск» не всегда выводит вас на рабочий стол. Из приложения вы переходите на экран «Пуск», а с экрана «Пуск» - к последнему приложению, которое вы использовали.

Win8Fix()
{
    WinGetClass, class,  A
    if class = ImmersiveLauncher
        Send, {LWin down}{LWin up}
}

#n::
Win8Fix()
Run notepad.exe

Вместо Send, {LWin down}{LWin up} , я попытался проявить творческий подход и нажал Win+B, который фокусируется на панели задач, но я не смог заставить это работать с AHK:

if class = ImmersiveLauncher
    Send, {LWin down}{b down}{LWin up}

Он работает в режиме рабочего стола, но ничего не делает в Metro.

2 ответа2

3
#n::
{
    Run notepad.exe
        WinActivate, Program Manager
}
0

Это, кажется, работает, получил это от форумов AHK-

Win8Fix(ByRef pid)
{
    WinWait ahk_pid %pid%,,5

    if !ErrorLevel ; Didn't time out.
    {
        WinActivate
    }
}

#n::
Run notepad.exe,,,pid
Win8Fix(pid)
return

К сожалению, не очень хорошо работает для URL-адресов, таких как #g::Run www.google.com,,,pid , но вы все равно можете настроить таргетинг на исполняемый файл браузера и передать www.google.com в качестве аргумента.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .