Apple Event отправляет Activate выдает ошибку - PullRequest
0 голосов
/ 07 декабря 2018

Я работаю над приложением C, которое использует AppleEvents.Пока я пытаюсь сделать простой пример, который отправляет Активировать в Терминал.Вот что у меня есть:

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 голосов
/ 26 июня 2019

У меня та же проблема

Исправление: вы должны вызвать: OSErr err = AECreateDesc (typeApplicationBundleID, arg , strlen (arg), & addDesc);

без &

...