[comp.sys.mac.programmer] launching question

ted@hpwrce.HP.COM ( Ted Johnson) (02/01/89)

>Does anyone have a version of the Pascal code found in tech note #126
>(regarding sublaunching an application) written in Lightspeed C?  I've
>tried to translate it into Lightspeed C and get it to work as advertised
>but was unsuccessful so far (we have Multifinder 6.0, if that's important).
>The goal is to have a way to launch another application and return to the
>launching program; if there's an easier way to do this, I'd be happy to

I have the LSC code which shows how to launch another program, but
you *can't* go back to the original program (at least with my code :-)

-Ted

ted@hpwrce.HP.COM ( Ted Johnson) (02/09/89)

Someone asked me for this, but e-mail to him bounced.

-Ted

----cut here-------



/*
*Program name:  Launch (Transfer) Demo
*
*Author:  Ted C. Johnson, Tues, March 1, 1988.  I got this guts of this code 
*		  from the June 1987 issue of MacTutor magazine, p24.
*
*Compilation instructions:  use Lightspeed C, v.2.15.  This program does
*						    NOT use any resource files.  This program was
*							developed on a Mac SE HD20 running System/Finder
*							4.1/5.5.
*
*
*Summary: This program is a demonstration of how to use the Launch() trap
*		  to launch one program from inside of another program.  This is
*		  usually implemented as a "Transfer..." menu item under the "File"
*		  menu.  
*
*		  The advantage of doing this is that someone can go from one 
*		  program to another without having to return to the Finder (which
*	      takes a while, because the Finder is just an applications program
*		  itself, and it takes time to start up).  Of course, this is not 
*		  necessary if you are using Switcher or MultiFinder!		
*/


#include <WindowMgr.h>
#include <QuickDraw.h>
#include <MacTypes.h>
#include <EventMgr.h>
#include <MenuMgr.h>
#include <StdFilePkg.h>



SFReply		theReply;
SFTypeList 	myTypes;
Point 		SFDialogOrigin;
OSErr 		ErrorCode;



main()
{
	/*Initialize stuff.*/
	
	InitGraf(&thePort);
	InitFonts();
	InitWindows();
	InitMenus();
	TEInit();
	InitDialogs(0L);
	
	/*Remove all events from the event queue.*/
	
	FlushEvents(everyEvent, 0);
	
	/*
	*Usually there is a "Transfer..." menu item on the "File" menu, but
	*for the sake of brevity, I am skipping all that.  This program just 
	*puts up a Standard File dialog (which only shows applications, not 
	*documents!), and then launches the program that the user selects.  
	*If the user selects cancel, then the program will quit and return 
	*to the Finder.
	*/
		
	myTypes[0] = 'APPL';
	
	SetPt(&SFDialogOrigin, 80, 80);
	
	SFGetFile(SFDialogOrigin, "\p", 0L, 1, myTypes, 0L, &theReply);
	
	if (theReply.good == TRUE) {
	
		ErrorCode = SetVol(0L, theReply.vRefNum);
		
		Launch(0, &theReply.fName);
	}
}