问题
从 AppleScript 中,我想访问 Adium 聊天窗口中所有聊天的列表,查找特定的聊天名称,但它不起作用:
Adium 的词典包括:[S] Adium > [C] 应用程序 > [E] 聊天窗口
我想我想做的是
tell application "System Events"
tell application "Adium" to activate
repeat with tw in chat windows of process "Adium"
repeat with ch in chats of tw
if name of ch is "nickserv" then
-- do some stuff
end if
end repeat
end repeat
end tell
但是我在对“聊天窗口”的引用处收到“语法错误:预期的行尾但找到复数类名”。
答案(来自回复和进一步的工作)
直接从进程中获取窗口列表,而不是从“系统事件”中避免“复数类名”的阻塞:
tell application "System Events"
repeat with tw in chat windows of process "Adium"
-- is a syntax error: you're not getting an Adium window, it's a SysEvents window
tell application "Adium"
repeat with tw in chat windows
-- works
但是,“系统事件”已知的窗口(或聊天窗口)的属性与 Adium 已知的窗口的属性非常不同。我实际上在做的是将窗口定位在屏幕上。使用系统事件窗口,我执行以下操作:
set position of tw to {440, 1600}
set size of tw to {993, 578}
...但是使用直接的 Adium 窗口,它是
set bounds of tw to {440, 1600, 440+993, 1600+578}
正如劳里·兰塔(Lauri Ranta)的评论中或多或少暗示的那样,洒上“属性tw”揭示了这些差异。
其他答案
我还发现
repeat with tw in (chat windows) of process "Adium"
解决了“多字元素名称”问题,但不是“窗口具有不同属性”问题。