Important: The information in this document is obsolete and should not be used for new development.
OSADoEvent
You can use theOSADoEvent
function to handle an Apple event with the aid of a script context and obtain a reply event.
FUNCTION OSADoEvent(scriptingComponent: ComponentInstance; theAppleEvent: AppleEvent; contextID: OSAID; modeFlags: LongInt; VAR reply: AppleEvent): OSAError;
scriptingComponent
- A component instance created by a prior call to the Component Manager function
OpenDefaultComponent
orOpenComponent
(see page 10-4).theAppleEvent
- The Apple event to be handled.
contextID
- The script ID for the script context to be used to handle the Apple event.
modeFlags
- Information used by individual scripting components. To avoid setting any mode flags, specify
kOSAModeNull
. Other possible mode flags are listed in the description that follows.reply
- The reply Apple event.
DESCRIPTION
TheOSADoEvent
function resembles bothOSADoScript
andOSAExecuteEvent
. However, unlikeOSADoScript
, the scriptOSADoEvent
executes must be in the form of a script context, and execution is initiated by an Apple event. UnlikeOSAExecuteEvent
,OSADoEvent
returns a reply Apple event rather than the script ID of the resulting script value.The
OSADoEvent
function, likeOSAExecuteEvent
, attempts to use the script context specified by thecontextID
parameter to handle the Apple event specified by thetheAppleEvent
parameter. If the scripting component determines that the script context can't handle the event (for example, if a script written in an AppleScript dialect doesn't include statements that handle the event),OSADoEvent
immediately returnserrAEEventNotHandled
rather thanerrOSAScriptError
.If the scripting component determines that the script context can handle the event,
OSADoEvent
executes the script context's handler for the event and returns the resulting script ID.The
OSADoEvent
function returns a reply event that contains either the resulting script value or, if an error occurred during script execution, information about the error. If the errorerrOSAScriptError
occurs during script execution,OSADoEvent
callsOSAScriptError
and returns the appropriate error information in the reply. TheOSADoEvent
function never returnserrOSAScriptError
.You can control the way in which the scripting component executes a script context by adding any of these flags to the
modeFlags
parameter:
Flag Description kOSAModeNeverInteract Adds kAENeverInteract
tosendMode
parameter ofAESend
for events sent when script is executed.kOSAModeCanInteract Adds kAECanInteract
tosendMode
parameter ofAESend
for events sent when script is executed.kOSAModeAlwaysInteract Adds kAEAlwaysInteract
tosendMode
parameter ofAESend
for events sent when script is executed.kOSAModeCantSwitchLayer Prevents use of kAECanSwitchLayer
insendMode
parameter ofAESend
for events sent when script is executed (the opposite of the Apple Event Manager's interpretation of the same bit).kOSAModeDontReconnect Adds kAEDontReconnect
tosendMode
parameter ofAESend
for events sent when script is executed.kOSAModeDoRecord Prevents use of kAEDontRecord
insendMode
parameter ofAESend
for events sent when script is executed (the opposite of the Apple Event Manager's interpretation of the same bit).If the script context specifies that the Apple event should be passed to the application's standard handler for that event (for example, with an AppleScript
continue
statement),OSADoEvent
passes the event to the resume dispatch function currently being used by the scripting component. The resume dispatch function dispatches the event directly to the application's standard handler for that event (that is, without callingOSADoEvent
again). If thecontextID
parameter iskOSANullScript
, theOSADoEvent
function passes the event directly to the resume dispatch function. If the call to the resume dispatch function is successful, execution of the script context proceeds from the point at which the resume dispatch function was called.
- IMPORTANT
- Like
OSAExecuteEvent
,OSADoEvent
can generate the result codeerrAEEventNotHandled
in at least two ways. If the scripting component determines that a script context doesn't declare a handler for a particular event,OSADoEvent
immediately returnserrAEEventNotHandled
. If a scripting component calls its resume dispatch function during script execution and the application's standard handler for the event fails to handle it,OSADoEvent
returnserrAEEventNotHandled
in the reply Apple event.RESULT CODES
noErr 0 No error errAEEventNotHandled -1708 Script context doesn't contain handler for event errOSASystemError -1750 General scripting system error errOSAInvalidID -1751 Invalid script ID badComponentInstance $80008001 Invalid component instance SEE ALSO
For an example of the use ofOSADoEvent
, see Listing 10-7 on page 10-21.