Control iTunes from a cocoa application

后端 未结 3 1139
没有蜡笔的小新
没有蜡笔的小新 2020-12-08 22:40

I am developing a mac application that involves audio playback. I would like to pause other audio players when our playback starts.

how can I
1) detect that itu

相关标签:
3条回答
  • 2020-12-08 23:13

    Maybe creating an AppleScript can solve the problem?

    Check this out:

    http://dougscripts.com/itunes/

    or some command line scripts?:

    http://www.macosxhints.com/article.php?story=20011108211802830

    0 讨论(0)
  • 2020-12-08 23:29

    1) detect that itunes is running

    NSRunningApplication or Process Manager.

    2) detect that itunes is currently playing
    3) pause itunes
    4) resume itunes when I am done

    Scripting Bridge.

    5) Is the a way to pause other types of media playback as well?

    That depends on the application.

    audio and video in the in the browser for example?

    No.

    0 讨论(0)
  • 2020-12-08 23:40

    You can do that with the following code which is using ScriptingBridge:

    #import "iTunes.h"
    #import "Cocoa/Cocoa.h"
    
    int main()
    {
      iTunesApplication* iTunes = [SBApplication applicationWithBundleIdentifier:@"com.apple.iTunes"];
    
      // check if iTunes is running (Q1)
      if ([iTunes isRunning])
      {
        // pause iTunes if it is currently playing (Q2 and Q3)
        if (iTunesEPlSPlaying == [iTunes playerState])
          [iTunes playpause];
    
        // do your stuff
    
        // start playing again (Q4)
        [iTunes playpause];
      }
      return 0;
    }
    

    The file iTunes.h is generated by running sdef /Applications/iTunes.app | sdp -fh --basename iTunes from a commandline. The error unknown type name "tdta" can be ignored.

    You also need to add ScriptingBridge.framework to the linked frameworks.

    Here is also a link to the ScriptingBridge documentation.

    0 讨论(0)
提交回复
热议问题