如何通过Swift以编程方式使用系统功能?

时间:2019-12-04 18:46:06

标签: swift macos macos-catalina

如果我们查看macOS的热键/快捷方式,我们可以找到很多功能。一些功能已分配给热键,有些则没有。

  

例如:

     

制作屏幕截图(cmd + shif + F5)

     

或显示桌面(隐藏所有应用)(F11)

以及操作系统功能中的许多其他内置功能:

enter image description here

问题如下:如何在我的代码中使用此功能而不使用热键按下模仿?

目标是在操作系统中已经存在此类功能的情况下,不编写自定义代码。


我只找到了如何打开某种系统偏好设置,也许这​​是我需要走的方向,但我没有通过Google找到任何详细信息。

import Cocoa

// Open Siri prefs
NSWorkspace.shared.open(URL(fileURLWithPath: "/System/Library/PreferencePanes/Speech.prefPane"))

// Open Siri prefs with another way
NSWorkspace.shared.open(URL(fileURLWithPath: "x-apple.systempreferences:com.apple.preference.speech"))

// Open System Preferences window
NSWorkspace.shared.open(URL(fileURLWithPath: "x-apple.systempreferences:com.apple.preference"))

1 个答案:

答案 0 :(得分:2)

您正在寻找的区域是系统服务,实际上您的问题没有答案,因为其中一些项目可通过自己的API获得,其中一些是私有macOS功能,其中一些可通过实际服务获得。

您可以通过以下方式开始发现:

BOOL NSPerformService(NSString *serviceItem, NSPasteboard *pboard)

,并带有Services Implementation Guide,其中详细描述了该内容。

使用这些东西的另一种机制是AppleScript ...范围很广。