2

どのように使用しNSRunningApplicationますか? 私はアプリを起動しているものとは反対のものを持っています:

[[NSWorkspace sharedWorkspace] launchApplication:appName];

しかし、私は1つを閉じたいです。次のコードをデバッグすると、エラーが発生しますNSRunningApp

NSRunningApplication *selectedApp = appName;
[selectedApp terminate];

何か問題がありますか?ある場合は、それを指摘し、それを修正する方法を教えてください。

4

2 に答える 2

8

変数selectedAppaを割り当てますNSString- (void)terminate文字列にはメソッドがないため、失敗します。NSRunningApplicationアプリケーションを指すインスタンスを取得する必要があります。

NSWorkspace *sharedWorkspace = [NSWorkspace sharedWorkspace];
NSString *appPath = [sharedWorkspace fullPathForApplication:appName];
NSString *identifier = [[NSBundle bundleWithPath:appPath] bundleIdentifier];
NSArray *selectedApps =
       [NSRunningApplication runningApplicationsWithBundleIdentifier:identifier];
// quit all
[selectedApps makeObjectsPerformSelector:@selector(terminate)];
于 2009-09-26T14:08:17.543 に答える
5

とはどういうappName意味ですか? 文字通り an を参照する場合、NSStringそれは機能しません。

はクラスであるためNSRunningApplication、他のクラスの場合と同様に、インスタンスを作成してインスタンス メソッドに送信する必要があります。

インスタンスを返すために使用できる3 つのクラス メソッド (ドキュメントを参照) があります。NSRunningApplication

+ runningApplicationWithProcessIdentifier:
+ runningApplicationsWithBundleIdentifier:
+ currentApplication

NSRunningApplication現在のアプリケーションに基づくインスタンスが必要でない限り、最初の 2 つのクラス メソッドが最も有用であることがわかるでしょう。

terminateその後、メッセージをインスタンスに送信できNSRunningApplicationます。インスタンスは、構成されているアプリケーションを終了しようとします。

于 2009-09-26T14:08:46.387 に答える