Objective c 使用媒体键跳过曲目

Objective c 使用媒体键跳过曲目,objective-c,core-audio,Objective C,Core Audio,我只是使用了以下代码(源代码:)来播放/暂停音乐。现在我想跳过当前曲目,跳下一个曲目。因此我使用了代码hidpastaxkey(NX\u KEYTYPE\u NEXT)以执行此操作。但这似乎不起作用? 有人知道为什么这不起作用吗 提前谢谢 // Save as sound_up.m // Compile: gcc -o sound_up sound_up.m -framework IOKit -framework Cocoa #import <Cocoa/Cocoa.h> #imp

我只是使用了以下代码(源代码:)来播放/暂停音乐。现在我想跳过当前曲目,跳下一个曲目。因此我使用了代码
hidpastaxkey(NX\u KEYTYPE\u NEXT)以执行此操作。但这似乎不起作用?
有人知道为什么这不起作用吗

提前谢谢

// Save as sound_up.m
// Compile: gcc -o sound_up sound_up.m -framework IOKit -framework Cocoa

#import <Cocoa/Cocoa.h>
#import <IOKit/hidsystem/IOHIDLib.h>
#import <IOKit/hidsystem/ev_keymap.h>


static io_connect_t get_event_driver(void)
{
    static  mach_port_t sEventDrvrRef = 0;
    mach_port_t masterPort, service, iter;
    kern_return_t    kr;

    if (!sEventDrvrRef)
    {
        // Get master device port
        kr = IOMasterPort( bootstrap_port, &masterPort );
        check( KERN_SUCCESS == kr);

        kr = IOServiceGetMatchingServices( masterPort, IOServiceMatching( kIOHIDSystemClass ), &iter );
        check( KERN_SUCCESS == kr);

        service = IOIteratorNext( iter );
        check( service );

        kr = IOServiceOpen( service, mach_task_self(),
                            kIOHIDParamConnectType, &sEventDrvrRef );
        check( KERN_SUCCESS == kr );

        IOObjectRelease( service );
        IOObjectRelease( iter );
    }
    return sEventDrvrRef;
}


static void HIDPostAuxKey( const UInt8 auxKeyCode )
{
  NXEventData   event;
  kern_return_t kr;
  IOGPoint      loc = { 0, 0 };

  // Key press event
  UInt32      evtInfo = auxKeyCode << 16 | NX_KEYDOWN << 8;
  bzero(&event, sizeof(NXEventData));
  event.compound.subType = NX_SUBTYPE_AUX_CONTROL_BUTTONS;
  event.compound.misc.L[0] = evtInfo;
  kr = IOHIDPostEvent( get_event_driver(), NX_SYSDEFINED, loc, &event, kNXEventDataVersion, 0, FALSE );
  check( KERN_SUCCESS == kr );

  // Key release event
  evtInfo = auxKeyCode << 16 | NX_KEYUP << 8;
  bzero(&event, sizeof(NXEventData));
  event.compound.subType = NX_SUBTYPE_AUX_CONTROL_BUTTONS;
  event.compound.misc.L[0] = evtInfo;
  kr = IOHIDPostEvent( get_event_driver(), NX_SYSDEFINED, loc, &event, kNXEventDataVersion, 0, FALSE );
  check( KERN_SUCCESS == kr );

}

int main(int argc, char *argv[]) {
  HIDPostAuxKey(NX_KEYTYPE_SOUND_UP);
}
//另存为sound\u up.m
//编译:gcc-o sound\u up sound\u up.m-framework IOKit-framework Cocoa
#进口
#进口
#进口
静态io\u连接\u t获取\u事件\u驱动程序(无效)
{
静态马赫数=0;
国际热核实验堆mach_port_t masterPort,服务;
kern_return_t kr;
如果(!sEventDrvrRef)
{
//获取主设备端口
kr=IOMasterPort(引导端口和主端口);
检查(KERN_SUCCESS==kr);
kr=IOServiceGetMatchingServices(主端口、IOServiceMatching(kIOHIDSystemClass)和iter);
检查(KERN_SUCCESS==kr);
服务=IOIteratorNext(iter);
支票(服务);
kr=IOServiceOpen(服务,机器任务自身(),
KIOHIDRVRREF);
检查(KERN_SUCCESS==kr);
IOObjectRelease(service);
国际热核实验堆;
}
返回第七个DRVRREF;
}
静态无效HIDPASTAUXKEY(常量UInt8 auxKeyCode)
{
NXEventData事件;
kern_return_t kr;
IOGPoint loc={0,0};
//按键事件

UInt32 evtInfo=auxKeyCode您可能已经找到了这个,但是如果您使用
NX\u-KEYTYPE\u-FAST
而不是
NX\u-KEYTYPE\u-NEXT
您可能已经找到了这个,但是如果您使用
NX\u-KEYTYPE\u-FAST
而不是
NX\u-KEYTYPE\u-NEXT
,它就可以工作了