【问题标题】:Ableton Issue while trying to control click尝试控制点击时出现 Ableton 问题
【发布时间】:2017-09-16 07:15:01
【问题描述】:

尽管我已经阅读了文档并观看了教程,但我还是一个完整的初学者,所以如果这是一个愚蠢的问题,我深表歉意。我已经尝试了很长一段时间没有结果。

我希望有 NUMPAD0 键来按下 Ableton Live 中的全局录制按钮,但我不想通过鼠标坐标来完成(1.因为当我需要录制时窗口可能会被最小化和 2.因为我想将来实现这一点,以便在我创建单个轨道时也能够在单个轨道上按下录制按钮,例如,可能从 1 到 80 个新轨道)

问题是windows类是动态变化的,winspy中没有显示Control ID。

这就是我一直在做的:

GroupAdd, Live, ahk_class 
Afx:0000000140000000:0:0000000000000000:0000000000900015:00000000007A04C3
GroupAdd, Live, ahk_class 
Afx:0000000140000000:0:0000000000000000:0000000000900015:0000000000200651
GroupAdd, Live, ahk_class 
Afx:0000000140000000:0:0000000000000000:0000000000900015:0000000000290651
GroupAdd, Live, ahk_class 
Afx:0000000140000000:0:0000000000000000:0000000000900015:00000000001E05F1

curMode := 1
return


Numpad0::
 SetControlDelay -1
 controlclick, ahk_group Live0,,,,,NA
 return

所以,我的问题是: 1. 在 GroupAdd 命令中,我已经放置了我见过的窗口类,但我相信每次打开新的 Ableton 窗口时可能会出现更多的类。 2.在Control Click命令中,由于找不到控件ID,所以我没有放。

关于如何在不使用坐标的情况下完成此代码或将其更改为其他代码以便按下 Ableton 中的录制按钮的任何建议?

编辑: 这是我现在尝试的代码,遵循建议但我还没有得到任何结果:

SetTitleMatchMode, Regex
SetTitleMatchMode, Slow

#IfWinActive, .*als
Numpad0::F9
#IfWinActive
return

这是它的第二个版本,它也不起作用

SetTitleMatchMode, Regex
SetTitleMatchMode, Slow

#IfWinActive, Afx:0000000140000000
Numpad0::F9
#IfWinActive
return

【问题讨论】:

  • 除此按钮外,该程序是否没有键盘快捷键(查看手册)或用于全局录制的菜单项?您可以在 ControlClick 命令中使用SetTitleMatchMode, RegEx 和仅窗口类的一部分来代替组。
  • 是的,它确实退出了,但我想在小键盘中,因为我想设置的不仅是全局轨道,还包括从小键盘录制的单个轨道(没有默认热键在阿布顿)。这就是我现在正在做的至少让全球录音继续进行的事情,但仍然没有结果。 (我将 Ableton 中默认的录制热键 F9 键换成了 numpad0)。我已经编辑了我的问题以发布我现在正在做的代码!
  • #IfWinActive, ahk_class Afx:0000000140000000 在这种情况下是正确的语法。也可以试试 Send 或 ControlSend 命令。
  • 奇怪的是,控件 ID 或类 NN 也在动态变化,所以我不知道如何使用带有不断变化的控件 ID 的 controlsend。此外,Ahk_class 和 Class NN(我读到的应该放在 control send 中的 control 参数下)具有几乎相同的数字,因此从 Class NN 中识别 wintitle 也有点困难。我将尝试其他一些事情,如果没有任何效果,我将寻求一种方法来按照我想要的方式更改程序内部的快捷键,希望它可能。

标签: autohotkey


【解决方案1】:

虽然我从未使用过GroupAdd,但如果类排列的数量有限,在我看来,您可以RegExMatch 对抗这些排列,然后在其中组成您的组。 GroupAdd 规范似乎使 GroupName 之外的所有参数都是可选的,因此您可以在确认您拥有正确的窗口后跳过 Class 声明。

示例:

WinGetTitle, Title, A
WinGetClass, Class, A
if (RegExMatch(Title, "Ableton Live.*") AND (RegExMatch(Class, "(AbletonClass1|AbletonClass2|AbletonClass3)")))
{
    ; Do stuff
}

【讨论】:

  • 非常感谢,我设法让它工作了。我通过使用 exe 名称来代替它并且它有效。我确实改变了一点,但它仍然给了我一个很好的开始。感谢您的帮助!
  • @A.R.Leon 不客气。很高兴它有帮助!当您有时间时,请接受此作为答案或提交您自己的答案,以便将未回答的问题从流通中删除。 :)
  • 嘿大卫!我刚刚按下复选标记,它变成了绿色。我读到这是接受答案的方式,希望我做得对!
  • @A.R.Leon 你打赌!感谢并欢迎使用 Stack Overflow!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 2015-04-07
  • 2017-11-05
  • 2021-04-22
  • 2018-03-18
  • 2017-07-14
  • 2021-12-31
相关资源
最近更新 更多