AutoHotkey + Windows 8:运行桌面应用程序

AutoHotkey + Windows 8:运行桌面应用程序

我有一个简单的 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 中则不执行任何操作。

答案1

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

答案2

这似乎有效,从 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 作为参数。

答案3

我创建了一个可以帮助解决该问题的脚本,它允许打开、最小化或恢复窗口快捷方式、窗口应用程序、Chrome 应用程序或 Chrome 快捷方式。

它还具有一些其他功能,如错误捕获等。代码在这里: https://github.com/JuanmaMenendez/AutoHotkey-script-Open-Show-Apps

配置示例

F7:: OpenOrShowAppBasedOnExeName("C:\Windows\System32\SnippingTool.exe")

F8:: OpenOrShowAppBasedOnWindowTitle("Gmail", "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe --app=https://mail.google.com/mail/")

我希望你发现它有用 ;)

相关内容