1

我正在研究一个 Applescript,它只是询问 Skype 有多少联系人在线......但是,当脚本执行多次,而 Skype 没有运行,最后正在运行时,Skype 会打开无数的对话窗口Skype API 安全请求,询问是否允许 Applescript 使用 Skype。

不幸的是,我找不到这个问题的解决方案。如果您有任何想法,我将非常感谢您的帮助!

提前致谢!朱利安

这里提到的脚本:

set onlineFriendsCount to 0
set resultArray to {}

-- define a string replace method
on ReplaceText(theString, findStr, replaceStr)

将 current_Delimiters 设置为 AppleScript 的文本项分隔符 将 AppleScript 的文本项分隔符设置为 findStr 将 sList 设置为 theString 的每个文本项 将 AppleScript 的文本项分隔符设置为 replaceStr 将 newString 设置为 sList 作为字符串 将 AppleScript 的文本项分隔符设置为 current_Delimiters return newString end ReplaceText

on countString(myText, myDelimiter)

将 {oldDelimiters, AppleScript's text item delimiters} 设置为 {AppleScript's text item delimiters, myDelimiter} set myCounter to (count text items of myText) - 1 将 AppleScript 的文本项目定界符设置为 oldDelimiters

return myCounter
end countString

tell application "System Events"

将 active_flag 设置为 (进程名称) 包含 "Skype" end 告诉如果 active_flag 然后

告诉应用程序“Skype”

--首先找出在线“朋友”的数量(这是Skype术语)设置组发送命令“SEARCH GROUPS HARDWIRED”脚本名称“getType”设置组列表到组的单词

将 groupCount 设置为 groupList 中的项目数

重复 i 从 2 到 groupCount 将组设置为 groupList 的第 i 项

设置 groupType 发送命令 "GET GROUP" & group & "TYPE" 脚本名称 "getType" 如果 groupType 包含 "ONLINE" 然后设置 onlineFriends 发送命令 "GET GROUP" & group & "USERS" 脚本名称 "getType" --set onlineFriends 到 onlineFriends 的话

-- setting the new string delimiter for chunking the resulting list
set oldDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to ","
set onlineFriendsList to every text item of onlineFriends
set AppleScript's text item delimiters to oldDelimiters

set AppleScript's text item delimiters to ","
set onlineFriendsCount to (number of items in onlineFriendsList)
-- this is a little workaround to get the correct number of online contacts:
if onlineFriendsCount = 1 then
 set resultArray to resultArray & 0
else
 set resultArray to resultArray & onlineFriendsCount
end if
exit repeat

如果结束重复则结束

-- 获取心情消息 set moodMessage 发送命令 "GET PROFILE MOOD_TEXT" 脚本名称 "getType" set moodStrings to my ReplaceText(moodMessage, "PROFILE MOOD_TEXT ", "") set moodStrings to my ReplaceText(moodStrings, ",", " ") 将 resultArray 设置为 resultArray & moodStrings -- 获取在线状态设置 onlineStatus 以发送命令 ("GET USERSTATUS") 脚本名称 "getType" 将 onlineStatus 设置为我的 ReplaceText(onlineStatus, "USERSTATUS ", "") 将 resultArray 设置为 resultArray & onlineStatus -- 获取活动聊天的数量 set activeChats to send command "SEARCH ACTIVECHATS" script name "getType" set activeChats to my countString(activeChats, "#") set resultArray to resultArray &activeChats - 检查是否有正在进行的呼叫设置 activeCalls 以发送命令“SEARCH ACTIVECALLS”脚本名称“getType”设置 callNum 为 activeCalls 的字数如果 callNum > 1 然后将 resultArray 设置为 resultArray & true 否则将 resultArray 设置为 resultArray & false end如果

返回结果数组

结束告诉

else

将 resultArray 设置为 {0, "", "OFFLINE", 0, false}

end if
4

1 回答 1

2

安全请求与您的脚本没有任何关系。它应该在执行任何脚本或 Skype API 客户端时弹出。请只选择第一个选项“允许此应用程序使用 Skype”,您将不会再看到此弹出窗口。

亚诺

于 2009-11-11T11:21:05.040 回答