home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1997 December: Technology Seed / ATS Dec. '97.toast / QuickDraw™ 3D 1.5.3 SDK for Mac / Samples / SampleCode / ScreenSaver / Twist 1.0.sit / Twist 1.0 / Library Source / GoToWebPage.c / GoToWebPage.c
Encoding:
C/C++ Source or Header  |  1996-08-06  |  2.0 KB  |  106 lines  |  [TEXT/CWIE]

  1. /* GoToWebPage.c
  2.  * Launch a browser and go to a given URL
  3.  * Copyright ©1996 Michael D. Crawford.  All Rights Reserved.
  4.  * You may use this code on the condition that you read the following web page:
  5.  * http://www.scruznet.com/~crawford/WordServices/wdsvindex.html
  6.  */
  7.  
  8. #include "FindBrowser.h"
  9. #include "GoToWebPage.h"
  10.  
  11. #define kCannotFindBrowserID    128
  12.  
  13. OSErr GoToWebPage( StringPtr urlStr )
  14. {
  15.     AEAddressDesc        creatorDesc;
  16.     AppleEvent    gurlEvt;
  17.     AppleEvent    replyEvt;
  18.     OSType        creator;
  19.     AEDesc        urlDesc;
  20.     long        len;
  21.     OSErr        err;
  22.     
  23.     err = FindBrowser( &creator );
  24.     
  25.     if ( err ){
  26.         return err;
  27.     }
  28.     
  29.     if ( creator == 'null' ){
  30.         StopAlert( kCannotFindBrowserID, (ModalFilterUPP)NULL );
  31.         return noErr;
  32.     }
  33.     
  34.     err = AECreateDesc( typeApplSignature,
  35.                         (Ptr)&creator,
  36.                         sizeof( creator ),
  37.                         &creatorDesc );
  38.     if ( err )
  39.         return err;
  40.         
  41.     len = urlStr[ 0 ];
  42.     
  43.     err = AECreateDesc( typeChar,
  44.                         &( (urlStr)[ 1 ] ),
  45.                         len,
  46.                         &urlDesc );
  47.     if ( err )
  48.         return err;
  49.  
  50.  
  51.     if ( creator == 'MOS!' ){
  52.         // NCSA Mosaic has its own ideas for AE urls
  53.         err = AECreateAppleEvent( 'mos!',
  54.                                     'ourl',
  55.                                     &creatorDesc,
  56.                                     kAutoGenerateReturnID,
  57.                                     kAnyTransactionID,
  58.                                     &gurlEvt );
  59.     }else{
  60.         err = AECreateAppleEvent( 'GURL',
  61.                                     'GURL',
  62.                                     &creatorDesc,
  63.                                     kAutoGenerateReturnID,
  64.                                     kAnyTransactionID,
  65.                                     &gurlEvt );
  66.     }
  67.     if ( err )
  68.         return err;
  69.     
  70.     err = AEDisposeDesc( &creatorDesc );
  71.     if ( err )
  72.         return err;
  73.  
  74.     err = AEPutParamDesc( &gurlEvt,
  75.                             keyDirectObject,
  76.                             &urlDesc );
  77.                             
  78.     if ( err )
  79.         return err;
  80.     
  81.     err = AEDisposeDesc( &urlDesc );
  82.     if ( err )
  83.         return err;
  84.  
  85.     err = AESend( &gurlEvt,
  86.                     &replyEvt,
  87.                     kAEWaitReply + kAECanInteract + kAECanSwitchLayer,
  88.                     kAENormalPriority,
  89.                     300,
  90.                     (AEIdleUPP)NULL,
  91.                     (AEFilterUPP)NULL );
  92.     
  93.     if ( err ){
  94.         return err;
  95.     }
  96.     
  97.     err = AEDisposeDesc( &gurlEvt );
  98.     if ( err )
  99.         return noErr;
  100.     
  101.     err = AEDisposeDesc( &replyEvt );
  102.     if ( err )
  103.         return noErr;
  104.     
  105.     return noErr;
  106. }