Tabs Outliner - 是否可以使用 Chrome 主 UI 最小化和最大化其窗口

Tabs Outliner - 是否可以使用 Chrome 主 UI 最小化和最大化其窗口

标签大纲,即使 Chrome 的主 UI 已最小化,窗口仍保持不变。

请在此处查看扩展程序和 Chrome 的 UI,其中显示了我想要的内容。

在此处输入图片描述

是否可以通过设置或甚至通过自动热键脚本可以最小化和最大化 Outliner 窗口和 Chromes 选项卡吗?

答案1

是的,您可以使用 AutoHotkey 来做到这一点...

实现此目的的最简单方法是,每当 Chrome 变为活动状态时监视活动窗口,然后一旦它不再处于活动状态,检查它是否已最小化。如果它已最小化,则可以最小化另一个窗口。

下面是一些基本的示例代码,您需要根据自己的目的进行调整——但有几点注意事项。

  1. 使用轮询例程可以轻松完成此操作,但轮询当然有延迟。另一种方法是挂接窗口事件,但在大多数情况下(为了简单起见),轮询几乎可以满足您的要求,即即使需要几百毫秒,它仍然可用。

  2. 这个基本示例的另一个注意事项是,您必须先实际使用 Chrome,它才能检测到最小化事件。在实际使用中,有时您不会激活 Chrome,但会想直接将其最小化,在这种情况下,它会在未先激活的情况下被最小化。即使在窗口不活动后,也可以通过轮询窗口来检测和处理这种情况,但您需要修改基本示例代码才能做到这一点,而该代码本来就不是为处理这种情况而编写的。

  3. 最后需要注意的是,如果您打开了多个 Chrome 窗口,则需要以稍微不同的方式处理它们。例如,您不会因为第一个 Chrome 窗口被最小化而最小化 Tabs Outliner,但如果所有 Chrome 窗口都最小化,您可能希望将其最小化。这需要进行修改以检查打开了多少个窗口、它们是否都最小化了等等。

还可以实现全面的“对接”功能作为此概念的扩展(如果正确实现,效果会很好),在这种情况下,根据您想要编写的编码量,您可能会:

  • 让 Tabs Outliner 窗口“停靠”到 Chrome 窗口(即,强制左侧或右侧窗口边缘之间的水平间距为 0)
  • 如果调整了一个窗口,则保持两个窗口的垂直高度相同
  • 当 Tabs Outliner 最小化时最小化 Chrome
  • 每当 Tabs Outliner 恢复时恢复 Chrome(参见注释掉的代码)
  • 如果 Chrome 已最大化,则取消恢复并为 Tabs Outliner 腾出空间
  • 等等——取决于你想让它变得多么花哨

不过关键的一点是,使用 AutoHotkey 中的轮询循环以及使用可以检查大小、状态、修改所涉及的各种窗口等的基本窗口函数可以很容易地完成。

示例代码

SetTitleMatchMode, 2
tooltipsOn:=True  ; set false once finished debugging
Loop {
    If (ActiveID:=WinActive("Chrome ahk_exe chrome.exe")) {
        If tooltipsOn 
            Tooltip, Chrome detected active...
        WinWaitNotActive, ahk_id %ActiveID%
        If tooltipsOn 
            Tooltip, Chrome detected no longer active...
        WinGet, MinMaxState, MinMax, % "ahk_id" ActiveID
        If (MinMaxState=-1) {
            WinMinimize("Tabs Outliner")
            If tooltipsOn 
                Tooltip, Chrome detected no longer active... Minimizing Tabs Outliner...
        } Else If tooltipsOn 
            Tooltip, Chrome detected no longer active... MinMaxSate=%MinMaxState%
        
    } 
    ;Else If WinActive("Tabs Outliner") { ; restore chrome if Tabs Outliner is activated
    ;   If tooltipsOn
    ;       Tooltip, Found Tabs Outliner...
    ;   WinGet, MinMaxState, MinMax, % "ahk_id" WinExist("Chrome ahk_exe chrome.exe")
    ;   If (MinMaxState=-1)
    ;       WinRestore("Chrome ahk_exe chrome.exe")
    ;   
    ;   If tooltipsOn
    ;       Tooltip MinMaxState=%MinMaxState%
    ;   
    ;}
    
    If tooltipsOn {
        Sleep 1500  
        Tooltip
    }
        
    Sleep 10
}

相关内容