


                           ////////    ////////    //
                         //           //      //   //
                         //    ////   //      //   //
                         //      //   //      //
                          ////////     ////////    //

                             v1.5 -- January 1995

                         (c) 1993-95 by Carsten Wimmer



  Introduction:
  ~~~~~~~~~~~~
   Two years ago I began writing GO! to test some API calls.  Now, in 1995,
   there have been added many new features.

   Many thanks to V. Phaniraj (phaniraj@badlands.nodak.edu) and
   Rupa Schomaker (rupa@netcom.com) for their comments and bug reports.

   Also thanks to Kai Uwe Rommel for his informations about the undocumented
   DosQProcStatus() call. They can be found on ftp.informatik.tu-muenchen.de
   or ftp.cdrom.com.


  What GO! can do:
  ~~~~~~~~~~~~~~~
   GO! is able to ...

      ... show a list of running processes
      ... show a list of threads
      ... show a list of used semaphores
      ... show a list of shared memory handles
      ... show a list of loaded modules
      ... show the module dependency tree

   There are many other utilities that can show these lists as well.  But GO!
   has some nice additional features when dealing with these lists.  See the
   detailed help (command -lh) for more informations.

   You might be interested in some other features, such as ...

      ... killing processes
      ... killing all instances of a program
      ... checking whether a process is running or not
      ... switching to other processes

   If this still isn't enough for you, you may ...

      ... query an application's type (PM, OS/2, VDM, 32 Bit etc.)
      ... show your machine's uptime since last boot
      ... show informations about your physical drives


  Usage:
  ~~~~~
   GO! is easy to use, you can get a detailed help with the -lh command.
   If you want only a short command overview, use -h.

   This is what -lh shows:

   -pl   Process List   This shows all processes that are currently running.
                        The columns in the table are: Process ID, ID of
                        Parent Process, Screen group and Session Type, Number
                        of Threads, Priority, CPU Time (h:min:sec.msec), Name.

   -lpl  Process List   Same as -pl, but with complete path-names.
         with Paths

   -tl   Thread List    The Thread List is a list of all running threads in
                        the system. You may also supply the name of a process
                        (with or without .EXE extension) or a Process-ID if
                        you want the thread list for a specific process only.
                        The columns are: Name of Owner, Thread ID, Thread,
                        Slot ID, Priority, State, Block ID, System and User
                        Time (h:min:sec.msec).

   -sl   Semaphore List This command shows all semaphores currently used
                        in the system. It's columns are: Number of References,
                        Number of Requests by its Owner, Flag, Thread owning
                        this Semaphore, Index, Semaphore Name.

   -sm   Shared Memory  A list of Shared Memory Handles can be queried this
                        way. The columns are: Handle, Selector, Size,
                        Number of References, Name.

   -ml   Module List    This shows a list of used modules. The columns are:
                        Module Handle, Type of Module, Number of Segments,
                        Number of Imports, Name.

   -mt   Module         This is a good overview of all processes and modules
         Dependency     and the modules they use themselves. The module
         Tree           handles along with the names are shown. You may also
                        supply a process or module name (.EXE, .DLL, .SYS
                        etc.) or a Process-ID to get the tree for one specific
                        module only.

   -k    Kill a         This closes a process, but only its first instance.
         Process        It can be be specified either by its .EXE name or
                        by its PID.

   -ka   Kill all       This closes all instances of a program which name
         Instances      you supplied on the command line.

   -cp   Check for      The -cp command checks whether a specific process
         Process        is running in the system or not. The following
                        Errorlevels are returned: 0 - Process is not running.
                                                  1 - Process is running.
                        This feature is useful for batch files to check if
                        a program should be started or not.

   -j    Jump to a      This is used to switch to another process. On the
         Process        command line you may specify an .EXE name or a PID.

   -at   Application    This shows the type of an application, ie. if it is
         Type           an OS/2 or DOS program, or if it is 32 Bit etc.
                        Supply an .EXE, .DLL, .SYS etc. name as argument.

   -ut   Machine        This shows how long your machine is running since
         Uptime         the last reboot. The format is:
                             days hours minutes seconds milli-seconds

   -df   Drive Info     This shows information about your drives. The
                        columns are: Drive, Label, Location (Local/Remote),
                        Type (Harddrive/CD-Rom/etc), FileSystem (HPFS/FAT/etc),
                        Size in MB, Free Space in MB, Used Space in %.


  Return Codes:
  ~~~~~~~~~~~~
   GO! exits with a return code of 0 if everything is fine. But
   sometimes GO! isn't able to determine the PID of a given exe-name
   or to kill/switch-to a process. In these cases GO! exits with a
   return code of 1 (Can't kill or switch to given Process ID) or
   with a return code of 2 (Can't find Process ID for given exe-name).

   The -cp command (Check for Process) returns 0 if the process is not
   running and 1 if it is.

   You can check for the return codes in your batch-file (using the IF and
   the ERRORLEVEL statement) or in the prompt of 4OS2, if you have
   installed 4OS2 and if you have put the errorlevel-macro in your shell
   prompt. See your Commandline-Shell Manual or the 4OS2 documentation
   for further details. Of course GO! shows an error-message on the screen
   if anything went wrong.


  Legal Disclaimer:
  ~~~~~~~~~~~~~~~~
   Permission is granted to any individual or institution to use, copy, or
   redistribute this executable as long as it is not modified and that it
   is not sold for profit.

   GO! and its associated utilities are provided AS IS and come with no
   warranty of any kind, either expressed or implied. In no event will
   the copyright holder be liable for any damages resulting from the use
   of this software.

   This license agreement can also be shown via the -la command.


  Registration:
  ~~~~~~~~~~~~
   GO! is neither Freeware nor Shareware.  It's Cardware.  If you use GO!
   on a regular basis and like it, you have to send a picture postcard
   from your location to the author.  His snail mail address is shown below.


  Final Note:
  ~~~~~~~~~~
   If you want to contact me, write to cawim@train.oche.de !

   Comments, Bug-Reports and Feature-Requests are welcome.  Flames are not.

   Send any nice picture postcards to:

        Carsten Wimmer
        Freunder Landstr. 53a
        52078 Aachen
        Germany

                                                                   See Ya!
                                                                   Carsten

