From:
[email protected] (Keith Rollin)
Subject: Re: Need sample code of MPW tool using Apple Events
Date: Fri, 18 Sep 1992 01:50:18 GMT
In article <
[email protected]>,
[email protected] (Tom Cunningham) wrote:
>
>
> Does anyone have some code for an MPW tool using Apple Events that
> they could send me? In particular, I want to communicate with the
> Tool Server (e.g. run a script) via Apple Events from within an MPW
> tool. Thanks.
I used the following in a tool I wrote to kill and restart the Finder. This
was in the hopes that shutting down the Finder would help speed up my long
compiles (it didn't). Remember that you have to have one of the MPW Shells
that comes with its High-Level Event Aware bit set:
void KillFinder()
{
OSErr err;
OSType signature = 'MACS';
AEAddressDesc target;
AppleEvent theEvent;
Str255 s;
ProcessSerialNumber pPsn;
err = FindProcessBySignature(signature, &pPsn);
if (err == noErr) {
err = AECreateDesc(typeProcessSerialNumber, (Ptr) &pPsn, sizeof(pPsn),
&target);
if (err == noErr) {
err = AECreateAppleEvent('aevt', 'quit', &target,
kAutoGenerateReturnID, kAnyTransactionID, &theEvent);
if (err == noErr) {
err = AESend(&theEvent, nil, kAENoReply, kAENormalPriority, kNoTimeOut,
nil, nil);
if (err != noErr) {
fprintf(stderr, "### - Error while trying to send Apple Event.\n");
GetSysErrText(err, s);
fprintf(stderr, "### %s.\n", s);
exit(kBadAESend);
}
} else {
fprintf(stderr, "### - Error while trying to create Apple Event.\n");
GetSysErrText(err, s);
fprintf(stderr, "### %s.\n", s);
exit(kBadAppleEvent);
}
} else {
fprintf(stderr, "### - Error while trying to create Finder address.\n");
GetSysErrText(err, s);
fprintf(stderr, "### %s.\n", s);
exit(kBadAddress);
}
} else {
fprintf(stderr, "### - Error while trying to get the Finder�s psn.\n");
GetSysErrText(err, s);
fprintf(stderr, "### %s.\n", s);
exit(kCantFindFinder);
}
}
I should point out that my call to FindProcessBySignature (a local routine
that I didn't include here) is not necessary, and that creating the address
using typeSignature should be sufficient. My calling FindProcessBySignature
is there for historical reasons only.
-----
Keith Rollin
Phantom Programmer
Taligent, Inc.