Autohotkey Window-ID

时间:2015-04-08 16:03:04

标签: autohotkey

可以有人帮助我,我拿了一个脚本并用评论修改了我不需要的部分。现在我想稍微改变脚本的工作方式。

Alt + 4在弹出窗口中发布活动窗口的WIndow-ID

Alt + 3将编辑器放在前面/焦点

Alt + 2将Internet Explorer置于前端/焦点

现在我希望IE和编辑器不会成为焦点,因为有名称,我希望它们成为焦点,因为它有Window-ID。

我该怎么做?那可能吗?在文档中,我没有找到通过ifwinaktive Doku

输入ID的可能性
!4::
WinGet, active_id, ID, A
MsgBox, The active window's ID is "%active_id%".
return

!3::ToggleWindow("Editor")
!2::ToggleWindow("Internet")


ToggleWindow(TheWindowTitle)
{
    SetTitleMatchMode,2
    DetectHiddenWindows, Off
    IfWinActive, %TheWindowTitle%
    {
       ;;;;; WinMinimize, %TheWindowTitle%
    }
    Else
    {
        IfWinExist, %TheWindowTitle%
        {
            WinActivate
            ;;;;; Tried using WinMaximize/WinRestore here but same result
        }
        Else
        {
            ;;;;; DetectHiddenWindows, On
            ;;;;; IfWinExist, %TheWindowTitle%
            ;;;;; {
            ;;;;;     WinShow
            ;;;;;     WinActivate
            ;;;;; }
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我希望我理解你的问题:你想对不同的进程ID使用ifWinActive

有几种方法可以确定您的窗口。另请参阅WinTitle以供参考。我要复制一些我曾经寄给我的朋友的文字。

通常不会改变的WinTitle参数:

; ahk_class does not change after program restart
; find out the ahk_class name with WindowSpy
ifWinActive, ahk_class Notepad
    msgBox

; process name usually does not change.
; find it out using TaskManager or winGet
ifWinActive, ahk_exe Notepad.exe
    msgBox

WinTitle参数可能会不时更改:

; the TITLE of the window, like "Editor" or "google.com".
; find it out using your eyes.
ifWinActive, Editor
    msgBox

; window TEXT.
; find it out using WindowSpy
setTitleMatchMode, slow
ifWinActive,, hi. some text which I typed in the editor
    msgBox
setTitleMatchMode, fast
; Note: you can also make use of ExcludeTitle and ExcludeText. see ifWinActive

WinTitle参数在重新启动相应程序后肯定会发生变化:

注意:为了明确识别窗口,其中一个将是您首选的方法。每个运行进程只有一个ID / PID。

; unique ID / HWND does change, you'll have to retrieve it with something stable:
winGet, editor_hwnd, ID, ahk_class Notepad
ifWinActive, ahk_id %editor_hwnd%
    msgBox

; process ID also varies:
winGet, editor_pid, PID, ahk_class Notepad
ifWinActive, ahk_pid %editor_pid%
    msgBox

所以,在你的例子中,你可以使用

!3::ToggleWindow("ahk_class Notepad")

或使用上述示例之一。