Important: The information in this document is obsolete and should not be used for new development.
Summary of Responding to Apple Events
Pascal Summary
Constants
CONST gestaltAppleEventsAttr = 'evnt'; {selector for Apple events} gestaltAppleEventsPresent = 0; {if this bit is set, then Apple } { Event Manager is available} {Apple event descriptor types} typeBoolean = 'bool'; {1-byte Boolean value} typeChar = 'TEXT'; {unterminated string} typeSMInt = 'shor'; {16-bit integer} typeInteger = 'long'; {32-bit integer} typeSMFloat = 'sing'; {SANE single} typeFloat = 'doub'; {SANE double} typeLongInteger = 'long'; {32-bit integer} typeShortInteger = 'shor'; {16-bit integer} typeLongFloat = 'doub'; {SANE double} typeShortFloat = 'sing'; {SANE single} typeExtended = 'exte'; {SANE extended} typeComp = 'comp'; {SANE comp} typeMagnitude = 'magn'; {unsigned 32-bit integer} typeAEList = 'list'; {list of descriptor records} typeAERecord = 'reco'; {list of keyword-specified } { descriptor records} typeAppleEvent = 'aevt'; {Apple event record} typeTrue = 'true'; {TRUE Boolean value} typeFalse = 'fals'; {FALSE Boolean value} typeAlias = 'alis'; {alias record} typeEnumerated = 'enum'; {enumerated data} typeType = 'type'; {four-character code for } { event class or event ID} typeAppParameters = 'appa'; {Process Manager launch parameters} typeProperty = 'prop'; {Apple event property} typeFSS = 'fss '; {file system specification} typeKeyword = 'keyw'; {Apple event keyword} typeSectionH = 'sect'; {handle to a section record} typeWildCard = '****'; {matches any type} typeApplSignature = 'sign'; {application signature} typeSessionID = 'ssid'; {session reference number} typeTargetID = 'targ'; {target ID record} typeProcessSerialNumber = 'psn '; {process serial number} typeNull = 'null'; {NULL or nonexistent data} {keywords for Apple event parameters} keyDirectObject = '----'; {direct parameter} keyErrorNumber = 'errn'; {error number parameter} keyErrorString = 'errs'; {error string parameter} keyProcessSerialNumber = 'psn '; {process serial number param} {keywords for Apple event attributes} keyTransactionIDAttr = 'tran'; {transaction ID} keyReturnIDAttr = 'rtid'; {return ID} keyEventClassAttr = 'evcl'; {event class} keyEventIDAttr = 'evid'; {event ID} keyAddressAttr = 'addr'; {address of target or } { client application} keyOptionalKeywordAttr = 'optk'; {list of optional parameters } { for the Apple event} keyTimeoutAttr = 'timo'; {number of ticks the client } { will wait} keyInteractLevelAttr = 'inte'; {settings to allow Apple Event } { Manager to bring server } { to foreground} keyEventSourceAttr = 'esrc'; {nature of source } { application} keyMissedKeywordAttr = 'miss'; {first required parameter } { remaining in an Apple event} keyOriginalAddressAttr = 'from'; {address of original source; } { available only in version } { 1.01 and later versions of } { the Apple Event Manager} {keywords for special handlers} keyPreDispatch = 'phac'; {identifies a handler routine } { called immediately before the } { Apple Event Manager dispatches } { an Apple event} keySelectProc = 'selh'; {selector used with } { AERemoveSpecialHandler to } { disable the OSL} {keywords for use with AEManagerInfo; available only in version } { 1.0.1 and later versions of the Apple Event Manager} keyAERecorderCount = 'recr'; {keyword for recording info} keyAEVersion = 'vers'; {keyword for version info} {event class} kCoreEventClass = 'aevt'; {event class for required Apple } { events} {event IDs for required Apple events} kAEOpenApplication = 'oapp'; {event ID for Open } { Application event} kAEOpenDocuments = 'odoc'; {event ID for Open Documents event} kAEPrintDocuments = 'pdoc'; {event ID for Print Documents } { event} kAEQuitApplication = 'quit'; {event ID for Quit Application } { event} kAEAnswer = 'ansr'; {event ID for Apple event replies} kAEApplicationDied = 'obit'; {event ID for Application Died } { event} {constants for setting the sendMode parameter of AESend} kAENoReply = $00000001; {client doesn't want reply} kAEQueueReply = $00000002; {client wants server to } { reply in event queue} kAEWaitReply = $00000003; {client wants a reply and } { will give up processor} kAENeverInteract = $00000010; {server application should } { not interact with user } { for this Apple event} kAECanInteract = $00000020; {server may interact with } { user for this Apple event } { to supply information} kAEAlwaysInteract = $00000030; {server may interact with user } { for this Apple event even if } { no information is required} kAECanSwitchLayer = $00000040; {server should come directly } { to foreground when appropriate} kAEDontReconnect = $00000080; {don't reconnect if there } { is a PPC session closed error} kAEWantReceipt = nReturnReceipt; {client wants return } { receipt} kAEDontRecord = $00001000; {don't record this event} kAEDontExecute = $00002000; {don't excecute this event} {constants for setting the sendPriority parameter of AESend} kAENormalPriority = $00000000; {put event at the back of } { event queue} kAEHighPriority = nAttnMsg; {put event at the front of } { the event queue} {event IDs for recording events; available only in version 1.01 and } { later versions of the Apple Event Manager} kAEStartRecording = 'reca'; {event ID for Start Recording } { event} kAEStopRecording = 'recc'; {event ID for Stop Recording } { event} kAENotifyStartRecording = 'rec1'; {event ID for Recording On event} kAENotifyStopRecording = 'rec0'; {event ID for Recording Off event} kAENotifyRecording = 'recr'; {event ID for Receive Recordable } { Event event} {constant for the returnID parameter of AECreateAppleEvent} kAutoGenerateReturnID = -1; {tells Apple Event Manager to } { generate a unique return ID} {constant for transaction IDs} kAnyTransactionID = 0; {the Apple event is not } { part of a transaction} {constants for timeout durations} kAEDefaultTimeout = -1; {use default timeout value} kNoTimeOut = -2; {never time out} {constants for the dispatcher parameter of AEResumeTheCurrentEvent} kAENoDispatch = 0; {don't redispatch the Apple event} kAEUseStandardDispatch = -1; {redispatch the Apple event } { by using its entry in the } { Apple event dispatch table}Data Types
TYPE AEEventClass = PACKED ARRAY[1..4] OF Char; {event class for a high-level } { event} AEEventID = PACKED ARRAY[1..4] OF Char; {event ID for a high-level } { event} AEKeyword = PACKED ARRAY[1..4] OF Char; {keyword for a descriptor } { record} DescType = ResType; {descriptor type} AEDesc = {descriptor record} RECORD descriptorType: DescType; {type of data being passed} dataHandle: Handle; {handle to data being passed} END; AEKeyDesc = {keyword-specified } RECORD { descriptor record} descKey: AEKeyword; {keyword} descContent: AEDesc; {descriptor record} END; AEAddressDesc = AEDesc; {address descriptor record} AEDescList = AEDesc; {list of descriptor records} AERecord = AEDescList; {list of keyword-specified } { descriptor records} AppleEvent = AERecord; {list of attributes and } { parameters necessary for } { an Apple event} AESendMode = LongInt; {flags that determine how } { an Apple event is sent} AESendPriority = Integer; {send priority of an Apple } { event} AEInteractAllowed = (kAEInteractWithSelf, kAEInteractWithLocal, kAEInteractWithAll); {what processes may } { interact with the user} AEEventSource = (kAEUnknownSource, kAEDirectCall, kAESameProcess, kAELocalProcess, kAERemoteProcess); {the source of an Apple } { event} AEArrayType = (kAEDataArray, kAEPackedArray, kAEHandleArray, kAEDescArray, kAEKeyDescArray); {type of an Apple event array} AEArrayData = RECORD {data for an Apple event array} CASE AEArrayType OF kAEDataArray: (AEDataArray: ARRAY[0..0] OF Integer); kAEPackedArray: (AEPackedArray: PACKED ARRAY[0..0] OF Char); kAEHandleArray: (AEHandleArray: ARRAY[0..0] OF Handle); kAEDescArray: (AEDescArray: ARRAY[0..0] OF AEDesc); kAEKeyDescArray: (AEKeyDescArray: ARRAY[0..0] OF AEKeyDesc); END; AEArrayDataPointer = ^AEArrayData; EventHandlerProcPtr = ProcPtr; {pointer to an Apple event } { handler} IdleProcPtr = ProcPtr; {pointer to an application's } { idle function} EventFilterProcPtr = ProcPtr; {pointer to an application's } { filter function}Routines for Responding to Apple Events
Creating and Managing the Apple Event Dispatch Tables
FUNCTION AEInstallEventHandler (theAEEventClass: AEEventClass; theAEEventID: AEEventID; handler: EventHandlerProcPtr; handlerRefcon: LongInt; isSysHandler: Boolean): OSErr; FUNCTION AEGetEventHandler(theAEEventClass: AEEventClass; theAEEventID: AEEventID; VAR handler: EventHandlerProcPtr; VAR handlerRefcon: LongInt; isSysHandler: Boolean): OSErr; FUNCTION AERemoveEventHandler (theAEEventClass: AEEventClass; theAEEventID: AEEventID; handler: EventHandlerProcPtr; isSysHandler: Boolean): OSErr;Dispatching Apple Events
FUNCTION AEProcessAppleEvent (theEventRecord: EventRecord): OSErr;Getting Data or Descriptor Records Out of Apple Event Parameters and Attributes
FUNCTION AEGetParamPtr(theAppleEvent: AppleEvent; theAEKeyword: AEKeyword; desiredType: DescType; VAR typeCode: DescType; dataPtr: Ptr; maximumSize: Size; VAR actualSize: Size): OSErr; FUNCTION AEGetParamDesc(theAppleEvent: AppleEvent; theAEKeyword: AEKeyword; desiredType: DescType; VAR result: AEDesc): OSErr; FUNCTION AEGetAttributePtr(theAppleEvent: AppleEvent; theAEKeyword: AEKeyword; desiredType: DescType; VAR typeCode: DescType; dataPtr: Ptr; maximumSize: Size; VAR actualSize: Size): OSErr; FUNCTION AEGetAttributeDesc(theAppleEvent: AppleEvent; theAEKeyword: AEKeyword; desiredType: DescType; VAR result: AEDesc): OSErr;Counting the Items in Descriptor Lists
FUNCTION AECountItems(theAEDescList: AEDescList; VAR theCount: LongInt): OSErr;Getting Items From Descriptor Lists
FUNCTION AEGetNthPtr(theAEDescList: AEDescList; index: LongInt; desiredType: DescType; VAR theAEKeyword: AEKeyword; VAR typeCode: DescType; dataPtr: Ptr; maximumSize: Size; VAR actualSize: Size): OSErr; FUNCTION AEGetNthDesc(theAEDescList: AEDescList; index: LongInt; desiredType: DescType; VAR theAEKeyword: AEKeyword; VAR result: AEDesc): OSErr; FUNCTION AEGetArray(theAEDescList: AEDescList; arrayType: AEArrayType; arrayPtr: AEArrayDataPointer; maximumSize: Size; VAR itemType: DescType; VAR itemSize: Size; VAR itemCount: LongInt): OSErr;Getting Data and Keyword-Specified Descriptor Records Out of AE Records
FUNCTION AEGetKeyPtr(theAERecord: AERecord; theAEKeyword: AEKeyword; desiredType: DescType; VAR typeCode: DescType; dataPtr: Ptr; maximumSize: Size; VAR actualSize: Size): OSErr; FUNCTION AEGetKeyDesc(theAERecord: AERecord; theAEKeyword: AEKeyword; desiredType: DescType; VAR result: AEDesc): OSErr;Requesting User Interaction
FUNCTION AESetInteractionAllowed (level: AEInteractAllowed): OSErr; FUNCTION AEGetInteractionAllowed (VAR level: AEInteractAllowed): OSErr; FUNCTION AEInteractWithUser(timeOutInTicks: LongInt; nmReqPtr: NMRecPtr; idleProc: IdleProcPtr): OSErr;Requesting More Time to Respond to Apple Events
FUNCTION AEResetTimer(reply: AppleEvent): OSErr;Suspending and Resuming Apple Event Handling
FUNCTION AESuspendTheCurrentEvent (theAppleEvent: AppleEvent): OSErr; FUNCTION AEResumeTheCurrentEvent (theAppleEvent, reply: AppleEvent; dispatcher: EventHandlerProcPtr; handlerRefcon: LongInt): OSErr; FUNCTION AESetTheCurrentEvent (theAppleEvent: AppleEvent): OSErr; FUNCTION AEGetTheCurrentEvent (VAR theAppleEvent: AppleEvent): OSErr;Getting the Sizes and Descriptor Types of Descriptor Records
FUNCTION AESizeOfNthItem(theAEDescList: AEDescList; index: LongInt; VAR typeCode: DescType; VAR dataSize: Size): OSErr; FUNCTION AESizeOfKeyDesc(theAERecord: AERecord; theAEKeyword: AEKeyword; VAR typeCode: DescType; VAR dataSize: Size): OSErr; FUNCTION AESizeOfParam(theAppleEvent: AppleEvent; theAEKeyword: AEKeyword; VAR typeCode: DescType; VAR dataSize: Size): OSErr; FUNCTION AESizeOfAttribute(theAppleEvent: AppleEvent; theAEKeyword: AEKeyword; VAR typeCode: DescType; VAR dataSize: Size): OSErr;Deleting Descriptor Records
FUNCTION AEDeleteItem(theAEDescList: AEDescList; index: LongInt): OSErr; FUNCTION AEDeleteKeyDesc(theAERecord: AERecord; theAEKeyword: AEKeyword): OSErr; FUNCTION AEDeleteParam(theAppleEvent: AppleEvent; theAEKeyword: AEKeyword): OSErr;Deallocating Memory for Descriptor Records
FUNCTION AEDisposeDesc(VAR theAEDesc: AEDesc): OSErr;Coercing Descriptor Types
FUNCTION AECoercePtr(typeCode: DescType; dataPtr: Ptr; dataSize: Size; toType: DescType; VAR result: AEDesc): OSErr; FUNCTION AECoerceDesc(theAEDesc: AEDesc; toType: DescType; VAR result: AEDesc): OSErr;Creating and Managing the Coercion Handler Dispatch Tables
FUNCTION AEInstallCoercionHandler (fromType: DescType; toType: DescType; handler: ProcPtr; handlerRefcon: LongInt; fromTypeIsDesc: Boolean; isSysHandler: Boolean): OSErr; FUNCTION AEGetCoercionHandler (fromType: DescType; toType: DescType; VAR handler: ProcPtr; VAR handlerRefcon: LongInt; VAR fromTypeIsDesc: Boolean; isSysHandler: Boolean): OSErr; FUNCTION AERemoveCoercionHandler (fromType: DescType; toType: DescType; handler: ProcPtr; isSysHandler: Boolean): OSErr;Creating and Managing the Special Handler Dispatch Tables
FUNCTION AEInstallSpecialHandler (functionClass: AEKeyword; handler: ProcPtr; isSysHandler: Boolean): OSErr; FUNCTION AEGetSpecialHandler (functionClass: AEKeyword; VAR handler: ProcPtr; isSysHandler: Boolean): OSErr; FUNCTION AERemoveSpecialHandler (functionClass: AEKeyword; handler: ProcPtr; isSysHandler: Boolean): OSErr;Getting Information About the Apple Event Manager
{available only in version 1.01 and later versions of Apple Event Manager} FUNCTION AEManagerInfo (keyword: AEKeyword; VAR result: LongInt): OSErr;Application-Defined Routines
FUNCTION MyEventHandler(theAppleEvent: AppleEvent; reply: AppleEvent; handlerRefcon: LongInt): OSErr; FUNCTION MyCoercePtr(typeCode: DescType; dataPtr: Ptr; dataSize: Size; toType: DescType; handlerRefcon: LongInt; VAR result: AEDesc): OSErr; FUNCTION MyCoerceDesc(theAEDesc: AEDesc; toType: DescType; handlerRefcon: LongInt; VAR result: AEDesc): OSErr;C Summary
Constants
enum { #define gestaltAppleEventsAttr 'evnt' /*selector for Apple events*/ gestaltAppleEventsPresent = 0 /*if this bit is set, then */ /* Apple Event Manager is */ }; /* available*/ /*Apple event descriptor types*/ enum { typeBoolean = 'bool', /*1-byte Boolean value*/ typeChar = 'TEXT', /*unterminated string*/ typeSMInt = 'shor', /*16-bit integer*/ typeInteger = 'long', /*32-bit integer*/ typeSMFloat = 'sing', /*SANE single*/ typeFloat = 'doub', /*SANE double*/ typeLongInteger = 'long', /*32-bit integer*/ typeShortInteger = 'shor', /*16-bit integer*/ typeLongFloat = 'doub', /*SANE double*/ typeShortFloat = 'sing', /*SANE single*/ typeExtended = 'exte', /*SANE extended*/ typeComp = 'comp', /*SANE comp*/ typeMagnitude = 'magn', /*unsigned 32-bit integer*/ typeAEList = 'list', /*list of descriptor records*/ typeAERecord = 'reco', /*list of keyword-specified */ /* descriptor records*/ typeAppleEvent = 'aevt', /*Apple event record*/ typeTrue = 'true', /*TRUE Boolean value*/ typeFalse = 'fals', /*FALSE Boolean value*/ typeAlias = 'alis', /*alias record*/ typeEnumerated = 'enum' /*enumerated data*/ }; enum { typeType = 'type', /*four-character code for */ /* event class or event ID*/ typeAppParameters = 'appa', /*Process Manager launch */ /* parameters*/ typeProperty = 'prop', /*Apple event property*/ typeFSS = 'fss ', /*file system specification*/ typeKeyword = 'keyw', /*Apple event keyword*/ typeSectionH = 'sect', /*handle to a section record*/ typeWildCard = '****', /*matches any type*/ typeApplSignature = 'sign', /*application signature*/ typeSessionID = 'ssid', /*session ID*/ typeTargetID = 'targ', /*target ID record*/ typeProcessSerialNumber = 'psn ', /*process serial number*/ typeNull = 'null' /*NULL or nonexistent data*/ }; /*keywords for Apple event parameters*/ enum { keyDirectObject = '----', /*direct parameter*/ keyErrorNumber = 'errn', /*error number parameter*/ keyErrorString = 'errs', /*error string parameter*/ keyProcessSerialNumber = 'psn ' /*process serial number param*/ }; /*keywords for Apple event attributes*/ enum { keyTransactionIDAttr = 'tran', /*transaction ID*/ keyReturnIDAttr = 'rtid', /*return ID*/ keyEventClassAttr = 'evcl', /*event class*/ keyEventIDAttr = 'evid', /*event ID*/ keyAddressAttr = 'addr', /*address of target or */ /* client application*/ keyOptionalKeywordAttr = 'optk', /*list of optional parameters */ /* for the Apple event*/ keyTimeoutAttr = 'timo', /*number of ticks the client */ /* will wait*/ keyInteractLevelAttr = 'inte', /*settings to allow Apple */ /* Event Mgr to bring */ /* server to foreground*/ keyEventSourceAttr = 'esrc', /*nature of source */ /* application*/ keyMissedKeywordAttr = 'miss', /*first required parameter */ /* remaining in an Apple */ /* event*/ keyOriginalAddressAttr = 'from' /*address of original source; */ /* available only in version */ /* 1.01 and later versions of */ /* the Apple Event Manager*/ }; /*keywords for special handlers*/ enum { keyPreDispatch = 'phac', /*identifies a handler */ /* routine that is called */ /* immediately before the */ /* Apple Event Manager */ /* dispatches an Apple event*/ keySelectProc = 'selh', /*selector used with */ /* AERemoveSpecialHandler to */ /* disable the OSL*/ /*keywords for use with AEManagerInfo, available only in version */ /* 1.0.1 and later versions of the Apple Event Manager*/ keyAERecorderCount = 'recr', /*keyword for recording info*/ keyAEVersion = 'vers', /*keyword for version info*/ /*event class*/ kCoreEventClass = 'aevt' /*event class for required */ /* Apple events*/ }; /*event IDs for required Apple events*/ enum { kAEOpenApplication = 'oapp', /*event ID for Open */ /* Application event*/ kAEOpenDocuments = 'odoc', /*event ID for Open */ /* Documents event*/ kAEPrintDocuments = 'pdoc', /*event ID for Print */ /* Documents event*/ kAEQuitApplication = 'quit', /*event ID for Quit */ /* Application event*/ kAEAnswer = 'ansr', /*event ID for Apple event */ /* replies*/ kAEApplicationDied = 'obit' /*event ID for Application */ /* Died event*/ }; /*constants for setting the sendMode parameter of AESend*/ enum { kAENoReply = 0x00000001, /*client doesn't want reply*/ kAEQueueReply = 0x00000002, /*client wants server to */ /* reply in event queue*/ kAEWaitReply = 0x00000003, /*client wants a reply and */ /* will give up processor*/ kAENeverInteract = 0x00000010, /*server application should */ /* not interact with user */ /* for this Apple event*/ kAECanInteract = 0x00000020, /*server may interact with */ /* user for this Apple event */ /* to supply information*/ kAEAlwaysInteract = 0x00000030, /*server may interact with */ /* user for this Apple event */ /* even if no information */ /* is required*/ kAECanSwitchLayer = 0x00000040, /*server should come */ /* directly to foreground */ /* when appropriate*/ kAEDontReconnect = 0x00000080, /*don't reconnect if there */ /* is a PPC session closed */ /* error*/ kAEWantReceipt = nReturnReceipt, /*client wants return */ /* receipt*/ kAEDontRecord = 0x00001000, /*don't record this event*/ kAEDontExecute = 0x00002000, /*don't excecute this event*/ /*constants for setting the sendPriority parameter of AESend*/ kAENormalPriority = 0x00000000, /*post message at end of */ /* event queue*/ kAEHighPriority = nAttnMsg /*post message at front of */ /* event queue*/ }; /*event IDs for recording events; available only in version 1.01 and */ /* later versions of the Apple Event Manager*/ enum { kAEStartRecording = 'reca', /*event ID for Start */ /* Recording event*/ kAEStopRecording = 'recc', /*event ID for Stop */ /* Recording event*/ kAENotifyStartRecording = 'rec1', /*event ID for Recording On*/ /* event*/ kAENotifyStopRecording = 'rec0', /*event ID for Recording Off */ /* event*/ kAENotifyRecording = 'recr' /*event ID for Receive */ /* Recordable Event event*/ }; enum { /*constant for the returnID parameter of AECreateAppleEvent*/ kAutoGenerateReturnID = -1, /*tells Apple Event Manager */ /* to generate a unique */ /* return ID*/ /*constant for transaction IDs*/ kAnyTransactionID = 0, /*the Apple event is not */ /* part of a transaction*/ /*constants for timeout durations*/ kAEDefaultTimeout = -1, /*use default timeout value*/ kNoTimeOut = -2, /*never time out*/ /*constants for the dispatcher parameter of AEResumeTheCurrentEvent*/ kAENoDispatch = 0, /*don't redispatch the */ /* Apple event*/ kAEUseStandardDispatch = -1 /*redispatch the Apple event */ /* by using its entry in the */ /* Apple event dispatch table*/ };Data Types
typedef unsigned long AEEventClass; /*event class for a */ /* high-level event*/ typedef unsigned long AEEventID; /*event ID for a high-level */ /* event*/ typedef unsigned long AEKeyword; /*keyword for a descriptor */ /* record*/ typedef ResType DescType; /*descriptor type*/ struct AEDesc { /*descriptor record*/ DescType descriptorType; /*type of data being passed*/ Handle dataHandle; /*handle to data being passed*/ }; typedef struct AEDesc AEDesc; struct AEKeyDesc { /*keyword-specified */ /* descriptor record*/ AEKeyword descKey; /*keyword*/ AEDesc descContent; /*descriptor record*/ }; typedef struct AEKeyDesc AEKeyDesc; typedef AEDesc AEAddressDesc; /*address descriptor record*/ typedef AEDesc AEDescList; /*list of descriptor records*/ typedef AEDescList AERecord; /*list of keyword-specified */ /* descriptor records*/ typedef AERecord AppleEvent; /*list of attributes and */ /* parameters necessary for */ /* an Apple event*/ typedef long AESendMode; /*flags that determine how */ /* an Apple event is sent*/ typedef short AESendPriority; /*send priority of an Apple */ /* event*/ enum { kAEInteractWithSelf, kAEInteractWithLocal, kAEInteractWithAll }; /*what processes may */ typedef unsigned char AEInteractAllowed; /* interact with the user*/ enum { kAEUnknownSource, kAEDirectCall, kAESameProcess, kAELocalProcess, kAERemoteProcess }; /*the source of an Apple */ typedef unsigned char AEEventSource; /* event*/ enum { kAEDataArray, kAEPackedArray, kAEHandleArray, kAEDescArray, kAEKeyDescArray }; /*type of an Apple event */ typedef unsigned char AEArrayType; /* array*/ union AEArrayData { /*data for an Apple event */ short kAEDataArray[1]; /* array*/ char kAEPackedArray[1]; Handle kAEHandleArray[1]; AEDesc kAEDescArray[1]; AEKeyDesc kAEKeyDescArray[1]; }; typedef union AEArrayData AEArrayData; typedef AEArrayData *AEArrayDataPointer; typedef ProcPtr EventHandlerProcPtr; /*pointer to an Apple event */ /* handler*/ typedef ProcPtr IdleProcPtr; /*pointer to an application's */ /* idle function*/ typedef ProcPtr EventFilterProcPtr; /*pointer to an application's */ /* filter function*/Routines for Responding to Apple Events
Creating and Managing the Apple Event Dispatch Tables
pascal OSErr AEInstallEventHandler (AEEventClass theAEEventClass, AEEventID theAEEventID, EventHandlerProcPtr handler, long handlerRefcon, Boolean isSysHandler); pascal OSErr AEGetEventHandler (AEEventClass theAEEventClass, AEEventID theAEEventID, EventHandlerProcPtr *handler, long *handlerRefcon, Boolean isSysHandler); pascal OSErr AERemoveEventHandler (AEEventClass theAEEventClass, AEEventID theAEEventID, EventHandlerProcPtr handler, Boolean isSysHandler);Dispatching Apple Events
pascal OSErr AEProcessAppleEvent (const EventRecord *theEventRecord);Getting Data or Descriptor Records Out of Apple Event Parameters and Attributes
pascal OSErr AEGetParamPtr(const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, DescType desiredType, DescType *typeCode, void* dataPtr, Size maximumSize, Size *actualSize); pascal OSErr AEGetParamDesc(const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, DescType desiredType, AEDesc *result); pascal OSErr AEGetAttributePtr (const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, DescType desiredType, DescType *typeCode, void* dataPtr, Size maximumSize, Size *actualSize); pascal OSErr AEGetAttributeDesc (const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, DescType desiredType, AEDesc *result);Counting the Items in Descriptor Lists
pascal OSErr AECountItems(const AEDescList *theAEDescList, long *theCount);Getting Items From Descriptor Lists
pascal OSErr AEGetNthPtr(const AEDescList *theAEDescList, long index, DescType desiredType, AEKeyword *theAEKeyword, DescType *typeCode, void* dataPtr, Size maximumSize, Size *actualSize); pascal OSErr AEGetNthDesc(const AEDescList *theAEDescList, long index, DescType desiredType, AEKeyword *theAEKeyword, AEDesc *result); pascal OSErr AEGetArray(const AEDescList *theAEDescList, AEArrayType arrayType, AEArrayDataPointer arrayPtr, Size maximumSize, DescType *itemType, Size *itemSize, long *itemCount);Getting Data and Keyword-Specified Descriptor Records Out of AE Records
pascal OSErr AEGetKeyPtr(const AERecord *theAERecord, AEKeyword theAEKeyword, DescType desiredType, DescType *typeCode, void* dataPtr, Size maximumSize, Size *actualSize); pascal OSErr AEGetKeyDesc(const AERecord *theAERecord, AEKeyword theAEKeyword, DescType desiredType, AEDesc *result);Requesting User Interaction
pascal OSErr AESetInteractionAllowed (AEInteractAllowed level); pascal OSErr AEGetInteractionAllowed (AEInteractAllowed *level); pascal OSErr AEInteractWithUser (long timeOutInTicks, NMRecPtr nmReqPtr, IdleProcPtr idleProc);Requesting More Time to Respond to Apple Events
pascal OSErr AEResetTimer(const AppleEvent *reply);Suspending and Resuming Apple Event Handling
pascal OSErr AESuspendTheCurrentEvent (const AppleEvent *theAppleEvent); pascal OSErr AEResumeTheCurrentEvent (const AppleEvent *theAppleEvent, const AppleEvent *reply, EventHandlerProcPtr dispatcher, long handlerRefcon); pascal OSErr AESetTheCurrentEvent (const AppleEvent *theAppleEvent); pascal OSErr AEGetTheCurrentEvent (AppleEvent *theAppleEvent);Getting the Sizes and Descriptor Types of Descriptor Records
pascal OSErr AESizeOfNthItem (const AEDescList *theAEDescList, long index, DescType *typeCode, Size *dataSize); pascal OSErr AESizeOfKeyDesc (const AERecord *theAERecord, AEKeyword theAEKeyword, DescType *typeCode, Size *dataSize); pascal OSErr AESizeOfParam(const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, DescType *typeCode, Size *dataSize); pascal OSErr AESizeOfAttribute (const AppleEvent *theAppleEvent, AEKeyword theAEKeyword, DescType *typeCode, Size *dataSize);Deleting Descriptor Records
pascal OSErr AEDeleteItem(const AEDescList *theAEDescList, long index); pascal OSErr AEDeleteKeyDesc (const AERecord *theAERecord, AEKeyword theAEKeyword); pascal OSErr AEDeleteParam(const AppleEvent *theAppleEvent, AEKeyword theAEKeyword);Deallocating Memory for Descriptor Records
pascal OSErr AEDisposeDesc(AEDesc *theAEDesc);Coercing Descriptor Types
pascal OSErr AECoercePtr(DescType typeCode, const void* dataPtr, Size dataSize, DescType toType, AEDesc *result); pascal OSErr AECoerceDesc(const AEDesc *theAEDesc, DescType toType, AEDesc *result);Creating and Managing the Coercion Handler Dispatch Tables
pascal OSErr AEInstallCoercionHandler (DescType fromType, DescType toType, ProcPtr handler, long handlerRefcon, Boolean fromTypeIsDesc, Boolean isSysHandler); pascal OSErr AEGetCoercionHandler (DescType fromType, DescType toType, ProcPtr *handler, long *handlerRefcon, Boolean *fromTypeIsDesc, Boolean isSysHandler); pascal OSErr AERemoveCoercionHandler (DescType fromType, DescType toType, ProcPtr handler, Boolean isSysHandler);Creating and Managing the Special Handler Dispatch Tables
pascal OSErr AEInstallSpecialHandler (AEKeyword functionClass, ProcPtr handler, Boolean isSysHandler); pascal OSErr AEGetSpecialHandler (AEKeyword functionClass, ProcPtr *handler, Boolean isSysHandler); pascal OSErr AERemoveSpecialHandler (AEKeyword functionClass, ProcPtr handler, Boolean isSysHandler);Getting Information About the Apple Event Manager
/*available only in version 1.01 and later versions of Apple Event Manager*/ pascal OSErr AEManagerInfo (AEKeyword keyword, long *result);Application-Defined Routines
pascal OSErr MyEventHandler(const AppleEvent *theAppleEvent, const AppleEvent *reply, long handlerRefcon); pascal OSErr MyCoercePtr(DescType typeCode, const void* dataPtr, Size dataSize, DescType toType, long handlerRefcon, AEDesc *result); pascal OSErr MyCoerceDesc(const AEDesc *theAEDesc, DescType toType, long handlerRefcon, AEDesc *result);Assembly-Language Summary
Trap Macros
Trap Macros Requiring Routine Selectors
_Pack8
Selector Routine $011E AESetInteractionAllowed $0204 AEDisposeDesc $0219 AEResetTimer $021A AEGetTheCurrentEvent $021B AEProcessAppleEvent $021D AEGetInteractionAllowed $022B AESuspendTheCurrentEvent $022C AESetTheCurrentEvent $0407 AECountItems $040E AEDeleteItem $0413 AEDeleteKeyDesc $0413 AEDeleteParam $0441 AEManagerInfo $0500 AEInstallSpecialHandler $0501 AERemoveSpecialHandler $052D AEGetSpecialHandler $0603 AECoerceDesc $061C AEInteractWithUser $0720 AERemoveEventHandler $0723 AERemoveCoercionHandler $0812 AEGetKeyDesc $0812 AEGetParamDesc $0818 AEResumeTheCurrentEvent $0826 AEGetAttributeDesc $0828 AESizeOfAttribute $0829 AESizeOfKeyDesc $0829 AESizeOfParam $082A AESizeOfNthItem $091F AEInstallEventHandler $0921 AEGetEventHandler $0A02 AECoercePtr $0A22 AEInstallCoercionHandler $0A0B AEGetNthDesc $0B24 AEGetCoercionHandler $0D0C AEGetArray $0E11 AEGetKeyPtr $0E11 AEGetParamPtr $0E15 AEGetAttributePtr $100A AEGetNthPtr Result Codes
noErr 0 No error paramErr -50 Parameter error (for example, value of handler pointer is NIL
or odd)eLenErr -92 Buffer too big to send memFullErr -108 Not enough room in heap zone userCanceledErr -128 User canceled an operation procNotFound -600 No eligible process with specified process serial number bufferIsSmall -607 Buffer is too small noOutstandingHLE -608 No outstanding high-level event connectionInvalid -609 Nonexistent signature or session ID noUserInteractionAllowed -610 Background application sends event requiring authentication noPortErr
-903 Client hasn't set 'SIZE'
resource to indicate awareness of high-level eventsdestPortErr -906 Server hasn't set 'SIZE'
resource to indicate awareness of high-level events, or else is not presentsessClosedErr -917 The kAEDontReconnect
flag in thesendMode
parameter was set, and the server quit and then restartederrAECoercionFail -1700 Data could not be coerced to the requested descriptor type errAEDescNotFound -1701 Descriptor record was not found errAECorruptData -1702 Data in an Apple event could not be read errAEWrongDataType -1703 Wrong descriptor type errAENotAEDesc -1704 Not a valid descriptor record errAEBadListItem -1705 Operation involving a list item failed errAENewerVersion -1706 Need a newer version of the Apple Event Manager errAENotAppleEvent -1707 Event is not an Apple event errAEEventNotHandled -1708 Event wasn't handled by an Apple event handler errAEReplyNotValid -1709 AEResetTimer
was passed an invalid replyerrAEUnknownSendMode -1710 Invalid sending mode was passed errAEWaitCanceled -1711 User canceled out of wait loop for reply or receipt errAETimeout -1712 Apple event timed out errAENoUserInteraction -1713 No user interaction allowed errAENotASpecialFunction -1714 The keyword is not valid for a special function errAEParamMissed -1715 Handler cannot understand a parameter the client considers required errAEUnknownAddressType -1716 Unknown Apple event address type errAEHandlerNotFound -1717 No handler found for an Apple event or a coercion, or no object callback function found errAEReplyNotArrived -1718 Reply has not yet arrived errAEIllegalIndex -1719 Not a valid list index errAEImpossibleRange -1720 The range is not valid because it is impossible for a range to include the first and last objects that were specified; an example is a range in which the offset of the first object is greater than the offset of the last object errAEWrongNumberArgs -1721 The number of operands provided for the kAENot
logical operator is not 1errAEAccessorNotFound -1723 There is no object accessor function for the specified object class and token descriptor type errAENoSuchLogical -1725 The logical operator in a logical descriptor record is not kAEAnd
,kAEOr
, orkAENot
errAEBadTestKey -1726 The descriptor record in a test key is neither a comparison descriptor record nor a logical descriptor record errAENotAnObjectSpec -1727 The objSpecifier
parameter ofAEResolve
is not an object specifier recorderrAENoSuchObject -1728 A run-time resolution error, for example: object specifier record asked for the third element, but there are only two errAENegativeCount -1729 Object-counting function returned negative value errAEEmptyListContainer -1730 The container for an Apple event object is specified by an empty list errAEUnknownObjectType -1731 Descriptor type of token returned by AEResolve
is not known to server applicationerrAERecordingIsAlreadyOn -1732 Attempt to turn recording on when it is already on