我正在尝试修复我在这个Applescript中的特定问题:https://gist.github.com/jwmann/08daed8a905cfbf4ff96
这是一个Applescript,您可以在VLC播放列表中选择一首歌曲,运行Applescript,它会将歌曲从原始位置删除。
当用户尝试删除当前播放的单首歌曲时,会出现问题,其中VLC播放列表的大小仅为单首歌曲。
如果您尝试删除当前正在播放的歌曲,VLC将会爆炸。为了解决这个问题,我让脚本停止播放VLC并再次尝试删除它。
现在,如果这种解决方法发生,VLC将不再播放。在多首歌曲播放列表中,这不会令人讨厌。因此脚本将在脚本结束时继续播放VLC。但是,从单个歌曲播放列表中删除歌曲后,它将从播放列表中删除该歌曲,不留歌曲,因此没有播放列表。
因此,当脚本尝试播放时,它将打开一个新窗口/对话框/模式以允许用户查找要播放的内容。这是我不想发生的事情。
我需要一种方法:
这是我正在尝试取消的窗口
这是Accessibility Inspector向我展示窗口的数据。
ArrayList
<AXApplication: “VLC”>
<AXWindow: “Open Source”>
Attributes:
AXFocused: “0”
AXFullScreen: “0”
AXTitle: “Open Source”
AXPosition (W): “x=993 y=276”
AXGrowArea: “(null)”
AXMinimizeButton: “(null)”
AXDocument: “(null)”
AXSections (W): “<array of size 1>”
AXCloseButton: “(null)”
AXMain: “0”
AXFullScreenButton: “(null)”
AXProxy: “(null)”
AXDefaultButton: “<AXButton: “Open”>”
AXMinimized: “0”
AXChildren: “<array of size 8>”
AXRole: “AXWindow”
AXParent: “<AXApplication: “VLC”>”
AXTitleUIElement: “<AXStaticText>”
AXCancelButton: “<AXButton: “Cancel”>”
AXModal: “1”
AXSubrole: “AXDialog”
AXZoomButton: “(null)”
AXRoleDescription: “dialog”
AXSize: “w=574 h=402”
AXToolbarButton: “(null)”
AXFrame: “x=993 y=276 w=574 h=402”
AXIdentifier: “_NS:40”
Actions:
AXRaise - raise
在每个例子中,系统事件或VLC(我都试过)似乎无法找到“开源”窗口,即使它在检查器中明显称为“开源”。它不是一张纸,它是一扇窗户。我不明白为什么我不能找到这个窗口。
答案 0 :(得分:2)
感谢@ l&#39; L&#39; l推荐我的脚本调试器5,它允许以可读的方式查看窗口的数据,甚至提供调用特定元素的代码。
我是如何发现的,我运行了这段代码:
tell application "VLC" to activate
tell application "System Events"
tell process "VLC"
set myUI to every UI element
end tell
end tell
原因在于,即使我知道窗口的名称,Applescript也找不到它,所以我需要一种方法来查看所有内容。
在其中,我发现了这个:
如果你看一下这个窗口的元数据,你就会发现它的超级破坏了。 难怪Applescript永远找不到它,它只是一个窗口。
从该列表中,它提供了引用窗口部分的确切代码,包括&#34;取消&#34;按钮。
这是取消我的窗口的代码:
tell application "System Events"
tell its application process "VLC"
tell its window "Open Source"
click button "Cancel"
end tell
end tell
end tell
因此,搜索每个UI元素绝对有用,而Script Debugger 5肯定有帮助。