Created
November 3, 2016 17:30
-
-
Save moriyoshi/f2ad5a95b07be2fbdb2c38c5ee5b2fe9 to your computer and use it in GitHub Desktop.
Running After Effects Script through Apple Event Manager API
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdio.h> | |
#include <stdlib.h> | |
#include <CoreServices/CoreServices.h> | |
static OSErr create_application_desc_from_bundle_id(AEAddressDesc *event, const char *bundle) | |
{ | |
OSErr err; | |
return AECreateDesc( | |
typeApplicationBundleID, | |
bundle, | |
strlen(bundle), | |
(AEDesc *)event | |
); | |
} | |
int main() | |
{ | |
OSErr err; | |
AEAddressDesc target; | |
int target_initiaized = 0; | |
AppleEvent event; | |
int event_initialized = 0; | |
err = create_application_desc_from_bundle_id(&target, "com.adobe.AfterEffects"); | |
if (err) { | |
fprintf(stderr, "failed to create an application descriptor (%d)\n", err); | |
goto out; | |
} | |
err = AECreateAppleEvent( | |
kAEMiscStandards, | |
kAEDoScript, | |
&target, | |
kAutoGenerateReturnID, | |
kAnyTransactionID, | |
&event | |
); | |
if (err) { | |
fprintf(stderr, "failed to create an apple event (%d)\n", err); | |
goto out; | |
} | |
event_initialized = 1; | |
err = AEPutParamPtr(&event, keyDirectObject, typeText, "$.write(\"test\");", sizeof("$.write(\"test\");") - 1); | |
if (err) { | |
fprintf(stderr, "failed to append a parameter to the event (%d)\n", err); | |
goto out; | |
} | |
{ | |
AppleEvent reply; | |
err = AESendMessage(&event, &reply, kAENeverInteract | kAEWaitReply | kAECanSwitchLayer | kAENormalPriority, kAEDefaultTimeout); | |
if (err) { | |
fprintf(stderr, "failed to send a message (%d)\n", err); | |
goto out; | |
} | |
AEDisposeDesc((AEDesc *)&reply); | |
} | |
fprintf(stderr, "message successfully sent.\n"); | |
out: | |
if (target_initiaized) { | |
AEDisposeDesc((AEDesc *)&target); | |
} | |
if (event_initialized) { | |
AEDisposeDesc((AEDesc *)&event); | |
} | |
if (err) { | |
return 1; | |
} | |
return 0; | |
} | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment