home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 5 / ctrom5b.zip / ctrom5b / DOS / UTILITY / DIVERSEN / PTM229 / README.1ST < prev    next >
Text File  |  1995-04-10  |  28KB  |  690 lines

  1.  
  2. DOS PHANTOM V2.9o from P2 Enterprises
  3.  
  4.     **********************************************************************
  5.     **  See the CHANGES IN V2.9 section of this file for new features.  **
  6.     **********************************************************************
  7.  
  8.  
  9.     DOS Phantom is a keystroke record-and-playback utility. Recordings
  10.     can be of any length and can be edited after recording.  Recordings
  11.     can be played back at high speed or with delays.  Playback can be
  12.     scheduled for a time in the future or invoked with a hot key. A
  13.     powerful script language is provided which incorporates file I/O,
  14.     looping and branching, waiting for screen text, branching on program
  15.     exit status, file I/O, pop-up windows and menus, and more.
  16.  
  17.                _______
  18.               ____|__     |               (tm)
  19.            --|       |    |-------------------
  20.              |   ____|__  |  Association of
  21.              |  |       |_|  Shareware
  22.              |__|   o   |    Professionals
  23.            -----|   |   |---------------------
  24.             |___|___|    MEMBER
  25.  
  26. INSTALLATION:
  27.  
  28.     Create a directory and unzip the PTM229.ZIP file into it.
  29.  
  30.     Example:
  31.           C:\> MKDIR PHANTOM
  32.           C:\> CD PHANTOM
  33.           C:\PHANTOM> PKUNZIP ..\PTM229
  34.  
  35.  
  36.     If you have the PTM.EXE self-extracting archive file, do this
  37.     instead:
  38.           C:\> MKDIR PHANTOM
  39.           C:\> CD PHANTOM
  40.           C:\PHANTOM> ..\PTM
  41.  
  42. DEMONSTRATION:
  43.  
  44.     Make sure you are in the directory containing the PHANTOM2.EXE and
  45.     DEMO files.  Then, type PHANTOM2 DEMO to run the demonstration.
  46.  
  47.     Now read the section in the PHANTOM.DOC file entitled "Before You
  48.     Start" for more installation information.
  49.  
  50.  
  51. REGISTRATION:
  52.  
  53.     When you register, P2 Enterprises will send you a free DOS Phantom
  54.     Quick Reference booklet.  This booklet contains just about every-
  55.     thing you need to use DOS Phantom without cracking the manual!
  56.     
  57.     You can register using Visa or MasterCard if you wish.
  58.  
  59.     See the file ORDER.FRM in this kit.
  60.  
  61.  
  62. DOS Phantom is:
  63.     - A task automation tool
  64.     - A tool for application integration (the process of making a
  65.     group of different applications work together automatically)
  66.     - A tool for creating self-executing demos (with looping and
  67.     timeout features)
  68.     - A software testing tool (including screen and print capture)
  69.     - A substitute for .BAT files
  70.     - A keystroke macro utility
  71.  
  72. DOS Phantom recordings can be edited to include:
  73.     - Pop-up text windows
  74.     - Pop-up menus
  75.     - Pauses for user input
  76.     - Branching based on:
  77.     - menu selection
  78.     - program exit status
  79.     - appearance of a text string on the screen
  80.     - String variables
  81.     - Commands to find, read, and write text files
  82.     - Looping
  83.     - Play music
  84.  
  85. DOS Phantom recordings can be scheduled for playback
  86.     - daily
  87.     - weekly
  88.     - once only
  89.  
  90. DOS Phantom recordings can also be played back using hot keys.
  91.  
  92. The included Scraper utility allows you to take output displayed by
  93. one program and play it into another program as if it were being typed
  94. at the keyboard.  And the use of Scraper can be recorded like any other
  95. keyboard activity.
  96.  
  97. DOS Phantom provides facilities similar to the scripting languages of
  98. popular communications programs such as Procomm and CrossTalk, but
  99. applied instead to *your* computer rather than the one you are connected
  100. to over the phone line.  You can even use DOS Phantom to control a
  101. Procomm session instead of using Procomm's scripting facility.
  102.  
  103. A demonstration recording and complete Users Guide are included.
  104. DOS Phantom is shareware.  The registration fee is $40.00.  All features
  105. are present and active in the shareware version.
  106.  
  107.  
  108. CHANGES FROM PREVIOUS VERSIONS
  109.  
  110.    Version 2.1 of DOS Phantom fixes a bug introduced in V2.0 which
  111.    prevented ALT and CTRL keys from playing back correctly into some
  112.    application programs, including CIM (CompuServe Information Manager).
  113.  
  114.    Version 2.2 is a redistribution of V2.1 which corrects the fact that
  115.    obsolete versions of the TXT2PTM and PTM2TXT programs were included
  116.    in PTM221.ZIP.
  117.  
  118.    Version 2.3 adds support for the PHANTOMDIR environment variable, and
  119.    support for scheduled playback and hot-key initiated playback with
  120.    the programs SCHEDULE and HOTFILE.
  121.  
  122.    Version 2.4 fixes two bugs reported just after version 2.3 was released.
  123.    Version 2.4 of PTM2TXT fixed a bug which caused the timings of certain
  124.    keystrokes (those with scan codes under 10h) to be set to zero.  Version
  125.    2.4 of PHANTOM2 fixes a problem where keystrokes were missed during
  126.    auto-repeat with typematic rates set above 15.  Minor changes were made
  127.    to the documentation.
  128.  
  129.    V2.4 also introduces the MAKEPTM program for producing DOS Phantom
  130.    recordings from plain ASCII text files.
  131.  
  132.    V2.5 fixes a bug in MAKEPTM which prevented processing files without
  133.    at least a 1 second line delay and incorporates changes to allow chaining
  134.    to another recording during playback.
  135.  
  136.    V2.6 adds support for the F11 and F12 keys and their SHFT, CTRL, and ALT
  137.    variants and fixes a bug which caused the schedule to be corrupted when
  138.    the default RECORDNG.PTM file was used for recording.
  139.  
  140.    V2.8 replaces the keyboard NumLock, ScrollLock, CapsLock, and Insert
  141.    keys to their pre-playback state when recording terminates unless
  142.    the $RetainKybdFlags directive is contained in the playback file.
  143.    (The $RetainKybdFlags directive has no arguments and may be placed anywhere
  144.    in the playback file.)  V2.8 also fixes a bug which caused scheduled
  145.    playbacks with days or dates specified other than the first in the list
  146.    to be ignored.
  147.  
  148.    V2.8A of PHANTOM2.EXE correctly reports errors when invalid hot key
  149.    combinations are specified.
  150.  
  151.    V2.8B of PHANTOM2.EXE correctly processes unused extended keyboard codes
  152.    (actually used by some products) which previously caused erroneous
  153.    directive processing to occur.
  154.  
  155.    V2.8C fixes a bug in which the use of ALT and CTRL hot keys with HOTFILE
  156.    caused keyboard to appear dead when playback completed.
  157.     
  158.    V2.8A of TXT2PTM.EXE correctly processes delays specified as MM:SS.CCC.
  159.    V2.8 incorrectly processed time delays of over approximately 5 minutes.
  160.  
  161.    V2.8A PTM2TXT.EXE correctly processes unused extended key codes and
  162.    their translation as <?>.
  163.  
  164.  
  165. CHANGES IN V2.9
  166.  
  167.    V2.9 adds support for the $DisableCtrlAltDel, $EnableCtrlAltDel, and
  168.    $Reboot directives which allow you to reboot the computer from a
  169.    Phantom playback and prevent Ctrl-Alt-Del from rebooting the computer
  170.    during critical sections of a playback.
  171.  
  172.    The $DisableKybd directive disables all keyboard input.  $Enablekybd
  173.    re-enables keyboard input.  An optional parameter of $DisableKybd is
  174.    a single key which, when depressed, will re-enable the keyboard.  Valid
  175.    keys for the $DisableKybd parameter are letters and numbers only. This
  176.    is to allow $DisableKybd to be used in situations it is desired to
  177.    protect against inadvertant key depressions, but where it is necessary
  178.    to re-enable the keyboard manually.
  179.  
  180.    The new $Sleep directive behaves just like the $Pause directive, except
  181.    that the timer is not reset after each keystroke as it is with $Pause.
  182.    $Sleep has one parameter, the number of seconds to sleep.  The maximum
  183.    number of seconds for all directives which accept seconds is 3600 (1 hr).
  184.  
  185.    The commands $MatchAt, $MatchTo, and $MatchFrom have been added.
  186.  
  187.    The syntax of the new Match commands is:
  188.     $MatchAt r,c n text
  189.     $MatchTo r,c n text
  190.     $MatchFrom r,c n text
  191.  
  192.     where r,c is the row and column number (1,1 is the upper left corner)
  193.     n is the timeout is seconds
  194.     text is text to match
  195.  
  196.     $MatchAt only looks for the text at the row and column specified.
  197.     The text must begin at that screen position for the match to succeed.
  198.     $MatchAt accepts -1 as the timeout value.  This results in a single
  199.     test of the screen location (effectively a timeout of zero).  A
  200.     timeout of -1 may not be used with the other $Match directives.
  201.  
  202.     $MatchTo searches for the text anywhere before (up and left of) the
  203.     row and column specified.
  204.  
  205.     $MatchFrom searches for the text anywhere after (down and to the
  206.     right of) the row and column specified.
  207.  
  208.    V2.9 adds the F11 and F12 keys and their SHIFT, ALT, and CTRL variations
  209.    as possible hot keys to the HOTFILE program. 
  210.  
  211.    V2.9 fixes an unreported bug in which control characters were
  212.    erroneously played back when references to uninitalized command line
  213.    parameters ($1-$9) were made.
  214.  
  215.    V2.9 adds the command line switch /T, which allows you to specify a
  216.    "trigger" value for recording file writes.  Normally, DOS Phantom
  217.    writes to the recording file after every 32 keystrokes.  Using /T,
  218.    you can specify any number of characters between 1 and 32 after
  219.    which writes are to occur.  For example, to cause the recording file
  220.    to be updated after every character, you would include /T=1 on the
  221.    DOS Phantom command line.  Small trigger values may result in an
  222.    undesirably large amount of disk activity.
  223.  
  224.    V2.9 increases the maximum number of scheduled playbacks from 16 to 32.
  225.    In the case when two or more playbacks are scheduled for the same time
  226.    (e.g., 08/12/93-16:00 and Thu-16:00), the one appearing first in the
  227.    SCHEDULE LIST display is executed, and any other playbacks scheduled for
  228.    that time are ignored.
  229.  
  230.    V2.9 adds the command line switch /N which places DOS Phantom in autonomous
  231.    mode.  When in autonomous mode, DOS Phantom ignores commands issued using
  232.    the PHANTOM2.EXE program and hot keys defined using HOTFILE.  Scheduled
  233.    playbacks defined with SCHEDULE are honored if recording or playback is
  234.    not in progress at the scheduled time.  The following command line
  235.    DOS Phantom in memory, disables the attention hot key, the mode display,
  236.    and sounds, begins recording into file file KEYSTROK.LOG, and places
  237.    DOS Phantom in autonomous mode.  Once this is done, DOS Phantom may not
  238.    be removed from memory using PHANTOM2 and recording cannot be stopped.
  239.  
  240.       C:\> PHANTOM2 /R/N/S/M/K=NONE/I KEYSTROK.LOG
  241.  
  242.    The P2FLUSH.EXE program, when executed, causes DOS Phantom to flush the
  243.    record buffer to disk.  P2FLUSH is effective even when DOS Phantom is
  244.    operating in autonomous mode.
  245.  
  246.    V2.9 adds support for 9 string variables S1-S9.  To include the contents
  247.    of a string variable in playback, the string variable is prefixed with a
  248.    dollar sign, similar to command line parameters.  A number of directives
  249.    are available for dealing with string variables:
  250.  
  251.     $Get Sn r,c len         reads len chars from screen row r column c
  252.                 into string variable Sn.
  253.     
  254.     $Read <file> Sn         reads a line from file <file> into string
  255.                 variable Sn.
  256.  
  257.     $Write <file> <text>    Appends <text> to <file>.  <Text> may contain
  258.                 string and command line variables, for
  259.                 example: "parm1=$1, string variable 3=$S3".
  260.                 (The quotation marks are not required syntax.)
  261.  
  262.     $Close                  Closes the file currently open for read,
  263.                 if any.  Subsequent reads of the file will
  264.                 begin at the start of the file.
  265.  
  266.     $Assign Sn <text>       Assigns <text> to string variable Sn.  <Text>
  267.                 may contains string and command line variables.
  268.     
  269.     $IfEqual <label> Sn <text> Branches to <label> if the contents of Sn
  270.                 are equal to <text>.  <Text> may contain string
  271.                 and command line parameters.  Comparison is
  272.                 case-sensitive.
  273.  
  274.     $IfEmpty <label> Sn     Branches to <label> if the string variable Sn
  275.                 is empty.
  276.  
  277.     $Clear Sn               Empties the string variable Sn.
  278.  
  279.    The maximum length of a string variable is 79 characters.
  280.  
  281.    The $IfClosed directive can be used to detect end of file since when
  282.    $Read encounters the end of file, the file being read is closed.  Only
  283.    one file may be open for read at a time.  When the second filename is
  284.    encountered, the first is automatically closed.  A subsequent $Read of
  285.    the first file will close the second file and return the first line of
  286.    the first file. 
  287.  
  288.    V2.9 adds support for looping using the $On directive.  The format of
  289.    the $On directive is: $On <count> <label>.  When the $On directive is
  290.    encountered <count> times, control is transferred to <label>. Before
  291.    <count> times, the directive is ignored.  Here is an example of a loop
  292.    which copies 200 lines from FILEA.TXT to FILEB.TXT unless the end of
  293.    FILEA.TXT is encountered first:
  294.  
  295.     $Loop:
  296.         $Read FILEA.TXT S1
  297.         $IfClosed EndLoop
  298.         $Write FILEB.TXT $S1
  299.         $On 200 EndLoop
  300.         $Goto Loop
  301.     $EndLoop:
  302.  
  303.    A maximum of 256 $On directives may be used in a single Phantom script.
  304.    The maximum count value is 65535.
  305.  
  306.    V2.9 adds support for the $FirstFile and $NextFile directives which
  307.    allow you to perform directory searches from within Phantom scripts.
  308.    
  309.     $FirstFile Sn <filename>        locates the first file matching
  310.                     <filename> which may include
  311.                     the * and ? wildcard characters and
  312.                     disk and directory specifications.
  313.                     The filename is placed in Sn.
  314.  
  315.     $NextFile Sn                    locates the next file matching the
  316.                     <filename> in the last $FirstFile
  317.                     executed.  The filename is placed in
  318.                     Sn.
  319.  
  320.    When no more files match <filename>, the string FILE NOT FOUND is placed
  321.    in Sn.  Here is an example of a script which places the names of all the
  322.    .PTM files in the PHANTOM directory into a file calles PTMLIST.TXT:
  323.  
  324.     $FirstFile S1 C:\PHANTOM\*.PTM
  325.     $IfEqual EndLoop S1 FILE NOT FOUND
  326.     $Loop:
  327.         $Write PTMLIST.TXT $S1
  328.         $NextFile S1
  329.         $IfEqual EndLoop S1 FILE NOT FOUND
  330.         $Goto Loop
  331.     $EndLoop:
  332.      
  333.  
  334.    V2.9 introduces a new type of directive: the $F directives.  $F
  335.    directives are similar to functions in programming languages in that
  336.    when a $F directive is placed in a string, the result of the $F directive
  337.    replaces the $F directive in the string.  $F directives take their
  338.    arguments in parenthesis immediately following the directive name.
  339.  
  340.    Three $F directives have been implemented in V2.9: $FSubStr, $FBefore,
  341.    and $FAfter. The $FSubStr directive extracts a substring from a string
  342.    variable.  Th format of $FSubStr is
  343.     
  344.     $FSubStr(Sn,<start>,<length>)
  345.  
  346.     where Sn is the string variable from which to extracts the substring
  347.           <start> is the character at which to start extracting (1-based)
  348.           <length> is the number of characters to extract
  349.  
  350.    Here is an example of $FSubStr being used to extract the characters
  351.    EFGHTUVW from the string ABCDEFGHIJKLMNOPQRSTUVWXYZ and placing them in
  352.    S2:
  353.  
  354.     $Assign S1 ABCDEFGHIJKLMNOPQRSTUVWXYZ
  355.     $Assign S2 $FSubStr(S1,5,4)$FSubStr(S1,20,4)
  356.  
  357.    $FBefore selects the portion of a string which appears before a specified
  358.    character, while $FAfter selects the portion of a string which occurs
  359.    after a specified character.  For example,
  360.  
  361.     $Assign S1 RECORDNG.PTM
  362.     $Assign S2 $FBefore(S1,.)
  363.     $Assign S3 $FAfter(S1,.)
  364.  
  365.    results in S2 containing RECORDNG (the substring before the period), and
  366.    S3 containg EXE (the substring after the period).
  367.  
  368.    $F directives can be used wherever the $Sn syntax is allowed, except in
  369.    *-prefixed output lines.  To output a substring as if it was being typed
  370.    at the keyboard, you must $assign it to a string variable first, and then
  371.    output the variable, like this:
  372.  
  373.     $Assign S6 $FSubStr(S3,1,8)
  374.     * $S6
  375.  
  376.    Here is a sample script which places the filenames of the files in the
  377.    current directory minus their filetypes (the three characters after the
  378.    period) in a file called TEST.TXT.  It then types the file.
  379.  
  380.     * DEL TEST.TXT
  381.     $FirstFile S1 *.*
  382.     $IfEqual EndLoop S1 FILE NOT FOUND
  383.     $Loop:
  384.         $Write TEST.TXT $FBefore(S1,.)
  385.         $NextFile S1
  386.         $IfEqual EndLoop S1 FILE NOT FOUND
  387.         $Goto Loop
  388.     $EndLoop:
  389.     * Type TEST.TXT
  390.  
  391.  
  392.   V2.9 adds the $Music directive.  $Music allows you to play melodies from
  393.   a Phantom script.  $Music accepts a series of note/duration arguments,
  394.   each of which specifies a musical note and the length of time for which
  395.   is to be played. Four octaves supported with notes from C1 to B5.  The
  396.   following notes are supported: A A# Bb C C# Dd D D# Eb F F# Gg G G# Ab R.
  397.   R is a rest (no sound).  Each note is suffixed with the octave in which
  398.   it is to be played, a forward slash, and the number of ticks for which
  399.   the note is to be sounded.
  400.   
  401.   Here is how the first few notes of Mary Had A Little Lamb would be
  402.   specified in a Phantom script (played in octave 3):
  403.  
  404.     $Music R/80
  405.     $Music E3/60 D3/20 C3/40 D3/40 E3/15 R/25 E3/15 R/25 E3/60 R/20 
  406.     $Music D3/15 R/25 D3/15 R/25 D3/40 R/40 E3/40 G3/15 R/25 G3/40
  407.     $Music R/80 
  408.  
  409.  
  410.   The $BeginMenu directive has a new parameter in V2.9.  The new parameter
  411.   is not required, and the behavior of $BeginMenu defaults to what it was
  412.   in previous versions.  The new parameter is either 0 or 1.  The default
  413.   is 0.  If 1 is supplied, the auto-incrementing feature of DOS Phantom
  414.   menus is disabled for that menu.  For example, the following $BeginMenu
  415.   directive would begin the definition of a non-auto-incrementing menu at
  416.   row 5, column 20, white on blue, saving existing Phantom pop-ups.
  417.  
  418.     $BeginMenu 5 20 1 S 1
  419.            | |  | | |
  420.            | |  | | +- disable auto incrementing
  421.            | |  | +--- save existing pop-ups
  422.            | |  +----- attribute code for white on blue
  423.            | +-------- column 20
  424.            +---------- row 5
  425.  
  426.  
  427.  
  428.   $ResumeKey and $IfKey
  429.  
  430.   The new $ResumeKey and $IfKey directives can be used in a variety of ways
  431.   to enhance the functionality of your Phantom scripts.  $ResumeKey accepts
  432.   a list of keys which will resume playback of the script from a $Pause or
  433.   $Sleep state.  $ResumeKey with no arguments removes any previously assigned
  434.   resume keys.  $ResumeKey Any makes any keystroke end a $Pause or $Sleep
  435.   state.  The following example allows F12 or Alt-F12 to terminate a $Pause
  436.   and then removes the resume key assignments:
  437.  
  438.     $ResumeKey <F12> <Alt-F12>
  439.     $Pause
  440.     $ResumeKey
  441.  
  442.   Resume key assignments, with the exception of Any, remain in effect until
  443.   changes with another $ResumeKey directive.  The $ResumeKey Any assignment
  444.   is automatically removed as soon as it is used to terminate a $Pause or
  445.   $Sleep.  Note that the keys listed following $ResumeKey are separated
  446.   with a single space.
  447.  
  448.   The $IfKey directive allows you to test the last keystroke entered by the
  449.   user. This is especially useful after a $Pause which might have been
  450.   terminated by a number of resume key assignments and after $EndDisplay
  451.   to find out which key the user pressed to terminate the display. This
  452.   in effect allows you to create a number of "hot keys" which are available
  453.   as long as your script is in execution.
  454.  
  455.   The following example demonstrates the use of the $ResumeKey and $IfKey
  456.   directives in a number of ways.
  457.  
  458.   !
  459.   ! HOTMENU - An example using $ResumeKey and $IfKey
  460.   !
  461.  
  462.   $Loop:
  463.   $BeginDisplay 4 15 1 30 R
  464.   $Title HotMenu
  465.  
  466.       Select one of the options below
  467.       by typing the letter preceeding    
  468.       the option name.
  469.   
  470.       A  Directory of .EXE files
  471.       B  Directory of .COM files
  472.       C  Directory of .BAT files
  473.       X  Exit
  474.   
  475.   $EndDisplay
  476.   
  477.   !
  478.   ! See if they pressed one of the special keys
  479.   !
  480.   $IfKey DIREXE A
  481.   $IfKey DIREXE a
  482.   
  483.   $IfKey DIRCOM B
  484.   $IfKey DIRCOM b
  485.  
  486.   $IfKey DIRBAT C
  487.   $IfKey DIRBAT c
  488.   
  489.   $IfKey EXIT X
  490.   $IfKey EXIT x
  491.   
  492.   !
  493.   ! They didn't press a special key.  re-display the "menu"
  494.   !
  495.   $Goto Loop
  496.   
  497.   !
  498.   ! Handle the "menu" options.  After executing the command, wait 10 seconds
  499.   ! or for any keystroke before re-displaying the "menu".
  500.   !
  501.   $DIREXE:
  502.   * CLS
  503.   * DIR *.EXE
  504.   $ResumeKey Any
  505.   $Pause 10
  506.   $Goto Loop
  507.   
  508.   $DIRCOM:
  509.   * CLS
  510.   * DIR *.COM
  511.   $ResumeKey Any
  512.   $Pause 10
  513.   $Goto Loop
  514.   
  515.   $DIRBAT:
  516.   * CLS
  517.   * DIR *.BAT
  518.   $ResumeKey Any
  519.   $Pause 10
  520.   $Goto Loop
  521.   
  522.   !
  523.   ! Take them to DOS.  Wait for F12 to re-display the "menu", or Alt-F12
  524.   ! to exit the playback.
  525.   !
  526.   $EXIT:
  527.   * cls
  528.   * Rem  **** Use F12 to return to the menu. ****
  529.   $ResumeKey <F12> <Alt-F12>
  530.   $Pause
  531.   $IfKey END <Alt-F12>
  532.   $Goto Loop
  533.  
  534.   $END:
  535.   $Music C4/5 R/5 C4/5
  536.   !
  537.   ! End of HOTMENU
  538.   !
  539.  
  540.  
  541. THE SCRAPER UTILITY
  542.  
  543.   V2.9 includes the SCRAPER utility which allows you to copy text displayed
  544.   by a program into Phantom's string variables and play the stored text back
  545.   later as if it were keyboard input.  Scraper is activated with the hot key
  546.   specified using DOS Phantom's /B command line switch.  The default Scraper
  547.   activation hot key is ALT-S.
  548.  
  549.   Scraper is named as it is for the slang term "screen scraping" commonly
  550.   used to describe Scraper's function.
  551.  
  552.   Install Scraper by typing SCRAPER/I at the DOS command line.  DOS Phantom
  553.   must be installed before Scraper can be installed.  Activate Scraper using
  554.   the hot key (default ALT-S).  A pop-up help window is displayed which
  555.   tells you to move the cursor using the arrow keys to the upper left of
  556.   the text you wish to select and press Enter.  As soon as you press an
  557.   arrow key, the help window disappears.
  558.  
  559.   When you press Enter, a second pop-up help window appears, telling you to
  560.   move the cursor to the lower right of the text you wish to select and
  561.   then to press the number key where you want to begin storing the selected
  562.   text.  The text will be stored in DOS Phantom string variables beginning
  563.   with that number.  If only one line of text was selected, only the one string
  564.   variable will be used. The contents of the string variables, if any, are
  565.   overwritten.
  566.  
  567.   To play back the contents of a string variable, invoke Scraper using the
  568.   hot key and press the number key of the string variable whose contents you
  569.   wish to play.
  570.  
  571.   To disable the pop-up help windows, install Scraper with the /H switch
  572.   like this: SCRAPER/H/I.  You may un-install scraper using the /U switch.
  573.   When you un-install DOS Phantom, Scraper will be automatically uninstalled.
  574.  
  575.   If you record your use of Scraper with DOS Phantom, it will be played back
  576.   correctly, allowing you to automate the movement of data from one program
  577.   into another (or even back into the same program).
  578.  
  579.   Scraper uses about 6K bytes of memory with help enabled, and about 3K bytes
  580.   with help disabled.
  581.  
  582. V2.9a of PTM2TXT fixes bugs which sometimes acused PTM2TXT to terminate
  583. without producing an output file or produce garbled output.
  584.  
  585. V2.9a of P2FLUSH fixes a bug which caused it not to recognize installed
  586. instances of registered versions of PHANTOM2.
  587.  
  588. V2.9a of PHANTOM2 fixes a problem where recordings initiated with the
  589. PHANTOM2 /R command when PHANTOM2 was already installed as a TSR terminated
  590. with an erroneous disk full message after 32 keystrokes.  Also, playback
  591. can now more reliably be paused with the attention hot key.
  592.  
  593. V2.9b of PHANTOM2 fixes a problem where if a recording was made following
  594. a playback in a single PHANTOM2 session, PTM2TXT would report that a later
  595. version of PTM2TXT was needed to translate the recording.
  596.  
  597. V2.9c of PHANTOM2 fixes a problem wherein certain of the new v2.9 directives
  598. could, under certain circumstances, cause PHANTOM2 to lose its place in a
  599. playback file.
  600.  
  601. V2.9d of PHANTOM2 fixes a problem with $FirstFile which caused PHANTOM2 to
  602. lose its place in the playback file and corrects a malfunction in $SetPace
  603. introduced in v2.9 which caused hangs when pace times of less than 83 ms
  604. were specified.
  605.  
  606. V2.9b of PTM2TXT correctly documents the $Get directive syntax in the header
  607. comment. PHANTOM.DOC has also been updated to reflect the correct syntax.
  608.  
  609. V2.9e of PHANTOM2 fixes a problem with $IfEqual which caused PHANTOM2 to
  610. lose its place in the playback file if the branch was not taken.
  611.  
  612. V2.9c of PTM2TXT fixes a bug which caused the row and column numbers of
  613. $MatchAt and $Get directives to be incorrectly translated.
  614.  
  615. V2.9a of TXT2PTM correctly detects references to non-existent labels in
  616. $Goto and $If directives.
  617.  
  618. V2.9f of PHANTOM2 fixes a bug introduced in v2.0 where successive invocations
  619. of a Phantom script could, under certain circumstances, cause a hang when a
  620. menu was displayed.
  621.  
  622. V2.9g of PHANTOM2 corrects a problem where all $SetPace times were incorrectly
  623. increased by 55 ms.
  624.  
  625. V2.9h of PHANTOM2 corrects a problem wherein the state of the NumLock,
  626. ScrollLock, CapsLock, and Insert keys were set to off between keystrokes
  627. during playback, although the state of the keyboard during record was
  628. accurately reflected at the instant a key was played back.
  629.  
  630. V2.9i of PHANTOM2 adds support for the /0 command line switch (not to be
  631. confused with /O) which allows redefinition of the character used in
  632. pop-up text windows and menus. This is to facilitate the use of DOS
  633. Phantom in countries where character codes above 127 are used to
  634. represent special language characters.
  635.  
  636. The use of this command line switch is detailed below:
  637.  
  638.     /0        change all border characters to spaces
  639.     /0=12345678    change border characters to 12345678 where
  640.             1 = upper left corner
  641.             2 = upper right corner
  642.             3 = lower left corner
  643.             4 = lower right corner
  644.             5 = horizontal line
  645.             6 = vertical line
  646.             7 = left junction (tee)
  647.             8 = right junction (tee)
  648.  
  649.             All eight border characters must be specified if
  650.             the = is present after /0.
  651.  
  652. V2.9j of PHANTOM2.EXE fixes a problem where the Alt-, Ctl-, and Shft-based
  653. attention keys (including the default Alt-P) were ignored during playback.
  654. V2.9j also adds support for the PHANTOMBORDER environment variable. If
  655. defined, PHANTOMBORDER performs the same function as the /0 directive
  656. described above. The following example, which might be included in your
  657. AUTOEXEC.BAT file, sets the border characters to non-graphic characters:
  658.  
  659.     SET PHANTOMBORDER="++++-|++"
  660.  
  661. Note the use of the quotation marks to allow the use of the | character.
  662.  
  663. V2.9k fixes a race condition which sometimes caused jumps to seemingly
  664. random places in a playback when a sequence of directives with no
  665. intervening keystrokes which required a disk read was processed when a
  666. read request was already outstanding. V2.9 also fixes a problem wherein
  667. the final keystrokes were sometimes not played back if they were preceeded
  668. by a $Goto directive.
  669.  
  670. V2.9m (together with TXT2PTM 2.9b and PTM2TXT 2.9d) corrects a problem
  671. wherein a $Goto caused $SetPace directives in effect at the time of the
  672. branch to be reset to zero. V2.9m also changes the behavior of $SetPace
  673. when used with keystroke timings. In v2.9m, keystroke timing is determined
  674. by the larger of the $SetPace time and the explicit keystroke delay. For
  675. example, if a $SetPace 500 directive is issued, the keystroke "00:00.100
  676. <cr>" will be delayed 500 ms, while the keystroke "00:03.000 <cr>" will
  677. be delayed 3 seconds. In previous versions, when a $SetPace was in effect,
  678. all explicit keystroke timing was ignored. V2.9m also corrects a problem
  679. where keystroke timing was sometimes inaccurate during playback after a
  680. branch to a line containing a directive was performed.
  681.  
  682. V2.9n corrects a problem in which $IfEmpty directives could, under certain
  683. circumstances, fail to branch when the target string variable was in fact
  684. empty. One occasion when this occurred was in the case where a $IfEmpty
  685. directive preceeded by a $Write directive.
  686.  
  687. V2.9o corrects a problem where $IfTimeout branches following a $ExitWait
  688. directive were always taken, even if the $ExitWait did not time out.
  689.  
  690.