首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不允许AppleScript应用程序发送击键

不允许AppleScript应用程序发送击键
EN

Stack Overflow用户
提问于 2019-03-03 20:12:12
回答 5查看 36.3K关注 0票数 27

我用AppleScript制作了一个名为“周五”的应用程序。当我告诉它‘打开铬’,它打开谷歌铬,这是工作脚本编辑器和外部脚本编辑器。我还可以告诉它“打开一个新选项卡”,它使用击键打开一个新选项卡:

代码语言:javascript
运行
复制
-- this boolean is the reason this script keeps runing
set condition to false
say "Welcome sir"
set commands to {"what is todays date", "what time is it", "what is the time", "what day is it", "what month is it", "which month is it", "friday you up", "friday", "friday you tere", "you there", "empty the trash", "take out the trash", "clean up", "new tab", "next tab", "back", "take a nap", "go to sleep", "take a rest", "wake up", "copy the link", "paste the link", "give me list of running apps", "open a folder", "open chrome", "open youtube", "open atom", "quit atom", "goodbye FRIDAY_AI", "okay thanks", "okay thank you", "thanks", "thank you", "good night", "good morning", "morning", "night", "hey friday"}
repeat until condition is true
    try
        tell application "SpeechRecognitionServer"
            set FRIDAY_AI to listen continuously for commands with identifier "mine" with section title "FRIDAY's Commands"
        end tell

    -- full date
    set todays_date to date string of (current date)
    -- day
    set todays_day to weekday of (current date) as string
    -- time
    set t to time string of (current date)
    -- month
    set m to month of (current date) as string


    -- time and day
    if FRIDAY_AI = "what is todays date" then
        say todays_date
    end if
    if FRIDAY_AI = "what time is it" then
        say t
    end if
    if FRIDAY_AI = "what is the time" then
        say t
    end if
    if FRIDAY_AI = "what day is it" then
        say todays_day
    end if
    if FRIDAY_AI = "what month is it" then
        say m
    end if
    if FRIDAY_AI = "which month is it" then
        say m
    end if
    -- end of time and day


    -- Clear trash --
    if FRIDAY_AI = "empty the trash" then
        tell application "Finder"
            empty the trash
        end tell
    end if

    -- FRIDAY --
    if FRIDAY_AI = "friday" then
        say "yes"
    end if

    if FRIDAY_AI = "friday you up" then
        say "for you sir, alllways"
    end if

    if FRIDAY_AI = "friday you there" then
        say "yes"
    end if

    if FRIDAY_AI = "you there" then
        say "yes"
    end if

    if FRIDAY_AI = "hey friday" then
        say "hey sir, waht can I do for you"
    end if
    -- END OF FRIDAY --


    if FRIDAY_AI = "take out the trash" then
        tell application "Finder"
            empty the trash
        end tell
    end if
    -- end of clear trash --

    -- QUITS EVERY APPLICATION --
    if FRIDAY_AI = "clean up" then
        say "cleaning up"
        delay 2
        say "goodbye sir"
        tell application "System Events" to set the visible of every process to true

        set white_list to {"Finder"}

        try
            tell application "Finder"
                set process_list to the name of every process whose visible is true
            end tell
            repeat with i from 1 to (number of items in process_list)
                set this_process to item i of the process_list
                if this_process is not in white_list then
                    tell application this_process
                        quit
                    end tell
                end if
            end repeat
        on error
            tell the current application to display dialog "An error has occurred!" & return & "This script will now quit" buttons {"Quit"} default button 1 with icon 0
        end try
    end if
    -------------------------------------


    -- SWITCH BETWEEN TABS TABS --
    if FRIDAY_AI = "new tab" then
        tell application "System Events"
            key code 17 using {command down}
        end tell
    end if
    --next tab --
    if FRIDAY_AI = "next tab" then
        tell application "System Events"
            key code 48 using {control down}
        end tell
    end if
    -- priveus tab --
    if FRIDAY_AI = "back" then
        tell application "System Events"
            key code 48 using {shift down, control down}
        end tell
    end if
    -- END OF SWITCH BETWEEN TABS --




    -- launches screen saver  
    if FRIDAY_AI = "take a nap" then
        try
            tell application id "com.apple.ScreenSaver.Engine" to launch
        end try
    end if
    if FRIDAY_AI = "go to sleep" then
        try
            tell application id "com.apple.ScreenSaver.Engine" to launch
        end try
    end if
    if FRIDAY_AI = "take a rest" then
        try
            tell application id "com.apple.ScreenSaver.Engine" to launch
        end try
    end if

    if FRIDAY_AI = "wake up" then
        tell application "System Events"
            key code 49
        end tell
    end if
    -- END OF SCREEN SAVER --





    if FRIDAY_AI = "give me list of running apps" then
        tell application "System Events"
            key code 53 using {command down, option down}
        end tell
    end if



    -- copy url --
    if FRIDAY_AI = "copy the link" then
        tell application "System Events"
            key code 37 using {command down}
            delay 0.5
            key code 8 using {command down}
        end tell
    end if

    -- paste url --
    if FRIDAY_AI = "paste the link" then
        tell application "System Events"
            key code 37 using {command down}
            delay 0.5
            key code 9 using {command down}
            keystroke return
        end tell
    end if




    if FRIDAY_AI = "open a folder" then
        log FRIDAY_AI
        tell application "Finder"
            activate
            make new Finder window
            set target of front window to home
        end tell
    end if

    if FRIDAY_AI = "open chrome" then
        tell application "Google Chrome"
            log FRIDAY_AI
            say "Opening Google Chrome sir"
            activate
        end tell
    end if

    (* if FRIDAY_AI = "open atom" then
    tell application "Atom"
        log FRIDAY_AI
        say "opening Atom"
        activate
    end tell
end if 

if FRIDAY_AI = "quit atom" then
    log FRIDAY_AI
    tell application "Atom" to quit
end if *)

    if FRIDAY_AI = "goodbye FRIDAY_AI" then
        log FRIDAY_AI
        say "goodbye sir"
        -- quit = exist the program completely--
        -- Stop the script- -
        exit repeat
    end if

    if FRIDAY_AI = "open youtube" then
        log FRIDAY_AI
        tell application "Google Chrome"
            activate
            open location "https://www.youtube.com/"
        end tell
    end if

    -- JUST PERSONAL COMMENTARY --
    if FRIDAY_AI = "thanks" then
        log FRIDAY_AI
        say "I am glad, I could be of help sir"
    end if

    if FRIDAY_AI = "okay thanks" then
        log FRIDAY_AI
        say "I am glad, I could be of help sir"
    end if

    if FRIDAY_AI = "thank you" then
        log FRIDAY_AI
        say "You're welcome sir"
    end if

    if FRIDAY_AI = "okay thank you" then
        log FRIDAY_AI
        say "You're welcome sir"
    end if

    if FRIDAY_AI = "good night" then
        log FRIDAY_AI
        say "Good night sir"
    end if

    if FRIDAY_AI = "night" then
        log FRIDAY_AI
        say "Good night sir"
    end if

    if FRIDAY_AI = "good morning" then
        log FRIDAY_AI
        say "Good morning sir"
    end if

    if FRIDAY_AI = "morning" then
        log FRIDAY_AI
        say "morning sir"
    end if

    -- END OF PERSONAL COMMENTARY --
    -- if an error occurs, it goes back and keep repeating
    on error
        set condition to false
    end try


end repeat

现在,上面的代码只在我星期五在脚本编辑器上运行时才能工作,但是当我将星期五保存为一个应用程序并运行它时,它就不起作用了。

脚本编辑器和我的应用程序(星期五)具有可访问性,实际上星期五具有完整的磁盘可访问性。但它仍然不能发出击键。

我一直在犯这个错误:

系统事件出错:星期五不允许发送击键。

无障碍:

全磁盘访问:

自动化:

如果你能帮我解决这个问题,我会非常感激的,谢谢!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2019-10-15 19:07:07

当我更新到macOS 10.15 Catalina时,也遇到了类似的问题。我转到了系统首选项-> Security & Privacy ->辅助功能,在这里我删除了我的应用程序,然后再添加它。在这之后,所有的一切都完美地运作。

票数 57
EN

Stack Overflow用户

发布于 2019-11-25 17:07:03

我还发现,虽然它被要求允许您的脚本访问系统事件,但如果脚本的名称中有空格,则不会添加到Security & Privacy中。我一直在努力解决这个问题,直到我用下划线代替了空间。然后它被添加到这里,从那时起就工作得很好。

票数 11
EN

Stack Overflow用户

发布于 2022-04-11 10:23:07

**

这对我起了作用:

**

转到系统首选项->安全性和隐私->可访问性,并授予iterm2权限

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54973241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档