【问题标题】:Switch to active window to left/right in taskbar在任务栏中向左/向右切换到活动窗口
【发布时间】:2015-10-02 19:47:17
【问题描述】:

我已经使用7+ Taskbar Tweaker 一天了,我对两个功能感到震惊。主要是因为 windows alt+tab 没有记住打开窗口的顺序。我经常使用两个命令。 101 - 切换到位于任务栏上活动窗口左侧的窗口和切换到位于任务栏上活动窗口右侧的窗口。

所以当我进行一些编程并且必须在窗口之间快速切换时,我只需为这两个操作分配快捷方式。它使窗口之间的切换变得如此简单。一个键是向左移动焦点,另一个是向右移动。

是否可以在自动热键中执行此操作?会很棒的。因为实际上我不需要整个程序,只需要这个功能。我在网上看到了它的一些代码,但它在 win 7/64 中不起作用。基本上我需要脚本来分配热键,以便将焦点从任务栏上的活动窗口移动到左侧或右侧。此外,当它用完左/右窗口时,它应该回到起始窗口(就像正常的 alt 选项卡一样。)

【问题讨论】:

  • 是的,它在 robertcollier4 的 TaskbarNavigation 脚本中实现。
  • 是的,我首先看到了,但它在 win 7/64 中不起作用。

标签: scripting window autohotkey


【解决方案1】:

哦...是的,我认为我在几年前编写了一个脚本可以做到这一点,但我不确定我是如何做到的。
这里真正的问题是在 takbar 中找到窗口的顺序。
但我可以告诉你,它没有官方的 api,而且从我使用注册表监控软件可以看出,订单没有存储在注册表中。

目前,这是我唯一想到的:

F1::WinActivateByTbIndex(4) ;activate the fourth window in the task bar with F1
F2::WinActivateByTbIndex(2) ;activate the second window in the task bar with F2


WinActivateByTbIndex(index) {
    WinActivate, ahk_class Shell_TrayWnd
    ControlSend, MSTaskListWClass1, % "{Tab}{Right " index-1 "}", ahk_class Shell_TrayWnd
    Send, {Up}{Enter}
}  

但是如果你在一个任务栏图标后面有多个窗口,那么你将只启用第一个,所以这可能不太有用..

Windows 还提供快捷键 Win+1 到 Win+0 Win+2 ... upt 到 Win+0 作为启用窗口 1-10 的快捷方式,但它有两个限制:它仅适用于第一个10 个窗口,你总是激活堆栈的第一个窗口(就像我的热键一样)。

【讨论】:

    【解决方案2】:

    实际上,我读了很多关于这方面的文章,Windows 中的原生 alt + escalt+ shift +esc 在我需要的功能方面做得很好。它通过打开的窗户循环,以便它们打开。唯一的缺点是,如果您已最小化窗口,它将选择它们并且它们将保持最小化,它不会将它们放在前面。我被这个绊倒了,直到我弄清楚了。一种快捷方式是左右移动,您只需要按照您想要循环的顺序打开窗口。

    所以.. alt+escalt+ shift+esc 正在工作,但它们很难按,特别是如果你想快速做到这一点。自动热键出现了,我测试了这段代码,它运行良好。

     !w::
       sendInput {alt down}{esc}{alt up}
      return
    
     !e::
       sendInput {alt down}{shift down}{esc}{alt up}{shift up}
      return
    

    【讨论】:

    • 如果任务栏顺序无关紧要并且进程创建时间足够,那么您可以使用WinGet, Window, ListComObjGet("winmgmts:").ExecQuery("Select * from Win32_Process") 进行更清洁。
    猜你喜欢
    • 2011-06-01
    • 2012-11-18
    • 2013-01-04
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 2013-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多