在使用AppKit的NSWorkspace.activeApplication()
时,需要注意该方法仅在有窗口的情况下才会返回当前活动的应用程序的信息。在cron环境中,由于没有可见窗口,因此该方法将会返回None。
如果需要在cron环境中获取活动应用程序的信息,可以使用NSTask
类来执行Shell命令,并从命令输出中提取所需信息。下面是一个示例代码:
import subprocess
def get_active_application():
cmd = "osascript -e 'tell application \"System Events\" to get name of first application process whose frontmost is true'"
result = subprocess.check_output(cmd, shell=True)
if result:
return result.strip()
else:
return 'None'
在这个函数中,我们使用了subprocess.check_output()
方法来执行Shell命令,并从命令输出中提取了当前活动应用程序的名称。如果当前没有活动应用程序,则返回字符串“None”。
这个函数可以在cron中使用,而不会受到AppKit的限制。