到目前为止,这是我的脚本:
property timeDelay : 5
on appOpen(appName)
tell application "System Events" to set appNameIsRunning to exists (processes where name is appName)
return appNameIsRunning
end appOpen
if appOpen("iChat") then
tell application "iChat"
repeat with theService in services
if connection status of theService = disconnected or connection status of theService = disconnecting then
log in of service (name of theService)
end if
end repeat
end tell
end if
基本上,如果您的任何iChat / Messages帐户被注销,它会检查一次。如果是,请将它们登录。它有效。
但是,我希望这是一个'保持开放'的应用程序。在过去,我使用了模式
on idle
-- do stuff
end idle
..但由于某种原因,当我尝试编译时它出错了。
知道为什么会这样吗?
编辑:
好的 - 仍然不确定为什么会这样,但我能够通过简单地创建一个新脚本来解决问题。我不知道为什么会出现这个错误,但现在看起来很好。谢谢你的帮助。
答案 0 :(得分:0)
这没有意义......
tell application "System Events" to set appNameIsRunning to exists (processes where name is appName)
你想要这个......
tell application "System Events" to set appNameIsRunning to exists process appName
原因是“名称为appName的进程”将返回一个列表(无论是一个项目还是多个项目仍然是列表),检查列表的“存在”是没有意义的。
我不确定错误,但我希望能解决您的问题。
答案 1 :(得分:0)
这适用于我10.6.8
property timeDelay : 5
on appOpen(appName)
tell application "System Events" to set appNameIsRunning to exists process appName
return appNameIsRunning
end appOpen
on idle
if appOpen("iChat") then
tell application "iChat"
repeat with theService in services
if connection status of theService = disconnected or connection status of theService = disconnecting then
tell service (name of theService) to log in
end if
end repeat
end tell
end if
return timeDelay
end idle