【问题标题】:Killing Application Window with Bash/Terminal使用 Bash/Terminal 杀死应用程序窗口
【发布时间】:2013-03-07 04:14:24
【问题描述】:

我正在尝试使用终端关闭预览中打开的窗口。我在互联网上找到的所有内容都建议使用 AppleScript,但我不能这样做,因为我不存在 plist 选项(如Super User 所示,启用 osascript 进行预览)。我正在运行 OS X 10.8.2。

我应该在这里指出,我并不真正关心 AppleScript,并且更喜欢 bash 解决方案。

重申一下,我在预览中打开了一个 .pdf,我想关闭访问和显示文件的特定窗口,而不是终止整个程序。我认为这是可能的,因为操作系统有一种方法可以在没有 bash 的情况下杀死窗口。

我还想知道操作系统在关闭应用程序的子进程(窗口)时如何与 shell 交互。

我可以找到打开的 .pdf、进程、套接字、节点等。使用 lsof,但自从 AFAIK 以来,我对进一步了解此类信息犹豫不决,我可以使用该信息终止整个进程(过度杀伤)或关闭端口/套接字(奇怪的终止)。

感谢您帮助我解决这个问题。我的谷歌能力让我失望,这真的让我很困扰。

编辑:在超级用户链接中添加了 osascript 启用添加上下文。

【问题讨论】:

  • man ps 然后man kill 不用上网了。
  • 是的,但是,我将使用什么信号与 kill 一起关闭应用程序的子单元而不终止整个应用程序?我能在手册上找到的唯一信号要么太嗜血,要么太无效。到目前为止,我在 Google 上搜索的内容也无济于事。

标签: macos bash unix terminal


【解决方案1】:

您采用的方法是行不通的——应用程序中的窗口不是分开的,以至于您可以远程强制一个窗口关闭而不影响整个应用程序。

我能想到的唯一解决方案确实涉及 AppleScript。我不确定“plist 选项对我来说不存在”是什么意思。

tell application "System Events"
    click first button of (first window of process "Preview" whose name is "example.png")
end tell

这比平常更令人费解,因为 Preview.app 是沙盒化的,因此无法通过普通方法编写脚本——我不得不改用 UI 脚本。 (我点击的“第一个按钮”是窗口上的关闭按钮。)

【讨论】:

  • 对不起,我的意思是 this 启用 plist。您的解决方案确实有效,并且您的解决方法很聪明,但是真的没有办法在不“单击”“第一个按钮”的情况下关闭沙盒应用程序中的窗口吗?
  • 我不知道。据我所知,该应用程序对普通 AppleScript 是不可见的。
猜你喜欢
  • 2023-03-09
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 2020-10-23
  • 1970-01-01
  • 2017-11-13
  • 2017-05-24
  • 1970-01-01
相关资源
最近更新 更多