我把这段代码:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[[NSWorkspace sharedWorkspace] hideOtherApplications];// Insert code here to initialize your application
[NSApp terminate:self];
}
如果我发表评论[NSApp终止:自我];那么所有其他应用程序都是隐藏的。但是,如果我退出应用程序,它们会再次出现。
此外,如果我编写代码,程序实际上没有做任何事情。它会隐藏所有其他应用程序,然后再次退出显示所有其他应用程序。
程序很简单。
隐藏所有应用程序 放弃 退出后,我希望所有应用程序保持隐藏状态。它很简单。怎么样?
答案 0 :(得分:1)
我相信,你想要的是最小化所有其他窗口,而不是隐藏它们。我知道,没有一种真正简单的方法可以做到这一点,但IMO最简单的方法就是调用每个应用程序的每个窗口并发出cmd-m命令的applescript。如果所有应用程序都实现了最小化,那么它应该可以正常工作(如果你愿意,可以选择关闭那些不能最小化的应用程序)。完全正确地工作可能需要一些修补,但下面的脚本取自macscripter.net,对我来说有80%的时间可用:
tell application "System Events"
set currentProcesses to name of every application process whose visible = true
end tell
set tmpWindows to 0
repeat with tmpProcess in currentProcesses
tell application tmpProcess
activate
try
set tmpWindows to count windows
on error
set tmpWindows to 1 --> # of windows to try to force closed if it doesn't 'appear' to have any windows
end try
end tell
if tmpWindows > 0 then
tell application "System Events"
tell application tmpProcess
repeat tmpWindows times
try
keystroke "m" using command down
end try
end repeat
end tell
end tell
end if
set tmpWindows to 0
end repeat
另一种选择是使用Cocoa Accessibility API获取每个正在运行的应用程序的窗口并设置AXMinimized。预先警告:它会变得非常粘稠!这两个其他stackoverflow问题应该可以帮助您:
Mac / Cocoa - Getting a list of windows using Accessibility API
Cocoa accessibility API, can I click a window in the background without activating it?