/*********************************************************************
PrintScript
********************************************************************/
static void PrintScript(char * format,...)
{
va_list argptr;
char chaine[512];
va_start( argptr, format );
vsprintf( chaine, format, argptr );
strcat(chaine,"\r");
if(script==NULL) script=NewHandle(0);
PtrAndHand(chaine,script,strlen(chaine));
return;
}
/*********************************************************************
SendScript
********************************************************************/
static Handle script;
static void SendScript(void)
{
OSErr anErr;
AEDesc aScriptDesc = { typeNull, NULL };
AEDesc resultText = { typeNull, NULL };
AEDesc messageDesc = { typeNull, NULL };
OSAID aScriptID = kOSANullScript;
OSAID aResultID = kOSANullScript;
ComponentDescription descr;
Component aComponent;
ComponentInstance gScriptingComponent=NULL;
if(script)
{
if(gScriptingComponent==NULL)
{
descr.componentType = kOSAComponentType;
descr.componentSubType = (OSType) 0;
descr.componentManufacturer = (OSType) 0;
descr.componentFlags = kOSASupportsCompiling +
kOSASupportsGetSource +
kOSASupportsAECoercion +
kOSASupportsAESending +
kOSASupportsRecording +
kOSASupportsConvenience +
kOSASupportsEventHandling;
descr.componentFlagsMask = descr.componentFlags;
aComponent = FindNextComponent( NULL, &descr );
if(aComponent)
gScriptingComponent=OpenComponent( aComponent );
else
Collapse("Warning : SendScript: Can't found AppleScrip component");
}
if(gScriptingComponent)
{
HLock(script);
anErr = AECreateDesc( typeChar,*script,GetHandleSize(script), &aScriptDesc );
HUnlock(script);
if(anErr==noErr)
{
aScriptID = kOSANullScript;
anErr = OSACompile( gScriptingComponent, &aScriptDesc,kOSAModeCompileIntoContext, &aScriptID );
if(anErr==noErr)
{
anErr = OSAExecute( gScriptingComponent, aScriptID,kOSANullScript, kOSAModeNull, &aResultID );
if(anErr && anErr!=errOSAScriptError) Collapse("Warning : SendScript:OSAExecute: %d",anErr);
OSADispose( gScriptingComponent, aResultID );
}
else Collapse("Warning : SendScript:OSACompile: %d",anErr);
/* Erreur en cours ?*/
if(anErr==errOSAScriptError)
{
char chaine[512];
OSAScriptError( gScriptingComponent, kOSAErrorMessage, typeChar, &messageDesc);
memset(chaine,0,sizeof(chaine));
// BlockMoveData(*messageDesc.dataHandle,chaine,GetHandleSize(messageDesc.dataHandle));
strcpy(chaine,"Apple script error");
Collapse(chaine);
AEDisposeDesc(&messageDesc);
}
OSADispose( gScriptingComponent, aScriptID );
AEDisposeDesc(&aScriptDesc);
}
/* Fermeture du conponent */
anErr=CloseComponent(gScriptingComponent);
gScriptingComponent=NULL;
}
DisposeHandle(script);
script=NULL;
}
return ;
}