苹果事件发送激活给出错误

时间:2018-12-07 09:18:56

标签: c macos macos-carbon appleevents

我正在研究使用AppleEvents的C应用程序。 到目前为止,我正在尝试做一个简单的示例,该示例将Activate发送到终端。 这就是我所拥有的:

int main()
{
  AppleEvent theEvent;
  char* arg = "com.apple.Terminal";
  AEAddressDesc addDesc;
  OSErr err = AECreateDesc( typeApplicationBundleID, &arg, strlen( arg ), &addDesc );
  printf("AECreateDesc error --> %d\n", err);
  if( noErr == err )
  {
    // my event creation
    // create event:
    err = AECreateAppleEvent( 'misc', 'actv', &addDesc, kAutoGenerateReturnID, kAnyTransactionID, &theEvent );
  }
  printf("AECreateAppleEvent error --> %d\n", err);
  if (noErr == err)
  {
    AESendMode aeSendMode = kAEAlwaysInteract | kAEWaitReply;
    //err = AESend( &theEvent, NULL, aeSendMode, kAENormalPriority, kAEDefaultTimeout, NULL, NULL );
    err = AESendMessage(&theEvent, NULL, aeSendMode, kAEDefaultTimeout);
  }
  printf("AESend error --> %d\n", err);
  return 0;
}

但是,当我运行程序时,它始终会显示AESend错误-> -600,这表明未找到进程

有人可以告诉我这是怎么回事吗?

注意:我不想使用AppleScript,我想使用它,所以请不要提供有关使用AppleScript的建议

预先感谢和问候

1 个答案:

答案 0 :(得分:0)

我有同样的问题

解决方法:您应该致电:   OSErr err = AECreateDesc(typeApplicationBundleID, arg ,strlen(arg),&addDesc);

无&