home *** CD-ROM | disk | FTP | other *** search
-
- Stdemo Player 1.5
- Copyright (c) 1992-1994 Mik Kvitchko
-
- -------------------------------
- | Mik Kvitchko |
- | 37 Landsdowne Rd, |
- | East Brunswick, NJ 08816 |
- | USA |
- |Internet: mik@cnj.digex.com |
- |CompuServe: [74127,3671] |
- -------------------------------
-
- This package consists of the following files:
-
- ADDON.TXT - Description of the add-on to StDemo Player
- HIST.TXT - History of changes
- README.TXT - This File
- SCRIPT.TXT - Stdemo Player example script
- STDEMO.DIZ - Stdemo Player short description.
- STDEMO.EXE - Stdemo Player program
- STHOOK.DLL - Stdemo Player DLL
-
- What is this?
- =============
-
- Stdemo Player is the multy-purpose application. First of all, you can
- use it to create demos and tutorials. It allows you to write a script,
- which will start one or several Windows application and perform a series
- of keystrokes or mouse actions aimed to demonstrate these applications.
-
- While your script is being "played", you can disable completely keyboard
- and mouse, so that user will not be able to interfere with the running
- demo and to cause a conflict. At certain points of you script you may
- interrupt it in order to interact with user. These interactions allow:
-
- - to show the "text" box with some explanatory text before script
- will continue ( this is the main idea of how demos and tutorials
- are to be designed);
-
- - to show the "menu" box where user can select one of several
- choices, and therefore control the script's execution;
-
- - to show the "input" box, where user can answer questions and
- enter some text, which later can be used in script.
-
- There are many varieties of these boxes in order to make your demo
- flexible, and they can be forced to be shown in some convenient places
- on the screen. Moreover, user can move them across the screen to be
- able to see different parts of the covered windows.
-
- Stdemo Player allows you even to play WAV files in order to make your
- tutorial better.
-
- Even if you are not interested in preparing demos, you may find Stdemo
- Player useful. For example, you can replace your complete Startup Group
- with the single Stdemo Player script which will launch all your "startup"
- applications, and even perform some initial actions for every of them:
- set up default options, load files, etc.
-
- Another feature allows you to automate your everyday chores (like backup,
- etc. ) by using the sheduling abilities of Stdemo Player script language.
-
- How to play the script?
- ======================
-
- When you run stdemo.exe without parameters, it looks for the file
- "script.txt" in the current working directory, and if it is there -
- "plays" it.
-
- Also you may pass the name of the script as a parameter to stdemo.exe.
- This name may include the full path.
-
-
- How to write a script?
- ======================
-
- Script is a plain ASCII text file. It may include:
-
- - keystrokes;
- - commands;
- - interaction breaks;
- - comments.
-
- Every keystroke, command or interaction break is a unit. Stdemo Player
- reads units from the script one by one and executes them. After one
- unit is executed, Stdemo Player waits for some time (time-out tick,
- which can be set or changed at any point in the script) and then
- executes the next unit. Time-out doesn't affect the interaction breaks
- (which are "text", "menu" and "input" dialog boxes). Once one of this
- boxes is shown - only user may continue or stop script execution,
- selecting "Continue" or "Stop" button on the box.
- ( See below how to program "auto-continue" for interaction breaks.)
-
- Comments are ignored, as you may expect, and cause no time-out delays.
-
- 1. Keystrokes.
- --------------
-
- Any text in the script which is not a command, interaction break or
- comment is a set of keystrokes, i.e. every symbol of the text causes a
- keystroke to be sent into the current window application (see below).
- There are also several special symbols which allow to simulate
- different keyboard keys.
-
- Any keystroke can be preceded by one or more special symbols
- ("@" - Alt, "#" - Shift or/and "%" - Control) as you see in the
- following example:
-
- @A Alt-A
- #A Shift-A
- %A Ctrl-A
- #%A Shift-Ctrl-A
-
- There are also many special keys which are coded by "escaping" them
- with the "]". They are follows:
-
- ]| Down
- ]^ Up
- ]< Left
- ]> Right
- ]~ Tab
- ]! Return
- ]- PgUp
- ]+ PgDn
- ]\ Backspace
- ]Z Esc
- ]I Ins
- ]D Del
- ]H Home
- ]E End
- ]0 F10
- ]1 F1
- ...........
- ]9 F9
- ]] ]
- ]@ @
- ]% %
- ]# #
- ]: :
- ]$ $
-
- This is not a full set of the keyboard keys, as you may note - but it
- covers most of usable ones (I hope).
-
- 2. Commands.
- ------------
-
- All commands start from the colon sign ":". Some of the commands must
- be coded as a separate line in a script, others can be mixed with the
- keystrokes. The rule of a thumb is: if a command has fixed format or
- ends with the special separator - it can be placed anywhere, otherwise
- it has to be coded as a separate line of the script. The general format
- of a command is:
- :<code><parameters>
- <code> is a single letter or some other symbol;
- <parameters> may vary; one parameter can be a letter, text or number;
- parameters follow the code without blank, and in some cases are
- separated one from another by the special separator "|".
-
-
-
- ATTENTION: I strongly recommend to use ":C11" and ":I11" commands at
- the beginning of your script, and remove them only after
- your script will be debuged and tested. Otherwise you are
- risking to lock up your system.
-
-
- The commands are:
-
- :Iab enable/disable Windows input;
- parameter "a" must be coded as one digit:
- 0 - disable input, 1 - enable input;
- parameter "b" is also 1 digit:
- 0 - temporarily, 1 - permanently.
-
- Example:
- :I10 enable input until the next interaction break.
-
- Note:
- When Stdemo starts, it disables Windows input
- (keyboard and mouse buttons) in order to prevent
- user's intervention into the actions being played.
- When one of the interaction breaks occurs, the input
- is partially restored to allow user interaction
- inside the dialog box only. When script continues,
- the state is restored as it was before the break.
- "Temporarily change the state of Windows input" means
- "until the next interaction break occurs". Permanent
- change affects all subsequent script play and can be
- changed with the next ":I" command only.
-
- :Cab show/hide Windows cursor;
- parameter "a" must be coded as one digit:
- 0 - hide cursor, 1 - show cursor;
- parameter "b" is also 1 digit:
- 0 - temporarily, 1 - permanently.
-
- Example:
- :C11 show Windows cursor until further ":C" command.
-
-
- Note:
- When Stdemo starts, it hides Windows cursor.
- When one of the interaction breaks occurs, the cursor
- is restored to allow user interaction inside the
- dialog box only. When script continues, the state is
- restored as it was before the break.
- "Temporarily change the visibility of cursor" means
- "until the next interaction break occurs". Permanent
- change affects all subsequent script play and can be
- changed with the next ":C" command only.
-
- :=x set time-out tick to x milliseconds.
- Default time-out is 1 millisecond.
-
- Example:
- :=1000 set time-out tick to 1 sec.
-
- :T skip 1 time-out tick.
-
- Example:
- abc:T:T:Tefg enter "abc", then wait for three
- current time-out ticks, then enter
- "efg".
-
- :Wx delay script execution for x seconds
-
- :Dtext change current directory to "text".
-
- Example:
- :Dc:\windows\system
-
- :(program_name parm|x
- launch the application;
- program name must include extension (for the
- security reason) and may include the full path;
- parameters to the program can be passed, if
- needed (not required);
- flag x may be coded as one digit 0..2 after the
- separator and affects the size of the
- application window: 0 (default), 1(maximize),
- 2(minimize).
-
- Note:
- By deafult, Stdemo checks if the application
- created active window, and if not - assumes
- that something went wrong. This might create
- problems if the application you are going to start
- doesn't create window at all, or creates a hidden
- window. See :c command below which disables this check.
-
- Examples:
- :(notepad.exe
- :(c:\windows\write.exe demo.wri
- :(notepad.exe c:\stdemo\readme.txt|2
-
- :cX enable/disable check on active window after the :( command;
- parameter "X" must be coded as one digit:
- 0 - disable check, 1 - enable check.
-
- :<caption string|x find and activate/hide/destroy already running
- application;
- flag x may be coded as one digit 0..4 after the
- separator and affects the size of the
- application window: 0 (default), 1(maximize),
- 2(minimize), 3(hide), 4(destroy).
- Note:
- If the last symbol of <caption string> is "*" -
- it is treated as a "wildcard", i.e. any window with
- the caption which matches the "wildcarded" search string
- fits the search condition.
-
- Examples:
- :<Notepad - (Untitled)|1
- :<Notepad*|2
-
- :) kill the last application in stack (if exists).
-
- Note:
- Stdemo Player allows to start several applications.
- It keeps track of the applications being started in
- the internal stack ( max. 50 entries). When you start
- a new application, the following keystrokes will be
- sent into the new application window, as it will
- get focus after the launch. You must issue ":)" -
- kill last application - command, even when you finish
- the application using it's menu commands - so that
- Stdemo Player could handle the stack of current
- applications properly.
- You can switch focus from one application to another
- using :< command or you can do this by simulating mouse
- clicking in the proper window. Just make sure that you
- close applications in the reverse order as you started
- them, and issue correspondent ":)" commands in the same
- reverse order.
-
- :Ltext assign the label "text" to the current point in
- the script.
-
- Note:
- Script will jump to the special label "__STOP__" when
- STOP button pressed on any interaction break box.
- If there is no such label in the script - STOP will cause
- just usual termination.
-
- :Gtext goto label "text".
-
- Note:
- these two commands apparently do not require
- explanation. Just note that so far there is no
- conditional "goto" command (except of :?). You can
- use ":G" command to code the loop, or to skip part of the
- script during debugging. Labels are required when
- you program a "menu" interaction break (see below).
-
- :$ntext set variable n to "text" (n=0..9).
-
- Example:
- :$1Hello
- :$2, how are you?
-
- Note:
- variables can be used among the keystrokes, i.e.,
- using previous example, script "$1 Joe$2" will
- play "Hello Joe, how are you?". Variables are
- extensively used in the "input" interaction breaks
- (see below).
-
-
- :+x set interaction breaks' time-out tick to x seconds.
- Default time-out is 0. (Maximum is 65 seconds).
-
- Example:
- :+10 set interaction breaks' time-out tick to 10 sec.
-
- Note: The :+x command allows to set the special timer which will affect
- execution of interaction breakes (TEXT, MENU and INPUT). Setting the value
- of this timer somewhere in a script means that for all subsequent
- communication breaks (dialog boxes) the "continue" button
- will be "pressed" automatically after x seconds since
- this dialog box was initially shown. :+0 disables this feature.
-
- :Ra disable/enable 3-D effect for interaction breaks.
- parameter "a" must be coded as one digit:
- 0 - disable 3-D, 1 - enable 3-D.
-
- :Xa disable/enable/show/hide the "Stop" button on interaction breaks
- parameter "a" must be coded as one digit:
- 0 - hide "Stop" button, 1 - disable "Stop" button,
- 2 - enable "Stop" button.
-
- :Ya disable/enable/show/hide the "Continue" button on interaction breaks
- parameter "a" must be coded as one digit:
- 0 - hide "Continue" button, 1 - disable "Continue" button,
- 2 - enable "Continue" button.
-
- :Fx set the minimal point sizes for the font;
- parameter "x" must be coded as a number and represents the
- minimal point sizes for the font which is used when all
- text doesn't fit into a text box. If it
- is impossible to fit all text using the font bigger than
- minimal - the defaul font will be used with the scrollbar
- enabled. See also :d command to set up the default font size.
- (Default is :F8).
-
- :dx command sets the default size for the font (in point sizes);
- parameter "x" must be coded as a number and represents the
- default point sizes for the font which is used for the text
- show in a text dialog box. See also the :F command to set
- up the minimal size of the font. (Default is :d8).
-
- :bx command allows to change the background color for text,
- menu and input fields;
- parameter "x" must be coded as a number and represents the
- index of the color in system palette;
- (default is blue - :b18).
-
- :fx command allows to change the foreground color for text,
- menu and input fields;
- parameter "x" must be coded as a number and represents the
- index of the color in system palette;
- (default is black - :f0).
-
- :p<filename>|f play the WAV file
- flag f may be coded as one digit 0..3 after the
- separator and affects the mode in which sound file is played:
- 0 (default) - synchronous mode;
- 1 - asyncronous mode (StDemo continues to run the following
- script commands not waiting for sound to finish;
- 2 - loop mode -- the sound will continue to play repeatedly until
- another :p command is executed;
- 3 - stop the currently playing sound (the <filename> is ignored
- for this mode, i.e. you may code the command as ":p|3").
-
- :Alabel|m|h|w|d|t command allows to create "cron"-like scheduling
- of script execution. It triggers "goto label" operation if
- parameters match current date and time. Parameter are treated
- as: m - minutes (0 - 59), h - hours (0 - 23), w - day of
- week (1-7), d - day of a month (1-31), t - month (1-12).
- All parameters also can be coded as * ( any).
- If parameters do not match current day/time - the next command
- in a script will be executed.
-
- Example:
- :AReminder|30|9|*|9|8 goto label "Reminder" if today is August 9, 9:30am
- :ADump|00|22|*|*|* goto label "Dump" on any day 10:00pm
-
- :ASave|00|*|*|*|* goto label "Save" every 10 minutes
- :ASave|10|*|*|*|*
- :ASave|20|*|*|*|*
- :ASave|30|*|*|*|*
- :ASave|40|*|*|*|*
- :ASave|50|*|*|*|*
-
- Note:
- 1. Once :A command is executed - StDemo forgets about it. There
- is no internal loop in StDemo in order to check if current
- date/time matches some :A commands. It means that you have to
- provide your own loop inside a script if you are going to
- check this conditions repeatedly.
-
- 2. Be careful when after the successful execution of :A command
- you switch control back to the loop: if the same :A command
- will be executed again and conditions will match again - it
- might execute your code again several times (when you expect
- it to be run only once).
- Example:
- // main loop
- :Start
- :=1000
- :ASave|00|*|*|*|*
- :GStart
- //
- // subroutine to execute "Save"
- :LSave (1)
- .................
- :GStart (2)
-
- If you mean this script to execute "Save" once every hour -
- your results will depend on how long will it take to execute
- "save" subroutine. If it takes less than minute - next time
- :A will be executed it might branch to :LSave again. You may
- solve this problem by applying proper timing (use :=, :T, :U
- or :W commands) but the best solution is to use :~ command with
- the same date/time pattern which initiated your scheduled
- subroutine (look below).
-
- :Um|h|w|d|t command simplifies scheduling in some simple cases, it accepts
- the same parameters as :A command (except of label) and simply
- waits till current date/time will match given parameters. Be
- careful, do not program infinite (or almost) loops.
-
- :~m|h|w|d|t command has the same parameters as :U command and allows you
- to wait till current date/time will NOT match given parameters.
- The best use of this command is at the end of the scheduled
- subroutine (see :A above).
-
- Example:
-
- :C11
- :I11
- :=1000
- // Main loop
- :Start
- :=1000
- :ABackup|0|4|*|*|*
- :ACloseBackup|0|7|*|*|*
- :ASendFax|30|16|*|*|*
- :ACloseFax|50|16|*|*|*
- // In case we want to terminate Stdemo Player at this time
- :ATerminate|00|18|*|*|*
- :GStart
- // Backup subroutine
- :LBackup
- :DC:\backup
- :(backup.exe
- //..........
- // send proper keystrokes to initiate backup
- //..........
- :~0|4|*|*|*
- :GStart
- // Send fax subroutine
- :LSendFax
- :DC:\winword
- :(winword.exe report.doc
- //..........
- // send proper keystrokes to initiate fax
- //..........
- :~30|16|*|*|*
- :GStart
- :LCloseBackup
- :<Backup
- //..........
- // send proper keystrokes to close backup window
- //..........
- :~0|7|*|*|*
- :GStart
- :LCloseFax
- :<Microsoft Word - REPORT.DOC
- //..........
- // send proper keystrokes to close winword window
- //..........
- :~50|16|*|*|*
- :GStart
- // Termination
- :LTerminate
- :Z
-
- :Z terminate script execution
-
- :Va|b|c|d conditional branch depending on current screen resolution:
- a - label for the 640x480 resolution
- b - label for the 800x600 resolution
- c - label for the 1024x768 resolution
- d - label for the 1280x1024 resolution
-
- Example:
- :VP640|P800|P1024|P1280
- :Z
- :LP640
- :#S
- Resolution is 640x480
- #
- :Z
- :LP800
- :#S
- Resolution is 800x600
- #
- :Z
- :LP1024
- :#S
- Resolution is 1024x768
- #
- :Z
- :LP1280
- :#S
- Resolution is 1280x1024
- #
- :Z
-
- :?caption string|label branch to the label if window with the given
- caption string exists;
- Note:
- If the last symbol of <caption string> is "*" -
- it is treated as a "wildcard", i.e. any window with
- the caption which matches the "wildcarded" search string
- fits the search condition.
-
- Examples:
- :?Notepad - (Untitled)|FOUND_NOTEPAD
- :?Notepad*|found
-
-
- The following commands are to be used when you want some mouse actions
- to be played from your script. It is not always possible to get a
- reliable results with the mouse actions, assuming that your script can
- be played with different display drivers in different Windows modes and
- display resolutions. In order to cope with this, you must use "virtual"
- coordinates, i.e. before using any command which has coordinates as a
- parameter, you have to set "virtual screen/window size" and then all
- following coordinates must be coded according to this size. When your
- script will be played, Stdemo Player will determine the real current
- screen/window size, and then adjust all your virtual coordinates
- according to virtual/real ratio. You have to understand, that it is not
- a perfect solution - for example, dialog boxes sizes are not
- proportionally changed for different display resolutions, they depend
- on the size of the system font rather than on display mode. But if you
- code your mouse actions inside the dialog box, based on the dialog box
- virtual size - it will work.
- You may sometimes need to use absolute coordinates instead of relative,
- define this in the :O command.
-
- :Sx|y set virtual screen/window size.
-
- Example:
- :S1024|768
- :S100|50
-
- :Oabc set coordinates origin.
- parameter "a" must be coded as one letter:
- S - screen, A - application main window,
- F - current focus window;
- parameter "b" is also 1 letter:
- C - client area, W - window area.
- parameter "c" is also 1 letter:
- V - virtual coordinates (default),
- A - absolute coordinates.
-
- Examples:
- :OSWV
- :OACA
- :OFW
-
- :Mx|y|n move mouse cursor to (x,y) in n steps.
-
- Examples:
- :S200|200
- :OAC
- :C11
- :M100|100|1 set cursor in the center of the client area
- of the main application window.
- :M0|200|100 move cursor in 100 steps to the bottom-left
- corner of the client area.
-
- Note: Make sure that your coordinates agree with the
- current modes set in ":S" and ":O" commands.
-
- :Bab mouse button action.
- parameter "a" must be coded as one letter:
- L - left button, R - right button, M - middle;
- parameter "b" must be coded as 1 digit:
- 1 - press, 0 - release, 2 - double-click.
-
- Note: This command affects only client-area of a
- window. You cannot simulate mouse-clicks in
- non-client area using this command.
-
- :Kab set keyboard state for some special keys.
-
- parameter "a" must be coded as one letter:
- S - Shift key, C - Control key, A - Alt key, I - Ins key;
- parameter "b" must be coded as 1 digit:
- 1 - down, 0 - up.
-
- Example:
- :KS1:BL1:BL0:KS0 click the left mouse button when the
- Shift key is down.
-
-
- 3. Interaction breaks.
- ----------------------
-
- These are various dialog boxes which can be shown at any point of you
- script, allowing therefore some interaction with user. There are three
- classes of these boxes: "text", "menu" and "input". Each class contains
- from 3 to 5 similar boxes, which vary by their size and by the number
- of fields in them.
- All boxes are coded in the script differently, but the common pattern
- is:
-
- <header line>
- <one or more body lines>
- <end-of-box delimiter line>
-
- 3.1 TEXT interaction break.
- +++++++++++++++++++++++++++
-
- Every TEXT box has a single text field which fills the dominant area of
- the box.
-
- The header line is:
- :#sxy
- parameter "s" defines the size and must be a letter:
- S - small, M - medium, L - large, W - wide, N - narrow;
- parameter x defines the position along the x-axis:
- L - left adjusted, C - centered, R - right adjusted;
- parameter y defines the position along the y-axis:
- U - up adjusted, C - centered, D - down adjusted.
-
- The body of this break consists from the text only, which will be shown
- in the single text field of the box. Text may be coded as one or more
- lines in the script, but it'll be placed continuously in the box,
- applying word wrap. There are two special commands which can be entered
- into the body of the TEXT box:
- .N causes the following text start from a new line in a box;
- .S causes to skip one line and continue to fill a box with the
- following text.
-
- The delimiter line is:
- #
-
- Example:
-
- :#NCC
- This is the narrow box, centered on the screen.
- .S
- This text starts after the empty line.
- .N
- This text starts from the beginning of the new line.
- #
-
- Notes: 1. The amount of text you can place into the text box
- depends on the current display mode ( VGA, SVGA,
- etc. ) and fonts supported by your current display
- driver. This creates a problem: the text you placed
- into the box might not fit when you run your demo on
- a different system. In order to make sure, that it
- will not happen, Stdemo Player checks if the whole
- text fits into the box, and if not - it is trying to
- reduce the font size, until the whole text fits. If
- the system doesn't have a small enough font - the
- scroll bar will be added to the text field, so that
- user can read the whole text by scrolling it.
-
-
- 3.2 MENU interaction break.
- +++++++++++++++++++++++++++
-
- Every MENU box has a header text field on a top and from 2 to 9 menu
- item fields ( radio buttons).
-
- The header line is:
- :*sxy
- parameter "s" defines the size and must be a letter:
- S - small, M - medium, L - large;
- parameter x defines the position along the x-axis:
- L - left adjusted, C - centered, R - right adjusted;
- parameter y defines the position along the y-axis:
- U - up adjusted, C - centered, D - down adjusted.
-
- The body of this break consists from the text which will fill the
- header text field of the menu box, and two or more menu lines.
- Text may be coded as one or more lines anywhere in the body; it'll be
- placed continuously in the header field, using word wrap if
- appropriate. Text line should not start from a digit.
- Every menu item line has the following format:
-
- nlabel|item text
-
- "n" is a menu item field number (1..9);
- "label" - is a label in the script where control will be passed if this
- item will be selected from the menu box.
- "item text" is a text to fill the menu item field.
-
- The delimiter line is:
- *
-
- Notes: 1. The "small" menu box has 2 menu fields, the
- "medium" - 5 fields, and the large - 9 fields.
-
- 2. If there is no text for the header - the header
- field will not be shown in the box.
-
- 3. If there is no lines for some menu items - the
- correspondent item field will not be shown in the
- box.
- Example:
-
- :*MCU
- Select one of the three:
- 1l1|This is the first item
- 3l2|This is the second item
- 5l3|This is the third item
- *
- :Ll1
- :#SCC
- You've selected the first.
- #
- :Gcont
- :Ll2
- :#SCC
- You've selected the second.
- #
- :Gcont
- :Ll3
- :#SCC
- You've selected the third.
- #
- :Lcont
-
-
- 3.3 INPUT interaction break.
- ++++++++++++++++++++++++++++
-
- Every INPUT box has a header text field on a top of the box and from 1
- to 9 edit fields. The small box has only one edit field, the medium has
- 5, and the large has 9. Every edit field in the medium and large INPUT
- boxes has the correspondent description field on a left of the every
- edit field.
-
- The header line is:
- :%sxy
- parameter "s" defines the size and must be a letter:
- S - small, M - medium, L - large;
- parameter x defines the position along the x-axis:
- L - left adjusted, C - centered, R - right adjusted;
- parameter y defines the position along the y-axis:
- U - up adjusted, C - centered, D - down adjusted.
-
- The body of this break consists from the text which will fill the
- header text field of the menu box, and one or more input lines.
- Text may be coded as one or more lines anywhere in the body; it'll be
- placed continuously in the header field, using word wrap if
- appropriate. Text line should not start from a digit.
- Every input line has the following format:
-
- nDescription_Text
-
- "n" is a input field number (1..9); the correspondent input field will
- be filled with the current value of the variable $n. If the variable is
- empty - the field will also be empty.
-
- "Description_Text" is a text to fill the description field for the "n"-
- th input field.
-
- The delimiter line is:
- %
-
- Notes: 1. The "small" input box has 1 edit field, the
- "medium" - 5 fields, and the large - 9 fields.
-
- 2. If there is no text for the header - the header
- field will not be shown in the box.
-
- 3. If there is no line for some edit field - the
- correspondent edit and description fields will not
- be shown in the box.
-
- 4. After user entered some text in the input field -
- this text will be assigned to the correspondent
- variable ($1..$9).
- Example:
-
- :(notepad.exe|1
- :$2John
- :%MCU
- Please correct your name.
- 2Your first name:
- 4Your last name:
- %
- Hello, $2 $4!
- :#SRD
- Is my greeting correct?
- #
- :)
-
-
- 4. Comments.
- ------------
-
- Any line in the script outside the interaction breaks, which starts
- from "//" is being treated as a comment.
-
-
- Known Problems.
- ===============
-
- StDemo might misbehave if it is running together with
- ALL3D package which forces all dialog boxes to have
- 3-D look provided by CTL3D.DLL
-
- Script.txt runs up to 2 instances of Paintbrush, which
- eat a lot of memory from the system heap. Make sure you have
- sufficient amount of virtual memory available.
-
-
- Future.
- =======
-
- I'm sure you noticed that the program can be further extended
- ( for example, auto recorder would not do any harm ). Please,
- share your ideas with me, if you are interested.
-
- Acknowledgments.
- ================
-
- 1. Thanks to CompuServe and all participants of the WinSdk
- forum - you were my teachers, when I started programming
- Windows.
-
- 2. Thanks to Brent Rector, whose book "Developing Windows 3
- Applications" (and once he personally) helped me along
- my way of learning Windows.
-
- 3. Thanks to my employers and friends Ken Winston and Michael
- Markov; their enthusiasm kept me busy enough to grow.
-
- Registration.
- ============
-
- Stdemo Player is shareware.
-
- The registration of a single licence will entitle you to use ONE
- copy of Stdemo Player. Read about the Pro version in "addon.txt".
- Site licence allows to redistribute StDemo run-time royalty free.
-
- -----------------------------------------------------------------
- | V E R S I O N
- -----------------------------------------------------------------
- Licence | Standard (w/src) | Professional (w/src)
- -----------------------------------------------------------------
- Single | $30 $60
- Site | $300 ($600) $500 ($900)
- -----------------------------------------------------------------
-
-
- To register by mail, please send check or money order to:
-
- Mik Kvitchko
- 37 Landsdowne Rd,
- East Brunswick, NJ 08816
- USA
-
- To register on CompuServe, GO SWREG and find StDemo
- (registration ID is 3276)
-
- The price to register on CompuServe is higher to cover CompuServe's
- charges: $35 for a single license and the rest accordingly.
- To register Pro or site licence on CompuServe, simply register several
- copies according to the following table:
- -----------------------------------------------------------------
- | V E R S I O N
- -----------------------------------------------------------------
- Licence | Standard (w/src) | Professional (w/src)
- -----------------------------------------------------------------
- Single | 1 copy 2 copies
- Site | 10 copies(20 copies) 16 copies (30 copies)
- -----------------------------------------------------------------
-
- Then let me know by CompuServe mail what kind of registration is that.
-
- When you register, I will replace irrelevant "MIK" icon on all dialog
- boxes to another one (you may send your icon to me), remove "UNREGISTERED"
- stamp from these dialog boxes and will send the updated copy to you.
-
- Comments? Questions? Suggestions?
- I will be glad if you contact me at:
-
- Internet: mik@cnj.digex.com
- CompuServe: [74127,3671]
-
- You can make copies of this program and give them to others as long as
- all files are included and unaltered.
-
-
- Disclaimer.
- ===========
- I've taken great care to ensure the program performs as stated. Still,
- I cannot guarantee this will be the case on every system. As such, you
- agree NOT to hold me responsible for ANY damages directly or indirectly
- related to the use of Stdemo Player. The author of this software is not
- responsible for any damage due to use of this program. This software
- is provided without warrantee of any kind.
-
- A Personal Note...
- ==================
-
- I write C better than English. Please excuse my mistakes and funny
- constructions in the above text, if you noted some (I'm sure, you
- did!). Especially articles... They are incomprehensible!
-
- Thanks!
-