我有一个简单的 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/")
我希望你发现它有用 ;)