noList v2.0a
Copyright 1993 Jack Tan

   noList removes programs from the window list and Alt-Esc round-robin
   Type "noList /?" for help
   By using noList, the user agrees to the requirements stated below (in
      the Shareware and Disclaimer sections)




Purpose
-------
noList is a 32-bit OS/2 2.x application which removes programs from both 
the OS/2 window list and the OS/2 Alt-Esc round-robin.  It is designed to 
be run from the command line, either windowed or full-screen.  Version 
2.0 of noList supports the following program types:  

   - Presentation Manager applications
   - OS/2 full-screen sessions
   - OS/2 windowed sessions
   - DOS full-screen sessions
   - DOS windowed sessions
   - WIN-OS/2 full-screen sessions
   - WIN-OS/2 seamless applications
   - Folders in the Workplace Shell

noList cannot not distinguish among varying views of the same folder (e.g.,
Icon View and Details View) by the information returned by the operating
system.

A "visible" process is one that is on the window list, and a "jumpable"
process is in the Alt-Esc round-robin.  By analogy, a process not on the
window list is said to be "invisible," and one not in the Alt-Esc round-
robin is said to be "nonjumpable."



Syntax
------
noList has three basic modes for switches:  show the help page, list the
processes, and change the processes.  Switches may be prefixed with either
a forward slash ("/") or a hyphen ("-"), and can be inserted in any order.  
At least one space must appear between any switches (e.g., "/A:J /A:V" is 
correct, but "/A:J/A:V" is not).  

Syntax:  noList
         noList /?

To show the help page, either run noList without any arguments, or run it
with the parameter /?.  Example:

[C:\]noList

   noList utility, version 2.0
   Copyright 1993 Jack Tan
   Syntax:  noList [switches] [<id1> [<id2> ...]]

   noList removes and restores programs in the OS/2 window list and the
   Alt-Esc round-robin.  OS/2 text (VIO), Presentation Manager, DOS, and
   WIN-OS/2 programs are supported.  Each program is specified by a unique
   identifier (ID).  Each ID can be either the first letters of the process
   name or the system process ID.  Process IDs are assumed to be decimal,
   unless prefixed by '0x' to denote a hexadecimal values.  Either '-' or
   '/' can be used as the switch prefix; supported switches are:

         /A         Use both /A:J and /A:V switches
            /A:J    Add processes to the Alt-Esc round-robin (jumpable)
            /A:V    Add processes to the window list (visible)
         /L         List process IDs
         /M         Apply to each entry if there are multiple matches
         /R         Use both /R:J and /R:V switches (default action)
            /R:J    Remove processes from the Alt-Esc round-robin (nonjumpable)
            /R:V    Remove processes from the window list (invisible)
         /?         Show this program help

[C:\]_

--

Programs can be specified by name or process ID.  Valid program names
and IDs can be listed with the /L switch.  The match is not case-
sensitive, and noList only needs enough characters to uniquely identify
the process.  Strings can be embedded in double quotes, allowing spaces
to be used in identifiers.

Processes can also be sent to noList via their process IDs.  Any integer
is considered to be a process ID.  Integers prefixed with "0x" are
considered hexadecimal.  Note that octal support has been removed from
this release:  integers prefixed with "0" are also considered decimal
values.  This feature was not used often, and conflicted with programs
which pad their process IDs with zeros (such as the OS/2 PSTAT).  Note
that the output from noList /L (see below) should be used in favor of
output from other programs, due to the method used in determining the
proper process.

Multiple specifiers may be placed on the command line, with mixing of 
names, decimal, and hexadecimal strings allowed.  

Syntax:  noList.exe /L
         noList.exe /L <id1> [<id2> ...]

Using the /L switch without any further arguments will list all the 
available processes in the system.  The information returned by /L 
includes the process ID, in base 10 and delimited by square brackets; the
visibility of the program in the window list ("Vis") or invisibility 
("---"), listed after the process ID; the jumpability of the program
("Jmp") or nonjumpability ("---"), listed after the visibility; and the
process name, as recorded by the system.  If processes are specified with
the /L switch, only the listed processes are examined.  Examples:

[C:\]noList /L
            [4]  ---  ---  Workplace Shell
            [4]  Vis  Jmp  Desktop
            [5]  Vis  Jmp  Icon Editor
            [8]  ---  ---  Process Monitor
           [20]  Vis  Jmp  EPM-E:\Jack\C\noList documentation
           [23]  Vis  Jmp  OS/2 Window
           [24]  Vis  Jmp  OS/2 System Editor
           [25]  Vis  Jmp  noList.exe

[C:\]noList 4 Icon 0x18 /L
            [4]  ---  ---  Workplace Shell
            [4]  Vis  Jmp  Desktop
            [5]  Vis  Jmp  Icon Editor
           [24]  Vis  Jmp  OS/2 System Editor

[C:\]_

--

Syntax:  noList /A <id1> [<id2> ...]
         noList [/A:J] [/A:V] [/R:J] [/R:V] <id1> [<id2> ...]
         noList [/R] <id1> [<id2> ...]

noList v2.0 has a fine degree of control which allows the user to
separately modify the visibility and the jumpability of the specified
processes.  Users of the previous release of noList recall that these
controls were locked together; they have now been split to allow the user
more freedom.

   - To add a program to the window list, use the /A:V switch.
   - To add a program to the Alt-Esc round-robin, use the /A:J switch.
   - To add a program to both the window list and Alt-Esc round-robin,
     use /A.

   - To remove a program from the window list, use the /R:V switch.
   - To remove a program from the Alt-Esc round-robin, use the /R:J
     switch.
   - To remove a program from both the window list and Alt-Esc
     round-robin, use /R.  This switch is the default action when no
     other switches are specified, and identifiers are specified on the
     command line.

Any non-conflicting combination of the above switches can be used.
Examples:

[C:\]noList /r 0x18 "OS/2 Window" 8
       Change successful:  OS/2 System Editor (pid 24)
       Change successful:  OS/2 Window (pid 23)
        No change needed:  Process Monitor (pid 8)

[C:\]noList /L 0x18 "OS/2 Window" 8
           [24]  ---  ---  OS/2 System Editor
           [23]  ---  ---  OS/2 Window
            [8]  ---  ---  Process Monitor

[C:\]noList /A:V 0x18 "OS/2 Window"
       Change successful:  OS/2 System Editor (pid 24)

[C:\]noList /L 0x18 "OS/2 Window" 8
           [24]  Vis  ---  OS/2 System Editor
           [23]  Vis  ---  OS/2 Window
            [8]  ---  ---  Process Monitor

[C:\]noList /A:J "OS/2 Window" 8
       Change successful:  OS/2 Window (pid 23)
       Change successful:  Process Monitor (pid 8)

[C:\]noList /L 0x18 "OS/2 Window" 8
           [24]  Vis  ---  OS/2 System Editor
           [23]  Vis  Jmp  OS/2 Window
            [8]  ---  Jmp  Process Monitor

[C:\]noList /A 0x18 "OS/2 Window" 8
       Change successful:  OS/2 System Editor (pid 24)
        No change needed:  OS/2 Window (pid 23)
       Change successful:  Process Monitor (pid 8)

[C:\]noList /L 0x18 "OS/2 Window" 8
           [24]  Vis  Jmp  OS/2 System Editor
           [23]  Vis  Jmp  OS/2 Window
            [8]  Vis  Jmp  Process Monitor

[C:\]_

--

Syntax:   noList /M [other switches] <id1> [<id2> ...]

By default, noList requires a nonambiguous identifier, and will not 
affect identifiers which match more than one process.  For example, if 
there is a window called "OS/2 Window" and another program called "OS/2
System Editor," then attempting to apply noList to "OS/2" will fail:

[C:\]noList OS/2 /L
           [23]  Vis  Jmp  OS/2 Window
           [24]  Vis  Jmp  OS/2 System Editor

[C:\]noList OS/2
Ambiguous ID (no change):  OS/2 Window (pid 23) and OS/2 System Editor (pid 24)

[C:\]_

The user can use a more specific term, such as "OS/2 Win" or "OS/2 Sys" 
to select the program desired.  To affect all programs which have the 
same identifier, use the /M switch to match multiple names.  Example:

[C:\]noList OS/2 /L
           [23]  Vis  Jmp  OS/2 Window
           [24]  Vis  Jmp  OS/2 System Editor

[C:\]noList OS/2 /M
       Change successful:  OS/2 Window (pid 23)
       Change successful:  OS/2 System Editor (pid 24)

[C:\]noList OS/2 /L
           [23]  ---  ---  OS/2 Window
           [24]  ---  ---  OS/2 System Editor

[C:\]_




Return Codes
------------
noList v2.0 supports the following return codes:

   0   Successful run, each requested change or listing (via the
          /L switch) was satisfied.
1-98   The return code corresponds to the number of unsuccessful
          changes.  Each ID which failed to change adds 1 to the
          return code.  Possible causes for failure include not
          finding the specified process, finding more than one
          match for the ID (when the /M switch is not used), or
          failing to change the status (failure indicated by the
          API call).
  99   99 or more failures
 100   Help has been requested (either no arguments or /? argument)
 101   No process IDs specified, but a valid switch other than /L
          or /? was specified.  Error message:
          "noList:  no process name nor ID specified"
 102   Switches were specified, but none were valid.  Error message:
          "noList:  switches explicitly given, none recognized"
 103   Switches were specified to both add to and remove from the
          OS/2 window list.  This can be accomplished with one switch
          from each set:  { /A, A:V } and { /R, /R:V }.  Error message:
          "noList:  switch conflict -- request to both add & remove
          processes from the window list"
 104   Switches were specified to both add to and remove from the
          Alt-Esc round-robin.  This can be accomplished with one of
          "/A /R:J," "/A:J /R:J," or "/A:J /R."  Error message:
          "noList:  switch conflict -- request to both add & remove
          processes from the Alt-Esc round-robin"
 105   No entries in the switchlist were found when the list was
          queried.  Error message:
          "noList:  cannot find entries in the window list"
 106   Insufficient memory in the operating system to satisfy
          allocation request.  Error message:
          "noList:  insufficient memory to continue"
 107   Invalid parameter passed to memory allocation system.  This
          error should never occur, but is included for completeness.
          Error message:  "noList:  unable to allocate memory"
 108   A system call made by noList was interrupted.  Error message:
          "noList:  an error interrupt has occurred; execution cannot"
          "continue"
 109   noList was unable to deallocate dynamically-allocated memory.
          Error message:  "noList:  unable to deallocate memory"
 110   An unknown error has occurred.  This message should never occur.
          Error message:  "noList:  an error of unknown type n has occurred,"
          where "n" is an integer.

The vast majority of the error codes returned by noList should be under 105.
Error codes 107 (invalid parameter in memory allocation system) and 110
(unknown error) should never occur.




Shareware
---------
Starting with version 2.0, noList is released as shareware.  You may use
noList v2.0 for a trial period of 15 days.  If, after this period, you
feel that noList is not worth registering, you must stop using it.  The
registration cost for an individual user is US$15.  For information on
business use and site licensing, please contact the author for further
details.




Disclaimer
----------
By using noList, the user assumes all responsibility for any consequences
or damages resulting from such use, and frees the author from any
obligations.  Furthermore, the user agrees to not modify, disassemble, or
reverse-engineer the software in any fashion.

Any comments, suggestions, and bug reports are welcome by the author. 
His contact address is:

         Jack Tan
         P.O. Box 3894
         Oak Brook, IL 60522-3984
         United States of America
         Internet:  jahk@uiuc.edu



Revision History
----------------
Version 1.0 -- 3 October 1993
   Requires EMX.DLL, EMXLIBC.DLL
   First release.  Thanks to Don Meyer for the idea (1 October 1993).
    - Affects PM programs
    - Use process IDs (multiple).  Prefixes of '0x' are hexadecimal,
      '0' are octal, and other values are decimal.
    - /? for help

Version 2.0 -- 12 November 1993
   Shareware release, US$15 to register for individuals.
   No longer requires EMX.DLL and EMXLIBC.DLL
   Nearly complete rewrite, only keeping some of the old help file.
   A *huge* thank you to Melissa Woo for beta testing both the software
      and the documentation (yup, even the docs too).  noList would never
      have made it this far without your support and help.
   noList now affects PM, OS/2 text (both windowed and full-screen), DOS
      text (both windowed and full-screen), WIN-OS/2 (both seamless
      applications and full-screen sessions), and WPS folders (though not
      different views of the same folder).
    - Separated window list and Alt-Esc controls while maintaining
      backwards compatibility.
    - Switches:  /A (add to window list and Alt-Esc round-robin), /A:J
      (add jumpability), /A:V (add visibility), /L (list processes), /M
      (allow multiple matches), /R (remove from window list and Alt-Esc
      round-robin), /R:J (remove jumpability), /R:V (remove visibility),
      /? (help).
    - Octal process IDs removed (not used, conflicts with other programs
      which pad decimal numbers with zeros).
    - Allows names instead of just process IDs
    - Improved return code handling
Version 2.0a -- 15 November 1993
   Corrected minor bug:  when no change is needed, "change successful"
      was displayed.

