2012-02-19 2 views
3

を終了:私はコメントアウトした場合は、デスクトップを表示する簡単なプログラムを作成し、私はこのコードを入れ

- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 
{ 
    [[NSWorkspace sharedWorkspace] hideOtherApplications];// Insert code here to initialize your application 
    [NSApp terminate:self]; 
} 

を[NSAppが終了:自己]。他のすべてのアプリケーションは隠されています。しかし、アプリケーションを終了すると、再び表示されます。

また、私はプログラムが実際に何もしないようなコードを作る場合。他のすべてのアプリケーションを非表示にしてから、他のすべてのアプリケーションの表示をやめます。

プログラムは簡単です。

すべてのアプリケーションを非表示 終了 終了後、すべてのアプリケーションを非表示のままにします。それはとても簡単です。どうやって?

+0

' - [NSWorkspace hideOtherApplications]' _yours_以外のすべてのアプリケーションが非表示になります。 – Costique

+0

_Some_アプリケーションは常に表示する必要があります。どのアプリケーションでもアプリケーションメニュー(⎇⌘H)でこれを行い、その後終了するとFinderが前面に出ると思います。また、デバッガがこのプロセスにアタッチされたときにXcodeが再表示されるように見えます。それ以外は、このコードは私が期待しているように動作します。 –

答えて

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 

他のオプションを取得するためにココアのアクセシビリティAPIを使用することです各実行中のアプリケーションのウィンドウを開き、AXMinimizedを設定します。それはかなり粘着性になることができます!これらの2つの他の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?

関連する問題