0

だから私はiTunesが実行されているかどうかに基づいてifを作成しようとしています。アプリケーションがトラック名を取得するため、これが必要です。このトラック名はすでに完成していて機能していますが、iTunesを常に実行したくありません...

そこで、setLaunchPathインスタンスでNSTaskを試して、iTunes.appが実行されているかどうかを確認することにしました。以下のコードは自明ですが、iTunesが開いていると、何らかの理由で他のコードにヒットし続けます。このメソッドは、awakeFromnibで5秒ごとにnstimerによって呼び出されます。

-(IBAction)ifRunning:(id)pID; {
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:@"/Applications/iTunes.app/Contents/MacOS/iTunes"];
if ([task isRunning]==TRUE) {
    NSLog(@"iTunes is Running, hit if");
    NSString *track = ([self getCurrentTrack]);
    //getCurrentTrack another one of my methods


}

else if ([task isRunning] == FALSE) {
    NSLog(@"iTunes is not running, hit else if");\
    [trackName setTitle:(@"iTunes is Not Playing")];

}

else {
    NSLog(@"Hit else");
}

}
4

1 に答える 1

0

以下のコードを使用してそれを理解しました。この投稿がお役に立てば幸いです。

-(IBAction)ifRunning:(id)pID; {
NSLog(@"Process check ");
NSWorkspace *ws = [NSWorkspace sharedWorkspace];
NSArray *runningAppDictionaries = [ws launchedApplications];
NSDictionary *aDictionary;

for (aDictionary in runningAppDictionaries)
{
    //  NSLog(@"Open App: %@", [aDictionary valueForKey:@"NSApplicationName"]);

    if ([[aDictionary valueForKey:@"NSApplicationName"] isEqualToString:@"iTunes"])
    {
        NSLog(@"iTunes is Is Running");
        [self getCurrentTrack:nil];
        break;
    }

    else {
        NSLog(@"iTunes is not running.");
    }
} 


}
于 2012-05-02T01:26:25.960 に答える