Liten Datorhandbok För Målmedvetna

Academic Computer Club, Umeå Universitet, 2000


Macintosh Programmering

AppleEvents

AppleEvents är den metod som olika Macintoshprogram använder för att kommunicera med varandra. Findern kan till exempel sända AppleEvents till ett program för att säga åt det att öppna eller skriva ut ett dokument. Alla program som stödjer AppleEvents måste stödja fyra grundläggande AppleEvents: starta programmet, avsluta programmet, öppna dokument och skriva ut dokument. Nedan följer exempel på hur dessa rutiner skulle kunna byggas upp:

pascal OSErr aeOApp(const AppleEvent *ae, AppleEvent *reply, long ref) { OSErr err; err=gotParams(ae); if (err) return err; else // Utför övring initialisering här, som t ex att öppna // ett nytt, tomt dokument. return noErr; } pascal OSErr aeODoc(const AppleEvent *ae, AppleEvent *reply, long ref) { FSSpec spec; AEDescList docList; OSErr err; long i, itemsInList; Size size; AEKeyword keywd; DescType type; err = AEGetParamDesc(ae,keyDirectObject,typeAEList,&docList); err = gotParams(ae); if (err) { err = AEDisposeDesc(&docList); return err; } err=AECountItems(&docList,&itemsInList); for (i=1; i<=itemsInList; i++) { err = AEGetNthPtr(&docList,i,typeFSS,&keywd,&type,(Ptr)&spec, sizeof(spec),&size); if (err) return err; // Öppna filen specificerad av filpekaren spec här. } return err; } pascal OSErr aePDoc(const AppleEvent *ae, AppleEvent *reply, long ref) { FSSpec spec; AEDescList docList; OSErr err; long i, itemsInList; Size size; AEKeyword keywd; DescType type; err = AEGetParamDesc(ae,keyDirectObject,typeAEList,&docList); err = gotParams(ae); if (err) { err = AEDisposeDesc(&docList); return err; } err=AECountItems(&docList,&itemsInList); for (i=1; i<=itemsInList; i++) { err = AEGetNthPtr(&docList,i,typeFSS,&keywd,&type,(Ptr)&spec, sizeof(spec),&size); if (err) return err; // Skriv ut dokumentet som pekas på av filpekaren spec här. } return err; } pascal OSErr aeQuit(const AppleEvent *ae, AppleEvent *reply, long ref) { OSErr err; err=gotParams(ae); if (err) return err; // Utför avslutningsfunktioner, som t ex att spara öppna dokument här. ExitToShell(); return userCanceledErr; } // Kontrollerar att vi fick alla argument till vår AppleEvent. OSErr gotParams(const AppleEvent *ae) { DescType type; Size size; OSErr myErr; myErr=AEGetAttributePtr(ae,keyMissedKeywordAttr,typeWildCard,&type,0L,0,&size); if (myErr==errAEDescNotFound) return(noErr); else if (myErr==noErr) return errAEParamMissed; else return myErr; } void installAE(void) // Installerar hanterarna för händelserna (ej PPC) { AEInstallEventHandler(kCoreEventClass,kAEOpenApplication,aeOApp,0,false); AEInstallEventHandler(kCoreEventClass,kAEOpenDocuments,aeODoc,0,false); AEInstallEventHandler(kCoreEventClass,kAEPrintDocuments,aePDoc,0,false); AEInstallEventHandler(kCoreEventClass,kAEQuitApplication,aeQuit,0,false); }

Författat av Niklas Frykholm


Bakåt , Framåt , Upp, Huvudsida
Denna sida ändrades sist av handbok den 08/05 1996 18:09:16.
Last modified Wednesday, 08-May-1996 18:09:16 CEST