Launching Acrobat Viewer (Cross-platform)
Mac OS 9 Mac OS X Windows

Thanks to advice from others on this list, I now have a cross-platform (Mac OS Classic, Mac OS X, Windows) solution to opening the default Acrobat viewer application such that it can stay open in the background and open successive Acrobat files by the use of the "launch sample.pdf with acrobatViewer" command.

The following is the stack script of my mini app that launches the default Acrobat viewer and then quits leaving the viewer running:

constant \
  cSamplePDF = "sample.pdf", \
  cXexternalsStack = "xExternals.rev", \
  cClassicExternalsStack = "ClassicExternals.rev"

on preOpenStack
  global gAcrobatViewer, gProgPath
  -- find current program folder:
  put the fileName of this stack into gProgPath
  set itemDelimiter to "/"
  delete last item of gProgPath
  put "/" after gProgPath

  if "Win" is in the platform then
    -- find default Win Acrobat viewer:
    put word 1 to -2 of \			 
      queryRegistry("HKEY_CLASSES_ROOT\AcroExch.Document\shell\open\command\") \
      into gAcrobatViewer
    -- find default Mac Acrobat viewer:
    -- activate appropriate Externals:
    put the systemVersion into sysVers
    set itemDelimiter to "."
    if item 1 of sysVers >= 10 then
      start using stack (gProgPath & cXexternalsStack)
      start using stack (gProgPath & cClassicExternalsStack)
    end if
    -- get path of Mac Acrobat viewer:
    set itemDelimiter to gModuleListSep
    put gProgPath & cSamplePDF into samplePDF
    put ext_doctoapp(samplePDF) into gAcrobatViewer
  end if

  -- open default Acrobat viewer & quit:
  if the environment is not "development" then
    launch gAcrobatViewer
  end if
end preOpenStack
This uses the Externals that can be downloaded from the RunRev web site at:

The two stacks named in the "constants" section ("xExternals.rev" and "ClassicExternals.rev") are empty except that they have had the relevant version of the Mac Externals installed into them. Note that you MUST be running Mac OS Classic when installing the Classic Externals and running Mac OS X when installing the X Externals. If you attempt to open the wrong Externals for the current OS, Rev will crash out!

For Windows, the mini app simply interrogates the registry to get the details of the default Acrobat viewer app. For the Mac, the above "starts using ..." the externals stack which is appropriate for the currently running version of Mac OS and then uses the "ext_docToApp()" function to get the name of the default Acrobat viewer. For this to work you need to supply the name of an existing Acrobat file - "sample.pdf".

So, I have the following files in the same folder:

  AcrobatLauncher.exe - Win standalone Acrobat Launcher (1.6Mb)

  AcrobatLauncherClassic - Mac OS Classic standalone Acrobat Launcher (3.9Mb)

  AcrobatLauncherX - Mac OS X standalone Acrobat Launcher (2.4Mb)

  ClassicExternals.rev - Rev stack containing Mac OS Classic Externals (52Kb)

  xExternals.rev - Rev stack containing Mac OS X Externals (52Kb)

  Sample.pdf - tiny Acrobat file, content is irrelevant (72Kb)

My main app uses similar code to the above to determine the path of the default Acrobat viewer app for use with the "launch" command.

Note that using the "ext_appsOpen()" function in the Mac Externals, it's possible to check whether an Acrobat viewer app is already running prior to running AcrobatLauncher. Unfortunately, I still don't know how to do the same thing for Windows as yet.

Thanks to everyone who's contributed to this, I hope the above is of help to anyone else trying to do the same thing (or something similar with "launching" of apps).


Peter Reid
Reid-IT Limited, Loughborough, Leics., UK
Tel: +44 (0)1509 268843 Fax: +44 (0)870 052 7576

Posted 2/21/2002 to the Use Revolution List   (See the complete post/thread)