NSTask を使用して外部アプリを起動しています。しかし、現時点では、私のアプリはフォーカスを失います。私はこれをしたくありません。他のアプリはファイルにいくつかの情報を書き込むだけで、私のアプリはそれらの情報を読み取って表示します。バックグラウンドで NSTask アプリを起動することは可能ですか?
3 に答える
NSTaskを使用する代わりに、 NSWorkspaceのを使用することをお勧めしますlaunchApplicationAtURL:options:configuration:error:
。NSWorkspaceLaunchWithoutAddingToRecents | NSWorkspaceLaunchWithoutActivation | NSWorkspaceLaunchAndHide
引数として渡すと、options:
事実上見えなくなるはずです。(私は明らかにあなたの特定のケースでそれを試していませんが、それはそれが機能することを意図した方法です。)
NSTask を開始した後で、単に "performSelector:withObject:afterDelay" を呼び出さないのはなぜですか? これを使用すると、適切な遅延の後、アプリケーションを再アクティブ化するセレクターを呼び出すことができます。ここでは特別なことは何も必要ありません。他のアプリを前面に出してから、自分のアプリを再アクティブ化するだけです。
これは機能します。遅延を必要なものに設定するだけです。
[[NSRunningApplication currentApplication] performSelector:@selector(activateWithOptions:) withObject:[NSNumber numberWithUnsignedInteger:NSApplicationActivateIgnoringOtherApps] afterDelay:5.0];
open
コマンド ( manpage )を使用してアプリを起動する場合、-g
オプションを使用して、アプリがフォアグラウンドにならないようにすることができます。
-g Do not bring the application to the foreground.
NSTask
そのため、アプリを直接起動するのではなく; 使用open
して、エラー、それを開きます。