可以有人帮助我,我拿了一个脚本并用评论修改了我不需要的部分。现在我想稍微改变脚本的工作方式。
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
;;;;; }
}
}
}
答案 0 :(得分:1)
我希望我理解你的问题:你想对不同的进程ID使用ifWinActive
。
有几种方法可以确定您的窗口。另请参阅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
; 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
注意:为了明确识别窗口,其中一个将是您首选的方法。每个运行进程只有一个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")
或使用上述示例之一。