微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

按进程名称在窗口上激活 WinActivate?

如何解决按进程名称在窗口上激活 WinActivate?

简单地说,我希望 Ctrl+Alt+T 激活 Windows 终端窗口。以前我用过这个:

^!T::
    if WinExist("Windows PowerShell")
        WinActivate
    else
        Run,wt
Return

但这已经不再适用了,因为当我使用 Posh Git 时,Windows 终端会更改其标题

所以我需要在进程名称为“WindowsTerminal.exe”的任何窗口上激活该窗口。

我已经试过了,但由于某种原因它不能识别正确的窗口:

^!T::
    if WinExist(ahk_exe "WindowsTerminal.exe")
        WinActivate
    else
        Run,wt
Return

enter image description here

解决方法

您使用进程/exe 名称调用 WinExist 的语法不正确

代替:

if WinExist(ahk_exe "WindowsTerminal.exe")

您还需要将其中的 ahk_exe 部分包含在引号中。

就像这样:

if WinExist("ahk_exe WindowsTerminal.exe")

最终代码:

^!T::
    if WinExist("ahk_exe WindowsTerminal.exe")
        WinActivate
    else
        Run,wt
Return
,

解决方案:

^!T::
    _WindowId = -1
    WinGet _Windows,List
    Loop %_Windows%
    {
        _Id := _Windows%A_Index%
        WinGet,_PName,ProcessName,ahk_id %_Id%
        if (_PName == "WindowsTerminal.exe")
        {
            _WindowId = %_Id%
            break
        }
    }
    if (_WindowId != -1)
    {
        WinActivate,ahk_id %_WindowId%
    } else
    {
        Run,wt
    }
Return

使用 AHK 可能有一种更短的方法可以做到这一点,但我再也不会被那种粗俗的语法所困扰了。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。