2017-07-14 145 views
1

我已经关闭所有应用一个AppleScript:如何使用AppleScript关闭所有隐藏的应用程序?

tell application "System Events" to set quitapps to name of every application process whose visible is true and name is not "Finder" 
    repeat with closeall in quitapps 
    quit application closeall 
end repeat 

它工作得很好。它退出所有打开的应用程序。

我的问题是我想修改这个脚本来关闭只隐藏的应用程序。出于某种原因,苹果公司隐藏了所有苹果公司制作的应用程序,没有活动窗口,最终它开始吃掉我的内存。

什么我认为是,如果我只是改变线whose visible is truewhose visible is false我会得到这样的结果。

不太:

Weird pop-up window

我甚至不知道这个窗口应该是的,所以我刚打取消。

好吧,它再次弹出。原来剧本炸弹爆炸之前我必须四次击中取消。

有什么办法可以退出所有隐藏的应用程序,同时打开可见的应用程序?

(奖励积分,如果你能解释一下上面弹出。)

如果它的确与众不同,我运行的是最新版本的OSX的。

回答

1

visible设置为false会影响所有进程 - 即使没有GUI的进程/应用程序。如果进程不是应用程序(.app),则出现应用程序选择器。

添加支票background only,它仅影响具有GUI的应用程序。

tell application "System Events" to set quitapps to name of every application process whose visible is true and background only is false and name is not "Finder" ... 
+0

这与我所寻找的*正好相反。它会退出每个打开并且*不*隐藏的应用程序。我试图修改这个行,“其可见性是错误的,背景只是假的”,它什么也没做。将其修改为“其可见性为假并且背景为真”只需重新启动我的码头即可。他们都离开了隐藏的应用程序。 – DonielF

+0

系统事件中的'可见'意味着'不隐藏'和'仅背景'意味着没有GUI或“不是应用程序”的无脸应用程序。只有应用程序('。应用程序)回应'退出'命令 – vadian

+0

好吧,但这仍然没有做我想要的。 – DonielF

0

如果我理解正确,你是在谈论如何当你按下红色的关闭按钮,它只是关闭应用程序的窗口,而不是应用程序本身,所以它只是离开了那里仍处于打开状态。

在这种情况下,你可以使用这个脚本我做了,现在看来,这完美的作品:

-- Get open apps 
tell application "System Events" to set openApps to name of every application process whose background only is false and name is not "Finder" 

-- Do this for every open app 
repeat with openApp in openApps 
    tell application openApp 
     -- Tell application to quit if it doesn't have any open windows 
     if (count of windows) is less than or equal to 0 then quit 
    end tell 
end repeat 
+0

我不了解你,但是当我运行它时,它根本不起作用。如果应用程序处于隐藏状态,它仍然会将窗口识别为开启。如果所有窗口都关闭,但应用程序已打开,则应用程序仍然不会关闭。 – DonielF

+0

查看'openApps'和'count of windows',并打开一个应用程序,但没有打开窗口,告诉我结果。 – Kamdroid

0

OSX没有“隐藏”的应用程序。他们只是不活跃,或没有任何文件打开。隐藏的应用程序是Command-H通常完成的一个非常具体的过程。应用程序不会以这种方式隐藏自己。

与其试图关闭没有窗口的应用程序,不如使用文档计数来确定是否关闭应用程序。

tell application "SomeApp" if count of documents = 0 then quit 
相关问题