pascal OSStatus MoreAESendEventReturnData(const AEIdleUPP pIdleProcUPP, const AppleEvent *pAppleEvent, DescType pDesiredType, DescType *pActualType, void *pDataPtr, Size pMaximumSize, Size *pActualSize) { OSStatus anError = noErr; // No idle function is an error, since we are expected to return a value if (pIdleProcUPP == NULL) anError = paramErr; else { AppleEvent theReply = { typeNull, NULL }; AESendMode sendMode = kAEWaitReply; anError = AESend(pAppleEvent, &theReply, sendMode, kAENormalPriority, kNoTimeOut, pIdleProcUPP, NULL); // [ Don't dispose of the event, it's not ours ] if (noErr == anError) { anError = MoreAEGetHandlerError(&theReply); if (!anError && theReply.descriptorType != typeNull) { anError = AEGetParamPtr(&theReply, keyDirectObject, pDesiredType, pActualType, pDataPtr, pMaximumSize, pActualSize); } MoreAEDisposeDesc(&theReply); } } return anError; }
pascal OSErr MoreAESendEventNoReturnValue (const AEIdleUPP pIdleProcUPP, const AppleEvent* pAppleEvent ) { OSErr anErr = noErr; AppleEvent theReply = {typeNull,nil}; AESendMode sendMode; if (nil == pIdleProcUPP) sendMode = kAENoReply; else sendMode = kAEWaitReply; anErr = AESend( pAppleEvent, &theReply, sendMode, kAENormalPriority, kNoTimeOut, pIdleProcUPP, nil ); if ((noErr == anErr) && (kAEWaitReply == sendMode)) anErr = MoreAEGetHandlerError(&theReply); MoreAEDisposeDesc( &theReply ); return anErr; }