From 9022764aafc0a65ed10dfeef65b52cee01731cd5 Mon Sep 17 00:00:00 2001 From: Alexander Strange Date: Wed, 12 Feb 2003 05:57:39 +0000 Subject: [PATCH] The array-returning function now compiles, but probably does not work. --- ITAppleEventCenter.h | 2 ++ ITAppleEventCenter.m | 60 +++++++++++++++++--------------------------- 2 files changed, 25 insertions(+), 37 deletions(-) diff --git a/ITAppleEventCenter.h b/ITAppleEventCenter.h index 218c0d7..82dac05 100755 --- a/ITAppleEventCenter.h +++ b/ITAppleEventCenter.h @@ -23,6 +23,8 @@ + (id)sharedCenter; - (NSString*)sendAEWithRequestedKey:(NSString*)key eventClass:(NSString*)eventClass eventID:(NSString*)eventID appPSN:(ProcessSerialNumber)psn; - (long)sendAEWithRequestedKeyForNumber:(NSString*)key eventClass:(NSString*)eventClass eventID:(NSString*)eventID appPSN:(ProcessSerialNumber)psn; +- (AEArrayDataPointer)sendAEWithRequestedKeyForArray:(NSString*)key eventClass:(NSString*)eventClass eventID:(NSString*)eventID appPSN:(ProcessSerialNumber)psn + - (NSString*)sendTwoTierAEWithRequestedKey:(NSString*)key fromObjectByKey:(NSString*)object eventClass:(NSString*)eventClass eventID:(NSString*)eventID appPSN:(ProcessSerialNumber)psn; - (long)sendTwoTierAEWithRequestedKeyForNumber:(NSString*)key fromObjectByKey:(NSString*)object eventClass:(NSString*)eventClass eventID:(NSString*)eventID appPSN:(ProcessSerialNumber)psn; diff --git a/ITAppleEventCenter.m b/ITAppleEventCenter.m index 47913c8..ed1ad83 100755 --- a/ITAppleEventCenter.m +++ b/ITAppleEventCenter.m @@ -379,70 +379,56 @@ static ITAppleEventCenter *_sharedAECenter = nil; DisposeHandle(xx); } -- (NSArray*)sendAEWithRequestedKeyForArray:(NSString*)key eventClass:(NSString*)eventClass eventID:(NSString*)eventID appPSN:(ProcessSerialNumber)psn + +- (AEArrayDataPointer)sendAEWithRequestedKeyForArray:(NSString*)key eventClass:(NSString*)eventClass eventID:(NSString*)eventID appPSN:(ProcessSerialNumber)psn { //Add error checking... AEEventClass eClass = *((unsigned long*)[eventClass UTF8String]); AEEventID eID = *((unsigned long*)[eventID UTF8String]); - + const char *sendString = [[NSString stringWithFormat:@"'----':obj { form:'prop', want:type('prop'), seld:type('%s'), from:'null'() }", [key UTF8String]] UTF8String]; - NSArray *_finalArray = nil; - + AEArrayDataPointer result = nil; + AppleEvent sendEvent, replyEvent; AEIdleUPP upp = NewAEIdleUPP(&MyAEIdleCallback); - + 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]; - + if (err) { NSLog(@"%d:%d at \"%@\"",(int)buildError.fError,buildError.fErrorPos,[sendString substringToIndex:buildError.fErrorPos]); } - + err = AESend(&sendEvent, &replyEvent, kAEWaitReply, kAENormalPriority, kNoTimeOut, upp, NULL); - + //[self printCarbonDesc:&replyEvent]; - + if (err) { NSLog(@"Send Error: %i",err); } else { - unichar *result = 0; - - err2 = AESizeOfParam(&replyEvent, keyDirectObject, &resultType, &resultSize); - result = malloc(resultSize); - - if (err2) { - NSLog(@"Error After AESizeOfParam: %i", err2); - } else { - err3 = AEGetParamPtr(&replyEvent, keyDirectObject, resultType, NULL, result, resultSize, &charResultSize); - - if (err3) { - NSLog(@"Error After AEGetParamPtr: %i", err3); - } else { - _finalString = [[NSString stringWithCharacters:result length:charResultSize/sizeof(unichar)] copy]; - } - } + 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 _finalString; + + return result; } @end -- 2.20.1