- */
- //NSLog(@"_sendString: %s", sendString);
-
- err = AEBuildAppleEvent(eClass, eID, typeProcessSerialNumber,(ProcessSerialNumber*)&psn, sizeof(ProcessSerialNumber), kAutoGenerateReturnID, 0, &sendEvent, &buildError, sendString);
-
- [self printCarbonDesc:&sendEvent];
-
- if (err) {
- NSLog(@"%d:%d at \"%@\"",(int)buildError.fError,buildError.fErrorPos,[string substringToIndex:buildError.fErrorPos]);
- }
-
- err = AESend(&sendEvent, &replyEvent, kAEWaitReply, kAENormalPriority, kNoTimeOut, idleUPP, NULL);
-
- [self printCarbonDesc:&replyEvent];
-
- if (err) {
- NSLog(@"Send Error: %i",err);
- } else {
- SInt32 count, resultCount;
-
- AECountItems(&replyEvent,&count);
- result=malloc(sizeof(AEDesc)*count);
- AEGetArray(&replyEvent, kAEDescArray, result, sizeof(AEDesc)*count, NULL, NULL, &resultCount);
-
- free(result);
- }
-
- AEDisposeDesc(&sendEvent);
- AEDisposeDesc(&replyEvent);
-
- return result;
-}
-- (long)sendAEWithSendStringForNumber:(NSString*)string eventClass:(NSString*)eventClass eventID:(NSString*)eventID appPSN:(ProcessSerialNumber)psn fixForAECrappiness:(long)fix
-{
- //Add error checking...
- AEEventClass eClass = *((unsigned long*)[eventClass UTF8String]);
- AEEventID eID = *((unsigned long*)[eventID UTF8String]);
-
- const char *sendString = [string UTF8String];
- SInt32 result = 0;
-
- AppleEvent sendEvent, replyEvent;
-
- DescType resultType;
- Size resultSize, charResultSize;
-
- AEBuildError buildError;
- OSStatus err;
- OSErr err2, err3;
- /*
- if ((GetProcessPID(&psn, &pid) == noErr) && (pid == 0)) {
- NSLog(@"Error getting PID of application! Exiting.");
- return nil;
- }
- */
- //NSLog(@"_sendString: %s", sendString);
-
- err = AEBuildAppleEvent(eClass, eID, typeProcessSerialNumber,(ProcessSerialNumber*)&psn, sizeof(ProcessSerialNumber), kAutoGenerateReturnID, 0, &sendEvent, &buildError, sendString);
-[self printCarbonDesc:&sendEvent];
- //now AEBuildAppleEvent has inserted a bogus integer in there for no reason, so we fix it ourselves.
- { //this sucks
-//hey, i'm coding this in pico, sccrew indention
-char *buf;
-Size s,i;
-s = AESizeOfFlattenedDesc(&sendEvent);
-buf = malloc(s);
-AEFlattenDesc(&sendEvent,buf,s,NULL);
-AEDisposeDesc(&sendEvent);
-for (i=0;i<s;i++)
-{
-long *lbuf = &(buf[i]);
-if (s-i <= 8) break; //is there enough room left?
-if (*lbuf == 'long' || *lbuf=='magn')
-{
-lbuf = &(buf[i+4]);
-*lbuf = fix;
-}
-}
-//sendEvent = NULL;
-AEUnflattenDesc(buf,&sendEvent);
-free(buf);
-}