|
Phantom
for Windows 1.7.30
New Features and Bugfixes
How
to upgrade
Read
the 1.7.27 PhantomScript Reference Guide online
1.7.30 Release
Sort performance improved
Performance of Sort has been improved by over 10x.
1.7.27 Release
File compression support
The CompressFile and UncompressFile statements have been added.
XML Support
The following statements have been added to support processing of XML data: XMLMatch, XMLSelect, XMLSelectText, and XMLTransform. The first three listed use XPath expressions for selection.
JSON Support
These statements facilitate the processing of JSON-formatted data: JSONAddArray, JSONAddBoolean, JSONAddNull, JSONAddNumber, JSONAddObject, JSONAddString, JSONArrayAsList, JSONGetKeys, JSONGetType, JSONGetValue, and JSONDelete.
Improved networking functions
Added InternetHead and InternetDelete statements to complete HTTP protocol support. Added optional Headers parameter to InternetGet and InternetPost. Added optional OutputFile parameter to InternetGet. Response headers are returned as Result of InternetPost, InternetHead, InternetDelete, and InternetGet when OutputFile is present.
Bugfixes
1.7.21 Fixed memory leak in WriteConnection.
1.7.23 Fixed problem creating exe's when the length of the script exceeded 16 KBytes.
1.7.27 Fixed network-related bugs: Improved network receive performance by more than 10x. The CLOSE event is now returned for aborted connections in WaitForConnectionEvent. Fixed a problem with CloseConnection where sometimes not all data that had been sent would actually be transmitted to the receiver.
1.7.20 Release
HMAC
The HMAC statement computes a keyed-hash message authentication code using the SHA-1 hash algorithm as defined in RFC 2104.
1.7.19 Release
WaitForWindowTestIntervalMs
The WaitForWindowTestIntervalMs intrinsic variable allows adjustment of the interval between successive tests for the presence or absence of the window specified in a WaitForWindow, WaitForWindowClose, or SetWindow statement.
1.7.18 Release
WaitForProcessExit fixed
Fixed problem where WaitForProcessExit never returned due to a change in Windows behavior apparently introduced by a Microsoft security update.
1.7.17 Release
Bugfixes
Fixed end-of-file recognition bug.
Fixed problem that caused input files to be modified in certain circumstances when reading.
1.7.16 Release
Bugfix
Fixed bug in RegExSplit which caused text after the last capture expression to be lost. (This is a very rare use of RegexSplit.)
1.7.15 Release
URLEncode and URLDecode
URLEncode and URLDecode statements have been added for processing of strings passed to and from webpage forms.
Regular Expressions
Perl-compatible regular expression statements have been added enabling advanced processing of strings. The statements are RegExGrep, RegExMatch, RegExReplace, and RegExSplit.
Bugfixes
Under certain circumstances, a crash or data corruption could occur when returning from a procedure in which a local composite variable was used.
Nested procedure calls sometimes received argument values from higher in the call tree.
TCP connections were not closed properly at script termination.
1.7.9 Release
Remove error reports from ProcessExeFile
ProcessExeFile no longer writes error messages to the log file for non-accessible processes.
Improved playback synchronization with Internet Explorer
Required installation steps:
1. Install new version of Phantom for Windows.
2. Run the IEHelper PhantomScript and click on Remove IEHelper.
3. Reboot your computer.
4. Delete the file IEHelper.DLL from the Phantom directory (usually c:\Program Files\P1\Phantom).
5. Run the IEHelper PhantomScript and click on Yes to install IEHelper.
Bugfixes
Fix problem where selecting No from popup error dialog sometimes caused a crash.
Fix problem playing back backslash with German keyboard layout.
Fix problem where a MessageBox statement after a successful WaitForWindow statement caused the task bar in Windows NT 4 SP6 to become unresponsive until the message box was dismissed. (This problem was not reproducable in Windows 2000 or XP.)
Fix daylight savings time calculation bug
1.7.2 Release
WaitForMatch MatchPercent parameter added
The WaitForMatch MatchPercent parameter allows you to specify that the screen image need not precisely match the saved image it is being compared with. 100% indicates an exact match is required, while 0% indicates that no match at all is required.
1.7
Release
Improved recording with Internet Explorer
The IEHelper Internet Explorer
helper is now included in the Phantom for Windows kit. Installing this
helper allows the Phantom recorder to synchronize with page loading in
the Internet explorer. Execute the IEHelper.txt script to install, uninstall,
and configure IEHelper.
Recorder enhancements
Changes to the Phantom recorder now make the recorder more accurate, addressing
a number of problems related to timing and ordering of recorded events
and recording of combination keystrokes.
Command Line Enhancements
The Phantom command line now
allows you to ensure that the Phantom instance started to execute a script
terminates when the script is finished, even if the ExitPhantom statement
is not included in the script. The new WAIT command line keyword allows
you to direct Phantom to delay execution of the specified script until
Phantom instances executing incompatible scripts have terminated.
Scheduler bugfix
A problem scheduling scripts to run once-only with on a date in the past
that caused Phantom to hang has been fixed.
WaitForMatch Enhancements
The interval used by the WaitForMatch
between comparisons of screen content is now determned by the new WaitForMatchTestIntervalMs
intrinsic variable. The WaitForMatchXTolerance
and WaitForMatchYTolerance
intrinisc variables allow you matching ofnimages that are not placed precisely
in the same location as when the recording was done.
1.6i
Release
Automatic Timeout Detection
Phantom now has the capability to include timeouts on the synchronization
statements that wait for windows to appear. By default, a message is displayed
to the user when a timeout occurs, but this behavior can be customized.
See the The Phantom
Options Dialog for information on enabling and disabling this feature.
Customization of the Recording Process
Phantom now allows you to tailor recorder output to include your own site-specific
code. This can, in many instances, eliminate the necessity to repetitively
edit the recorder output to add the same error handling and boilerplate
code. This feature is most useful when large numbers of Phantom scripts
are created as when, for example, Phantom is used to monitor the health
of a large suite of enterprise applications. See Customizing
the Recording Process for more information.
New PhantomScript features
related to error handling
The new ScriptError and the
CurrentScriptFile, LastWindowCaption,
and LastWindowClass intrinsic
variables provide information to aid in generating error messages from
Phantom scripts.
Windows Messaging
We have added the following statements to allow sending and receiving
Windows messages: PostWindowsMessage,
SendWindowsMessage,
and WaitForWindowsMessage
Bugfixes
A number of problems with scheduling of scripts have been fixed.
A problem assigning hotkeys for script execution has been fixed.
A problem with the new ProgressBar dialog item was corrected.
1.6
Release
Script comments
The comments included
in scripts generated by the Phantom recorder are now more informative.
Also, you can cause the recorder to omit comments from recorded scripts
from the Phantom Options
Dialog.
ProgressBar
The ProgressBar
dialog item allows you to display the percentage of a long-running task
that is complete.
Automatic Popup Error Dialogs
Phantom now produces
popup error dialogs when an error occurs during script execution. This
feature can be selectively enabled and disabled using the SetPhantom
options ErrorPopupsOn, ErrorPopupsOff, SuspendErrorPopups, and RestoreErrorPopups.
TerminateOnError and ContinueOnError
Phantom now allows you to specify whether script execution is to continue
or not when an error occurs. You specify this using the SetPhantom
options TerminateOnError and ContinueOnError.
Alternative
Keyboard Layouts
Phantom now supports
alternative keyboard layouts for both record and playback. This allows
using Phantom with non-US English language settings.
WaitForKeystroke
WaitForKeystroke allows
you to wait for the user to enter one of a specified set of keystrokes
and then determine which one was entered.
Record
Hotkey
In the Phantom Options
Dialog, you can now specify a hot key to start and end recording so
you can begin and end recording without accessing the Phantom Control
Panel.
Record-to-Clipboard
The new Record-to-Clipboard hotkey starts a recording that instead of
being saved in a file, is written to the Windows clipboard from where
it can be pasted into a PhantomScript Editor session. This feature is
useful for adding error and exception handling features after the basic
script has been recorded for the success case.
PhantomScript Editor and Debugger enhancements
The PhantomScript debugger and the PhantomScript Editor now remember their
last position and window size and, when next invoked assume their previous
positions. The PhantomScript Editor now provides the option of setting
the font face and size.
CommandLine variable enables drag-and-drop activation
The new CommandLine intrinsic
variable provides access to the command line parameters used to invoke
a Phantom-generated executable. When a Phantom-generated executable is
invoked by a drag-and-drop operation, the name of the dropped object is
included in the command line parameters.
CopyFile
now copies web pages
The CopyFile statement has
been enhanced to support copying from a URL (a web page address) as well
as from a file on the local computer. This makes it extremely easy to
read web pages from within a Phantom script.
InternetGet
and InternetPost
The new InternetGet and
InternetPost statements allow
you to retrieve webpages from the Internet in the same manner as a web
browser.
HostIsAvailable and Ping
The new HostIsAvailable
and Ping statements allow you to determine
the status of Internet hosts.
IPAddress
The new IPAddress statement allows
you to determine the numeric address corresponding to a specified Internet
hostname.
WritePrinter
The new WritePrinter statement
allows you to send an arbitrary string to a specified printer.
Tokenize
The new Tokenize statement
creates lists of tokens from an input string based on specifiers provided
as arguments.
New
Date and Time functions
The TimeZone, UTCDate,
UTCTime statements provide access
to the current time zone name and Coordinated Universal Time (UTC) date
and time. The DayNumberFromDate
and DateFromDayNumber
functions enable date calculations such as days-between-dates, days-since,
days-until, future-date and past-date.
WaitForProcessReady
The new WaitForProcessReady
statement allows a script to wait until a specified process is ready to
accept input with no input events pending.
WaitForRightButtonClick
The new WaitForRightButtonClick
statement allows a script to wait until the user presses the right mouse
button.
Keyed
Value Lists
A keyed value list is a hashed structure that provides extremely fast
lookup of values that have been stored with an associated key. The statements
InsertKeyedValue, FindKeyedValue,
DeleteKeyedValue, KeyList
and the KeyedValueHashTableSize
intrinsic variable provide access to keyed value lists. (Keyed value lists
are referred to in other contexts by such terms as maps, hash lists, associative
arrays, and dictionaries .)
Call and Gosub indirection
Call and Gosub now accept expressions calculated at runtime in place
of the literal name of the procedure or subroutine. This allows determination
of the target of a Call or Gosub to be deferred until run time.
New math functions
The mathematics functions Floor,
Ceiling, and AbsoluteValue
have been added.
MakeExeFromScript
The new MakeExeFromScript
statement allows you to create exe files from scripts and to create very
small executables (typically less than 50 KBytes) that make use of the
new PHANTOM.DLL. This makes the distribution of large numbers of script
executables more space efficient.
New process synchronization features
The new statements WaitForMutex,
ReleaseMutex, CloseMutex,
WaitForSemaphore, ReleaseSemaphore,
and CloseSemaphore provide
methods to synchronize the activities of multiple processes. These processes
may be executing Phantom-generated executables or other programs that
use these synchronization mechanisms.
Image InputBuffer support
The InputBuffer parameter of the Image
dialog item allows a bitmap image stored in a PhantomScript variable to
be used as an image source as well as a bitmap file as was previously
the case.
Debugger popup menu item
The PhantomScript debugger can now be invoked via the right-click menu
of the Phantom control panel.
Changes to variable scoping rules
Changes have been made to the rules for Variable Scoping in PhantomScript.
The change most likely to have a significant effect on existing scripts
is that variables declared as having local scope (using the Local
statement) are no longer accessible from within called procedures. To
make a variable visible from within a called procedure, you must now declare
it as having global scope (using the Global
statement).
Multiple execution
Phantom now executes statements that do not involve delivering keystrokes
or mouse actions without invoking the journal playback functions of Windows.
This allows multiple Phantom scripts and executables to execute faster,
without mutual interference, and without interfering with user input actions.
WaitForWindow NoActivate
The new NoActivate parameter on WaitForWindow
allows you to wait for a window to appear without forcing it to the foreground
or giving it the input focus.
Bugfixes
Problems handling lists and tables with empty items have been corrected.
The statements WindowClass
and WindowCaption now properly
return information for child windows. (Previously, in some cases information
for the specified window's parent window was returned.)
Procedures from library files included using the IncludeFile
statement are now included in executables created with Phantom.
Dialog navigation with Tab and arrow keys now works properly in non-modal
dialog boxes.
The Alt and Ctrl keys are recorded now even when they are not accompanied
by another key.
A bug which could cause corruption of data files opened by Phantom has
been corrected.
1.5k
Release
SetPhantom
TraceInit statement added
The
SetPhantom TraceInit statement
initializes the current trace file and places header information in it
including the Phantom version, Windows version, and the date and time.
Support for non-string registry values
The GetRegistryValueType
and SetRegistryValue2
statements have been added and the GetRegistryValue
statement has been enhanced to allow storing and retrieving a number of
registry data types other than string.
Key
statements accepts variable as argument.
The Key statement now accepts variables
and expressions containing keystroke designations as arguments. Previously,
only literal keystroke designations were accepted.
Scheduler performance improvements.
Significant improvements in scheduler performance when large numbers
of scripts (e.g. hundreds) are scheduled have been achieved in this release.
Prior to this release, interaction with the Scheduler dialog and actions
that occur at script termination performed very slowly when large numbers
of scripts were scheduled.
Bugfix in DeleteRow
A problem with the DeleteRow
statement that caused table rows to become mixed up has been fixed.
1.5j
Release
Additional
date functions added.
The
new date functions DayOfWeek,
DayOfYear, and DaylightSavings
have been added.
Schedule refresh
The statement RefreshSchedule
has been added to allow scripts to cause the Phantom to reload the schedule
from disk.
1.5i
Release
Popup
menu problem fixed
A
problem that caused erroneous entries in the Phantom script list to be
created when the minimized Phantom icon was double-clicked has been fixed.
Phantom Control
Panel Title Bar
The Phantom Control Panel title bar now shows the name of the script being
executed and the color of Phantom's icon indicates Phantom's current state:
blue for idle, green for playback, and red for recording.
1.5h
Release
Popup menu problems in Windows95/98 fixed
Problems with the popup menu displayed when Phantom is minimized to the
system tray specific to Windows 95 and 98 have been fixed.
1.5g
Release
SetWindowCaption
The new SetWindowCaption
statement allows you to change the text of window captions. (The window
caption is normally the text that appears in the window's title bar.)
SetPhantom FastPlay
SetPhantom FastPlay now allows
you to set the fast playback settings from within a Phantom script. Previously,
these settings were only accessible from the Phantom Options dialog.
FindItem
FindItem, when applied to a list
containing composite variables, now searches for variables within the
list whose parent variable value matches the search criteria. This allows
lists of composite variables to be used as a sort of "dictionary" or "map",
where the parent value is used as a key to retrieve the entire composite
variable. For example, a collection of employee records could be maintained
in a list of composite variables with the employee badge number as the
parent variable's value. This would allow easy retrieval by badge number.
1.5f
Release
Network connection bugfix
A problem wherein the second invocation of a Phantom networking script
would sometimes hang under Windows NT SP6 has been fixed.
1.5e
Release
Parsing and constructing binary data buffers
The following new statements provide the capability of extracting data
from and constructing binary data buffers: ExtractInteger,
ExtractLong, ExtractShort,
ExtractWord, ExtractByte,
ExtractChar, ExtractBytes,
ExtractString, SkipBytes,
InsertInteger, InsertLong,
InsertShort, InsertWord,
InsertByte, InsertChar,
InsertBytes, and InsertString.
Recording quotation marks
A problem related to recording quotation marks (double-quotes) has been
fixed. Quotation marks are now recorded as <Shft-'> (a shifted apostrophe).
1.5d
Release
ConnectTimeout
The new ConnectTimeout intrinsic
variable allows you to decrease the default Windows timeout for OpenConnection.
This allows quicker detection of non-responding hosts.
1.5c
Release
Process Control and Encryption
Help file sections on Process
Control and Encryption have
been added. They were accidentally ommitted in earlier releases.
PhantomScript Editor
A number of formatting problems related to the use of nested parentheses
and functions have been corrected and the PhantomScript Editor now detects
unbalanced parentheses as well.
FileExists
The new FileExists statement
determines whether a specified file exists. The file specification may
include wildcards.
FileSize
FileSize now returns 0 if the
specified file does not exist. Previously, the undocumented value -1 was
returned.
CopyFile, MoveFile, CreateDirectory
CopyFile, MoveFile,
and CreateDirectory now
automatically create directories on remote drives when UNC file specifications
(e.g. \\computer\c\myfiles\file.txt) are used as they do for local and
mapped drives.
1.5b
Release
SubString
SubString now works with binary
data variables.
Scheduler BugFixes
Schedule now reports the correct day of the week in the expanded Phantom
control panel.
Corrected a daylight savings time-related scheduling problem.
Corrected a problem where short scripts were sometimes invoked twice
by the scheduler.
Corrected a problem where an executed once-only script could block executions
of later scheduled scripts.
Changed scheduler dialog to not display script file directory prefixes.
1.5a
Release
BugFixes
Fixed problem with initialization of variables in Local, Global, and Universal
statements. Fixed problem with passing of quoted literals to procedures
when the literal is also the name of a variable.
Fixed bug that CloseConnection on any connection closed all connections.
Fixed bug that caused incorrect evaluations of comparisons using And
and Or when the entire comparison expression was enclosed in (unnecessary)
parentheses.
1.5
Release
Called Procedures
The new Call and Procedure
statements, along with the newly supported Local
variable declaration, provide true subroutine capability to Phantom for
Windows. The new IncludeFile
statement supports the creation of external "libraries" of procedures
to be shared between multiple PhantomScript scripts. The new SetResultValue
statement allows returning values from called procedures.
SquareRoot
The new SquareRoot statement
returns the square root of a number.
StringAsList
The StringAsList statement
tokenizes a list based on specified token delimiters. This makes it easy,
for example, to process a sentence as a list of words.
New string manipulation functions
The PatternMatch and PatternSubstitute
statements have been added to PhantomScript. These statements allow flexible
extract and search-and-replace operations on text strings.
New Statements for Working with HTML and other Internet Data
The ExtractHTMLLinks,
MakeAbsoluteURL, ParseURL,
Base64Encode, Base64Decode,
UUEncode, and UUEncode
provide the capability to work with Universal Resource Locators (URLs),
Hypertext Markup Language (HTML) text and binary data encoded for transfer
via the Internet.
Support for Binary Data Manipulation
The BitAnd, BitOr,
BitNot, BitXor,
HexlistFromBinary, BinaryFromHexlist,
HexToDecimal and DecimalToHex
statements provide translation between hexadecimal and decimal radix.
Sorting of strings containing non-ASCII characters
SortableString allows sorting
of lists containing non-ASCII characters.
List performance
Performance of large list and table operations has been greatly improved.
Variable size
The 32K byte size limit on list items and persistent variables has been
removed.
LoadFile and SaveFile
The new LoadFile statement allows
loading the entire contents of a file into a variable without requiring
opening, reading, and closing the file. Similarly, the SaveFile
statement saves data to a file without requiring opening, writing, and
closing the file.
Binary File and Data
Added the OpenBinaryFile,
LoadFile, and ByteCount
statements and the BinaryFileReadBufferSize
intrinsic variable to support reading, writing, and manipulating binary
data.
File Times
Added the FileAccessTime,
FileCreateTime, FileModifyTime,
SetFileAccessTime, and
SetFileModifyTime statements
to allow scripts to base decisions based on when files were created, last
accessed and last modified and to set the access and modify times of files.
FirstFile and NextFile
FirstFile and NextFile
no longer return the "." and ".." files. (The prior behavior required
addional script statements in NextFile loops to filter out these pseudo-files.)
Composite Variables
Support for composite variables has been added. Composite variables are
similar to records or structs in other languages. See Composite
Variables in the Language Basics section for more information.
ComponentList
ComponentList returns the
components of a composite variable.
Encryption
Data encryption support has been added with the statements Encrypt,
Decrypt, RC4Encrypt,
RC4Decrypt, and SetEncryptionKey.
SetPhantom Interruptable
The new Interruptable and Uninterruptable options of the SetPhantom
statement allow you to disable Ctrl-Esc and Ctrl-Alt-Del actions from
within Phantom scripts.
Bugfix
Fixed timed dialogs so interaction resets timer as documented.
Bugfix
StringBefore, StringBeforeLast,
StringAfter, and StringAfterLast
were case sensitive in certain cases. This has been fixed.
Bugfix
Fixed problem where Phantom exited when errors occurred in reading corrupt
jpeg image files.
|