This document describes new and improved features in PerfectScript since Corel WordPerfect Suite 8 Professional. This version of this document also includes the undocumented features and commands.
Document Change Log
4-29-98 JDan 1.11 - Correct IfPlatform version number to _Version8_0_3. Correct spelling of DialogCancelled! to DialogCanceled! in Net... tokens.
4-8-98 JDan 1.10 - Added new commands to be fully described later.
12-8-97 JDan 1.9 - Add EndFunction and EndProcedure that were really added in V7, but not discussed properly.
11-11-97 JDan 1.8 - Describe how the MenuList command is now obsolete.
11-3-97 JDan 1.7 - Added clarification on use of Units parameter for RegionGetPosition and RegionMoveWindow.
10-31-97 JDan 1.6 - Documented new enumeration for the PersistAll command.
10-2-97 JDan 1.5 - Document ShowIcon! option of MacroCompile and MacroPlay.
10-1-97 JDan 1.4 - Rename Sort! to Sorted! in DialogAddComboBox.Style.
9-30-97 JDan 1.3 - Add description of changes to MacroInfo and NToC commands.
9-30-97 JDan 1.2 - Describe the play progress and play summary dialogs, and describe them for the MacroPlay command.
9-4-97 JDan 1.1 - Initial creation.
Quick Overview of WordPerfect Suite 8 Professional Macro Compatibility
This section provides a quick overview of things that may need to be done to Professional Office 8 macros to make them work in PerfectScript for Enterprise Edition 8. The sections Obsolete Commands and Language Features and Modified and Improved Commands and Language Features provide more extensive details. As new commands and capabilities are added, new reserved words have also been added. A description of these new reserved words is in the section New Commands and Language features.
PerfectScript (the program--PS80.EXE)
PerfectScript User Interface Changes
A context menu is now available for the recording macro icons that display in the system tray. This context menu matches the context menu for the same macro if selected from the PerfectScript interface. Double clicking on any macro icon in the system tray, will bring up the PerfectScript user interface.
The preference settings have been regrouped and rearranged by adding a new page for the macro play settings.
A new General setting has been added that allows the display of macro icons in the Windows system tray area to be disabled.
Advanced / Hidden Features, Settings and Keystrokes in PerfectScript
The PerfectScript Macro system has a number of hidden features and settings that are not documented, and not supported. These are used primarily for internal debugging and testing, and may contain bugs. Direct access to these features and settings from the user interface of the PerfectScript (PS80) is controlled by a specific registry setting. This registry setting is (note the leading space in the name of the value):
HKEY_CURRENT_USER\Software\Corel\PerfectScript\8\Settings\" Show Hidden Settings" = 1 (DWORD value)
If this setting does not exist, or has a value of 0, then direct access is not available. When this setting does exist, with a value of 1, then additional menu items are available in the MacroFacility, and additional settings are available in the "Settings" dialog. As a reminder that these are hidden features and settings, the text of these menu items is enclosed in "[ ]" symbols, and the text of the settings in the "Settings" dialog are show in italics. New advanced/hidden settings are now available in the "Settings" dialog.
This same registry setting may be toggled on/off through a command accelerator key sequence of "Control Shift Alt ENTER" in the MacroFacility.
Hidden keystrokes in the PerfectScript user interface
Control Shift Alt Object Action
Control Alt F10 key Compile
Shift Alt Insert key Registered Apps
Control Shift Insert key Command Inserter 1
Control Shift Alt Insert key Command Inserter 2
Control Alt Insert key Command Inserter 3
Control Shift Alt Enter key Toggle Hidden Settings
Shift Alt Enter key Macro Info
Control Shift Alt Recent file menu item Compile
Control Shift Recent file menu item Edit
Control Alt Recent file menu item Macro Info
Control Recent file menu item Record
Shift Alt Recent file menu item Debug Compile
Shift Recent file menu item Compile
Alt Recent file menu item Debug Play
Recent file menu item Play
Del Recent file menu item Remove from recent file list
Home Recent file menu item Move to top of recent file list
Hidden keystrokes in the Command Inserter
Control Shift Alt Object Action
Control Shift Insert button Dump Command List (also button in advanced)
Control Shift Alt Insert button Brief Command Dump (also button in advanced)
Control Select command list item Show Return-value Enumerations (also button in advanced)
Hidden keystrokes in the Macro Interpreter
Control Shift Alt Object Action
Control Shift Alt Cancel button in "Prompt" Invoke Macro Debugger
Control Shift Alt Cancel button in "Get..." Invoke Macro Debugger
Control Shift Alt Any button in "MessageBox" Invoke Macro Debugger
Hidden registry settings
All hidden registry settings (except those stated below) can be accessed in the "Settings" dialog of the MacroFacility. These settings are located in HKEY_CURRENT_USER\Software\Corel\PerfectScript\8\Settings\...
"Prefered Interface Language" = (string) "US" (default="US")
"Time Out Tkn App Launch" = (DWORD) (default = 300)
"Prompt on Tkn App Launch" = (DWORD) 1 or 0 (default=0)
"Interpreter\Show matherr Messages" = (DWORD) 1 or 0 (default=0) [not used]
Hidden preference dialog settings
The following preference settings are accessable from the "Settings" dialog of the MacroFacility when the Advanced / Hidden settings are enabled:
General page
Display debug messages
Compile page
Convert commas to semicolons
Ignore trailing semicolons
Ask to overwrite current object
Ask for listing filename
Ask to overwrite listing file
Generate detailed listing
Generate opcode statistics
Allow unknown OLE objects
Save scrubber file
Display compile warnings
Display compile errors
Display compile fatal errors
Display compile message %d [not used]
Debug page
Show full routine data
Show actual variable data types
Show "Internal Variables" button
Show "Runtime Stack" button
Show "Object Code" button
Show "Load" and "Save" buttons
Display all breakpoints
Debugger startup file
Play page
Run unattended
Show progress
Use new runtime error dialog
Platform version info file
PerfectFit version info file
PerfectScript version info file
Command Browser page
Use theta indexes
Show actual data types
Show all PIDs
Show all parameters
Show all enumerations
Show token ids
Show enumeration values
OLE Automation
Dialog Editor, and Dialog and Region Statements
Macro Debugger
The Macro Debugger has been greatly enhanced and improved. <fully describe the changes here>.
Command Inserter
When Shift clicking (holding down the Shift key and then clicking), or help clicking (clicking first on the "?" button in the caption bar and then clicking) on a command in the Commands list box, then the item clicked on is selected, and then the command specific help is invoked for that command. In previous versions, the command specific help was invoked for whatever item was already selected before, and the item clicked on was not selected first. This meant that to get command specific help on a specific command in the Commands list box, first the desired command would have to be selected, and then the item would have to be Shift clicked or help clicked. This preselection is now combined into the Shift clicking and help clicking in order to eliminate the confusion and extra step previously required.
For most optional enumeration parameters of commands, a default value is passed when the parameter is left off (in some cases, leaving off the optional enumeration parameter performs a different function). The default enumeration values (if any) for these parameters is now displayed in bold text in the Enumerations list box. In some cases, the default value is a combination of enumerations. In this case, all enumerations that are combined to produce the default value are highlighted. In some other cases, several enumerations may be defined with the same value as synonyms for each other. In this case, all enumerations defined with the same value as the default value are highlighted.
Obsolete Commands and Language Features
In a future release of PerfectScript, there are some commands that may or may not be supported. Users are encouraged to replace these commands with their functional equivalents (if any) as soon as possible. For backward macro compatibility, these commands will continue to be supported, but they will no longer be documented in the command browser or in the macro help information. These commands may be eliminated in some future release.
AppExecuteExt
DialogAddComboBox.Style.Sort!
EnvVariableGet.EnvType.NetWare!
EnvVariableSet.EnvType.NetWare!
FileNameDialog.StyleOptions.PerfectFitDialog!
MenuList
AppExecuteExt
In previous versions, the functionality of the AppExecute command was extended to include the same features as the AppExecuteExt command. The AppExecuteExt command can now be replaced by AppExecute.
DialogAddComboBox.Style.Sort!
This enumeration has been renamed to Sorted! to be compatible with the same enumeration in DialogAddListBox.
EnvVariableGet.EnvType.NetWare! and EnvVariableSet.EnvType.NetWare!
This enumeration for these 2 commands was never implemented, and has been made obsolete.
FileNameDialog.StyleOptions.PerfectFitDialog!
This enumeration has been renamed to EnhancedDialog!.
MenuList
This command has always existed only for DOS 6.0 macro language compatibility, and will no longer be documented. The Menu command should be used instead.
Modified and Improved Commands and Language Features
This section describes changes to existing commands and, where applicable, incompatibilities that may arise with old macros. In this section, "..." indicates places where existing capabilities have not been changed.
version number
/* */
DateString
DefaultUnits
DialogAddBitmap
DialogAddCheckBox
IfPlatform
EndIfPlatform
ElseIfPlatform
MacroCompile
MacroInfo
MacroPlay
NetAddConnection
NetConnectionDlg
NetDisconnectDlg
NToC
PersistAll
Reference
RegionGetPosition
RegionMoveWindow
ValueType
[MacroEnd]
***** STILL NEED TO COMPLETE THE DESCRIPTION OF THESE *****
AppLocate
"*" returns GetForegroundWindow, not GetFocus
DDEPoke
DDERequest
New timerout parameter - also changed in 8 (rev B or C?).
FileConvert
FileConvertError
Add new reyurn enumerations.
GetNumber
GetString
GetUnits
Prompt and title are now optional - PID said they were, but code didn't allow it.
Initial value of the output variable now displayed in the edit field as an initial value.
MacroInfo
New DLLCallBufferSize! enumeration
RegionGetHandle
New 'index' parameter
RegistryCloseKey
hKey is now an enum
Now returns an enumeration
RegistryCreateKey
SubKey is now optional
RegistryDeleteKey
hKey is now an enum
Now returns an enumeration
RegistryDeleteValue,
hKey is now an enum
Now returns an enumeration
RegistryEnumKey,
hKey is now an enum
RegistryEnumValue,
hKey is now an enum
RegistryOpenKey
SubKey is now optional
RegistryQueryKeyCount
hKey is now an enum
Has always returned 0 on error.
RegistryQueryLastError
Now returns an enumeration
RegistryQueryValue
Value is now optional
hKey is now an enum
RegistryQueryValueCount
hKey is now an enum
Has always returned 0 on error.
RegistrySetValue
Value is now optional
Now returns an enumeration
hKey is now an enum
THE FOLLOWING CHANGES ARE NOT TO BE DOCUMENTED:
Assert, Condition, OnCondition, OnCondition Call (advanced)
New Condition.Timer! enumeration
Cancel, Error, NotFound, PersistAll, VarrErrChk, ExitHandlerState, Condition (advanced)
New State.Toggle! enumeration
ErrorNumber, MacroInfo (advanced)
New Timer! return enumeration
New VarErrChkAsserted! enumeration - not implemented yet
FileConvert (advanced)
FileConvertError (advanced)
Add missing errors enumerations.
For, ForNext (advanced)
The ability to use keywords rather than ";" wasn't working in all cases for For and ForNext. Fixed.
MacroInfo (advanced)
New ItemData.Toggle! enumeration
New InfoItem enumerations:
TimerOn, TimerSetup, TimerCall, TimerHandler, TimerTimer, TimerOnTime
New ItemData enumerations:
Timer, AllTimers
Variance, StdDev (advanced)
New 'type' parameter and enumerations.
***** STILL NEED TO COMPLETE THE DESCRIPTION OF THESE *****
version number
The version number of the PerfectScript macro system has been changed to 8.2.2, to allow compile time and runtime version specific checks. This affects the IfPlatform, ElseIfPlatform, EndIfPlatform, MacroInfo and VersionInfo commands. This will also cause a macro compiled under this PerfectScript macro system to recompile on an older version macro system.
/* and */
'C' language block comment statements of /* to start, and */ to end were introduced in WordPerfect Suite 8. In WP8 (and PO8), block comments were ignored while in an ifplatform statement block that was ignoring code (but active in an ifplatform statement block that was compiling code). This prevented block comments from being used to comment out the endifplatform statement, unlike the '//' single line comments that were active and could be used. This has been changed, and block comments are now active within the body of an ifplatform block that is ignoring code.
This change clarifies the precendent level for the comment statements. Comment statements of a higher precedent level are active within comment statements of a lower precedent level, which allows comment statements of a higher level to be used to "comment out" the comment end statement of a lower level. For example, a /* */ block comment or a // single line comment may be used within an ifplatform statement block to cause an endifplatform statement not to be recognized by the compiler, and a // single line comment may be used within the body of a /* */ block comment to cause a */ block comment end not to be recognized.
The comment precendent level is:
1 - // single line comments
2 - /* and */ block comments
3 - ifplatform and endifplatform blocks
... := DateString (...; [Type:enumeration]; ...)
A new enumeration has been added to the Type parameter.
[Type] The type of date string to generate. If this parameter is missing, then Short! is used, unless the Format parameter is specified, and then the Format parameter string is used. This is the same as specifying Custom! for the Type parameter.
Custom! The format if specified as a string in the Format parameter.
... := DefaultUnits ([Units:enumeration])
A new enumeration has been added to the Units parameter.
[Units] The units to specify as the new default units type. A new enumeration has been added. If this parameter is missing, then NoChange! is used.
NoChange! Return the current default units, but don't change the new default units type.
... := DialogAddBitmap (...; [Style:enumeration]; ...; [TransparentColor:numeric or enumeration])
New enumerations have been added to the Style parameter, and the TransparentColor parameter has been made an enumeration, with enumerations de3fined for common color choices.
[Style] Specifies the style of the bitmap control. New enumerations has been added that cause the same behavior that was specified by leaving this parameter off in previous versions. If this parameter is missing, then NoResize! | Opaque! is used.
NoResize! Don't resize the bitmap to fit the control, and don't resize the control to fit the bitmap.
Opaque! The background is drawn with an opaque background (rather than transparent).
[TransparentColor] If the Style parameter is Transparent!, then this parameter defines what color is to be used as the transparent color. This parameter may be specified as a numeric value of the color specified as an RGB value, with the red component value of 0 to 255 in bits 0-7, the green component value of 0 to 255 in bits 8-15, and the blue component value of 0 to 255 in bits 16-23, or a predefined enumeration may be specified that defines the RGB value of some predefi9ned colors.
White! An RGB color value of 00FFFFFFx.
Black! An RGB color value of 00000000x.
Red! An RGB color value of 000000FFx.
Green! An RGB color value of 0000FF00x.
Blue! An RGB color value of 00FF0000x.
Cyan! An RGB color value of 00FFFF00x.
Yellow! An RGB color value of 00FFFF00x.
Magenta! An RGB color value of 00FF00FFx.
Orange! An RGB color value of 000080FFx.
Purple! An RGB color value of 00800080x.
Gray25! An RGB color value of 00C0C0C0x.
Gray50! An RGB color value of 00808080x.
Gray75! An RGB color value of 00404040x.
... := DialogAddCheckBox (...; [Style:enumeration])
A new enumeration has been added to the Style parameter.
[Style] The style of the checkbox to add. If missing, then CheckboxAuto! | TextOnRight! is used.
TextOnRight! The descriptive text is placed to the right of the checkbox.
ElseIfPlatform ([{<PlatformID>enumeration}])
EndIfPlatform ([{<PlatformID>enumeration}])
See IfPlatform below.
IfPlatform ([{<PlatformID>enumeration}])
A new enumeration has been added to the PlatformID parameter. This is a compile time only statement, and cannot be used at runtime to determine the platform id or version the the macro is running on. Use the MacroInfo command, or the VersionInfo command to determine platform type and version numbers at runtime.
[{PlatformID}] This parameter specifies a list of ids. If any of the ids in this list matches the id that this version of the macro system recognizes, then the statements in the body of the IfPlatform block will be compiled. Otherwise the body is ignored as if it contained comments. If the id is a numerical or string value, then this value is compared to the version number of the current macro system, and if equal, then the body of statements are compiled. If this parameter is missing, then the statement body is ignored as if no recognized id was specified.
_Version8_0_3! This enumeration is recognized if the macro is compiled using the version 8 Enterprise Edition PerfectScript macro system.
Ignore! All statements in the body of the block are ignored. This is the same as specifying a platform id that doesn't exist.
8.3 Any numeric value is compared against the macro system version number. (don't document this for this version).
"8.3", "8.3.3" Any string value is compared against the macro system version number. (don't document this for this version).
_Version_! When this enumeration is used, then a relational comparision expression is expected to follow this. The format is:
_Version_! <operator> <value>string
The accepted <operator>s are:
=, !=, <>, <, <=, >, >=
The <value> is a numeric or string value representing the version number to check for.
The current macro system version number is compared to the provided <value> using the specified <operator>, and if the comparison is True, then the PlatformID is considered to match the current platform id. If the provided <value> contains only a major version number, then only the major version number is compared. If it contains only a major and minor version number, then only the minor and major version numbers are compared. For example, if <Value> is "8", then it will match all versions of 8. If "8.0" is specified, then only version 8.0 (WP8) will match (PO8 was version "8.1.1", and EE8 is "8.3.3").
numeric or enumeration := MacroCompile (...; [Options:enumeration])
A new enumeration has been added to the Options parameter.
[Options] Options affecting how the macro is compiled. If missing, Wait! is used.
ShowIcon! Show an icon in the Windows system tray area while this macro is being compiled. This option only has an effect if the PerfectScript setting "Show Tray Icons" is turned off, since a tray icon is normally always displayed. If it is turned off, then tray icons are not displayed, and then this option causes the icon to be displayed.
any (enumeration, boolean, string, numeric, label, array) := MacroInfo (InfoItem:enumeration; ...)
The return value from this command can now be an enumeration. Some InfoItem values which used to return a numeric values, now return enumeration values that are defined to have the same numeric values as the numeric values from before. A new enumeration now exists for the InfoItem parameter.
return-value Some InfoItem values now return an enumeration. See the description of these InfoItem values below for a description of the return enumerations.
InfoItem ErrorNumber! (Enumeration) This item returns the same value as the ErrorNumber command. The possible values are:
Success! Formerly value 0. There was no error.
CancelConditionAsserted! Formerly value 1. A Cancel condition was asserted.
ErrorConditionAsserted! Formerly value 2. An Error condition was asserted.
NotFoundConditionAsserted! Formerly value 7. A Not Found condition was asserted.
UserDefinedCondition! Formerly value 100. This value defines the base value for assertions of user defined conditions. See the Assert command for more information about the value of user defined condition codes.
The following error values are used internally, but are not currently available by this command. These are for documentation only:
GeneralFailure!
InternalError!
InterpreterBusy!
IOError!
RuntimeError!
UserAbort!
UserCancel!
UserError!
UserNotFound!
DefaultUnits! (Enumeration) This item returns the same value as the DefaultUnits command (current default units type in effect). The possible values are:
None! Formerly value 0.
Centimeters! Formerly value 1.
Inches! Formerly value 2.
Millimeters! Formerly value 3.
Points! Formerly value 4.
WPUnits! Formerly value 5.
TokenError! (Enumeration) This new item returns the token handler return status value from the last token handler to be called (both internal and external tokens). The possible values are:
TokenOK! Formerly value 0. There was no error.
UnknownToken! Formerly value -99. There is no such token.
NotFoundCondition! Formerly value -98. A NotFound condition occurred.
CancelCondition! Formerly value -97. A Cancel condition occurred.
ErrorCondition! Formerly value -96. An Error condition occurred.
InvalidParameter! Formerly value -95. A parameter was invalid.
TokenInvalid! Formerly value -94. Token invalid at this time.
NotHandled! Formerly value -93. Token wasn't handled.
ReturnLater! Formerly value -92. Token will return later - this value is no longer used.
... := MacroPlay (...; [Options:enumeration]; ...)
A new enumeration has been added to the Options parameter. New dialogs and their behavior while running with the NoPrompts! option is described.
[Options] Options affecting how the macro is played.
ShowIcon! Show an icon in the Windows system tray area while this macro is being played. This option only has an effect if the PerfectScript Ssetting "Show Tray Icons" is turned off, since a tray icon is normally always displayed. If it is turned off, then tray icons are not displayed, and then this option causes the icon to be displayed.
ShowProgress! Display the play progress and play summary dialogs during play. If NoPrompts! is specified, then the summary dialog is automatically dismissed and does not require user dismissal.
NoPrompts! Don't display or wait for any prompts or dialogs from the macro interpreter or the macro as it plays. Prompts and dialogs are automatically dismissed with the default option for that prompt or dialog. Some prompts or dialogs are displayed before being automatically dismissed; some are displayed and then automatically dismissed; others are not displayed. This currently does not function for ALL prompts or dialogs. It does not work for the input validity prompts in the macro debugger and in the GetNumber and GetUnits commands. User macro dialogs still need to be dismissed. The Coach... commands that display prompts are not automatically dismissed. The following prompts or dialogs are automatically dismissed with the following behavior:
-FileNameDialog - The initial path and initial file is returned.
-DirectoryCreate, DirectoryDelete, DirectoryRename, SetFileAttributes, FileCopy, FileDelete, FileRename - The Prompts parameter is set to NoPrompt!.
-MessageBox - The default button is pressed.
-GetNumber, GetUnits, GetString - The OK button is pressed and the initial values are returned.
-NetConnectionDlg - The network connection dialog is not displayed, and a DialogCanceled! value is returned as if the Cancel button were pressed.
-NetDisconnectDlg - The network disconnect dialog is not displayed, and a Success! value is returned as if the OK button were pressed.
-Play progress dialog - This modeless dialog is displayed as usual.
-Play summary dialog - The OK button is pressed
enumeration or numeric := NetAddConnection (...; [Type:enumeration]; ...)
The return value is now an enumeration or a numeric. A new Type enumeration has been added.
return-value The return value has been made an enumeration, and enumerations have been defined for many of the common return values. Other return values are returned as a numeric value. The defined return values are:
Success! Success.
DialogCanceled! The attempt to make the connection was canceled by the user through a dialog box.
AccessDenied! Access to the network resource was denied.
AlreadyAssigned! The local device is already connected to a network resource.
AlreadyRemembered! An entry for the device is already in the user profile.
CantOpenUserProfile! The system is unable to open the user profile to process persistent connections.
DeviceInUse! The device is in use by an active process and cannot be disconnected.
DeviceMismatch! The type of local device and the type of network resource do not match.
FilesStillOpen! There are open files, and the Force parameter is FALSE.
InsufficientMemory! There is insufficient memory to start the dialog box.
InvalidDevice! The device specified is invalid.
InvalidNetOrPath! A network component has not started, or the specified name could not be handled.
InvalidParameter! There is a bad combination of parameters.
InvalidPassword! The specified password is invalid.
InvalidProvider! The provider specified does not match any provider.
InvalidResource! The remote name specified is not acceptable to any network resource provider. The resource name is invalid, or the named resource cannot be located.
InvalidUserProfile! The user profile is in an incorrect format.
NetworkError! A network-specific error occured.
NoConnection! There is no current connection to the remote device, but there is a remembered (persistent) connection to it.
NoNetwork! There is no network present.
NotConnected! The name specified is not a redirected device, or the system is not currently connected to the device.
NotSupported! The network provider does not support UNC names. This function is not supported by any of the network providers.
ProviderBusy! The router or provider is busy, possibly initializing. The caller should retry.
ResourceNotContainer! The resource does not specify a container.
UserCancel! The dialog was canceled by the user.
BufferTooSmall! The buffer is too small.
NoMoreItems There are no more entries. The buffer contents are undefined.
InvalidEnumHandle! The enum handle parameter is not valid.
[Type] The type of connection to add. If missing, Disk! is used.
Any! The netword resource type is determined from the connection data.
enumeration or numeric := NetConnectionDlg ([Type:enumeration]; ...)
The return value is now an enumeration or a numeric. A new Type enumeration has been added.
return-value The return value has been made an enumeration, and enumerations have been defined for many of the common return values. Other return values are returned as a numeric value. The defined return values are:
Success! Success.
DialogCanceled! The attempt to make the connection was canceled by the user through a dialog box.
AccessDenied! Access to the network resource was denied.
AlreadyAssigned! The local device is already connected to a network resource.
AlreadyRemembered! An entry for the device is already in the user profile.
CantOpenUserProfile! The system is unable to open the user profile to process persistent connections.
DeviceInUse! The device is in use by an active process and cannot be disconnected.
DeviceMismatch! The type of local device and the type of network resource do not match.
FilesStillOpen! There are open files, and the Force parameter is FALSE.
InsufficientMemory! There is insufficient memory to start the dialog box.
InvalidDevice! The device specified is invalid.
InvalidNetOrPath! A network component has not started, or the specified name could not be handled.
InvalidParameter! There is a bad combination of parameters.
InvalidPassword! The specified password is invalid.
InvalidProvider! The provider specified does not match any provider.
InvalidResource! The remote name specified is not acceptable to any network resource provider. The resource name is invalid, or the named resource cannot be located.
InvalidUserProfile! The user profile is in an incorrect format.
NetworkError! A network-specific error occured.
NoConnection! There is no current connection to the remote device, but there is a remembered (persistent) connection to it.
NoNetwork! There is no network present.
NotConnected! The name specified is not a redirected device, or the system is not currently connected to the device.
NotSupported! The network provider does not support UNC names. This function is not supported by any of the network providers.
ProviderBusy! The router or provider is busy, possibly initializing. The caller should retry.
ResourceNotContainer! The resource does not specify a container.
UserCancel! The dialog was canceled by the user.
BufferTooSmall! The buffer is too small.
NoMoreItems There are no more entries. The buffer contents are undefined.
InvalidEnumHandle! The enum handle parameter is not valid.
[Type] The type of connection dialog to raise. If Missing, Disk! is used.
Printer! Raise a printer connection dialog.
Any! (not implemented)
enumeration or numeric := NetDisconnectDlg ([Type:enumeration]; ...)
The return value is now an enumeration or a numeric. A new Type enumeration has been added.
return-value The return value has been made an enumeration, and enumerations have been defined for many of the common return values. Other return values are returned as a numeric value. The defined return values are:
Success! Success.
DialogCanceled! The attempt to make the connection was canceled by the user through a dialog box.
AccessDenied! Access to the network resource was denied.
AlreadyAssigned! The local device is already connected to a network resource.
AlreadyRemembered! An entry for the device is already in the user profile.
CantOpenUserProfile! The system is unable to open the user profile to process persistent connections.
DeviceInUse! The device is in use by an active process and cannot be disconnected.
DeviceMismatch! The type of local device and the type of network resource do not match.
FilesStillOpen! There are open files, and the Force parameter is FALSE.
InsufficientMemory! There is insufficient memory to start the dialog box.
InvalidDevice! The device specified is invalid.
InvalidNetOrPath! A network component has not started, or the specified name could not be handled.
InvalidParameter! There is a bad combination of parameters.
InvalidPassword! The specified password is invalid.
InvalidProvider! The provider specified does not match any provider.
InvalidResource! The remote name specified is not acceptable to any network resource provider. The resource name is invalid, or the named resource cannot be located.
InvalidUserProfile! The user profile is in an incorrect format.
NetworkError! A network-specific error occured.
NoConnection! There is no current connection to the remote device, but there is a remembered (persistent) connection to it.
NoNetwork! There is no network present.
NotConnected! The name specified is not a redirected device, or the system is not currently connected to the device.
NotSupported! The network provider does not support UNC names. This function is not supported by any of the network providers.
ProviderBusy! The router or provider is busy, possibly initializing. The caller should retry.
ResourceNotContainer! The resource does not specify a container.
UserCancel! The dialog was canceled by the user.
BufferTooSmall! The buffer is too small.
NoMoreItems There are no more entries. The buffer contents are undefined.
InvalidEnumHandle! The enum handle parameter is not valid.
[Type] The type of connection dialog to display. If missing, Disk! is used.
Any! A generic dialog with all network resource types is displayed.
... := NToC (CharacterOrCharSet:numeric or enumeration; ...)
The CharacterOrCharSet parameter has some enumerations defined for it.
CharacterOrCharSet This parameter defined the character or the character set to be used. A full 16 bit numeric value can be specified, or one of the new enumerations can be used which specifiy certain control functions. As well as specifying 0f90ax for a hard return, the new HardReturn! enumeration may be specified.
HardReturn! Insert a Hard Return character.
Hrt! Synonym for HardReturn!.
Space! Insert a Space character.
HardSpace! Insert a Hard Space character.
Tab! Insert a Tab character.
HardPage! Insert a hard page break.
Hpg! Synonym for HardPage!
ExtraLargeOn! / ...Off! Turn Extra Large text on or off.
VeryLargeOn! / ...Off! Turn Very Large text on or off.
LargeOn! / ...Off! Turn Large text on or off.
SmallOn! / ...Off! Turn Small text on or off.
FineOn! / ...Off! Turn Fine text on or off.
SuperScriptOn! / ...Off! Turn Super Script text on or off.
SubScriptOn! / ...Off! Turn Sub Script text on or off.
OutlineOn! / ...Off! Turn Outline text on or off.
ShadowOn! / ...Off! Turn Shadow text on or off.
BoldOn! / ...Off! Turn Bold text on or off.
ItalicsOn! / ...Off! Turn Italic text on or off.
UnderlineOn! / ...Off! Turn Underline text on or off.
DoubleUnderlineOn! / ...Off! Turn Double Underline text on or off.
RedlineOn! / ...Off! Turn Redline text on or off.
StrikeOutOn! / ...Off! Turn Strike Out text on or off.
SmallCapsOn! / ...Off! Turn Small Caps text on or off.
... := PersistAll ([State:enumeration])
For Version 7, this command was changed to accept an optional parameter to specify if the Persistent variable state should be turned on or off. The documentation was incorrectly written to state that if this parameter was missing then the state would not be changed. This is incorrect. If the State parameter is missing, then On! is used. This is compatible with the behavior of this command when it was originally added to the macro language. Since the new state will be set to On! if the State parameter is missing, then a new enumeration has been added to this parameter to allow the current state to be obtained without changing it.
[State] The new state. If missing, then NoChange! is used.
NoChange! The current state is obtained and not changed.
... := Reference (...)
This inline parameter function is now displayed in the command inserter. It is a synonym for Address for the inline OLE parameter conversion functions.
... := RegionGetPosition (...; Units:enumeration)
... := RegionMoveWindow (...; Units:enumeration)
A clarification on the use of the Units parameter is in order. The Units parameter allows the use of either dialog units (DialogUnits!) or screen units (ScreenUnits!) in these commands. DialogUnits! specifies that the position and size values are in dialog units, which are relative to the size of the font being used in the dialog. ScreenUnits specifies that the values are in screen units (pixels). If DialogUnits! is specified as the value of the Units paramater, then the specified region must be a dialog, otherwise an error is asserted by these commands, since there is no dialog information for the region to get the font size for. If ScreenUnits! is specified, then the region specified may be a dialog or a non-dialog type of window.
... := ValueType (...; [Type:enumeration])
A new enumeration has been added to the Type parameter.
[Type] If a type is specified, then the return value is a boolean indicating whether the specified Value is of the specified type. If missing, then ActualType! is used.
ActualType! The actual type of the specified Value parameter is returned.
[MacroEnd] (<PlayLibraryStruct>:Raw Binary Data)
The PlayLibraryStruct parameter was formerly described as being optional. It is always present.
New Commands and Language features
This section describes new commands and language features which have been added.
new reserved words
new reserved keywords
New keywords have been added to the macro language. These keywords are reserved words and may not be used as variable or label names in macros. In addition to these new reserved keywords, the name of any new commands are also considered reserved words, since those names also cannot be used as variable or label names. (However, just because a new reserved keyword is on this list, does not imply that there is a new command or feature by that name that can be accessed.) The new reserved keywords that have been added are:
Several new commands have been added, which are now reserved words, but they do not need to be listed separately. See below for the list of new commands.
...
***** STILL NEED TO COMPLETE THE DESCRIPTION OF THESE *****
Combinations (advanced)
FileCheckSum (advanced)
MeanDev (advanced)
OnTimer (advanced)
OnTimer Call (advanced)
OnVarErrChk (advanced) - not implemented
OnVarErrChk Call (advanced) - not implemented
Permutations (advanced)
Primefactor (advanced) - not implemented
RandomStats (advanced)
RegionGetChildCount (advanced)
RegionGetId (advanced)
RegionGetName (advanced) - not implemented
RegionGetStyle (advanced)
RunUnattended (advanced)
StrCheckSum (advanced)
Timer (advanced)
New commands - NONE OF THESE COMMANDS WILL BE DOCUMENTED YET.
***** STILL NEED TO COMPLETE THE DESCRIPTION OF THESE *****
EndFunction, EndProcedure
These statements are synonyms for EndFunc and EndProc.
Bugs Fixes and Corrections
- A call to a method of an OLE automation object that doesn't exist, used to call the method with an id of 0 for that object. This now generates a runtime error.
- Currency type cast command for passing parameters to OLE Automation methods was always generating runtime error.
- The compiler was continuing to verify correct lexical token syntax while compiling the body of a /* */ block comment. This was causing problems with incorrectly balanced double quotes on any single line, causing a syntax to be reported about string constants not being allowed to span a line boundry.
- Accumulated elapsed times for the new MacroInfo Time...! items were being accumulated as negative values, rather than positive values. This caused the elapsed times to be displayed as very large times.
- Address type cast command for passing the address of an undefined variable wasn't working correctly.
- Parameters passed by address to OLE Automation objects were being updated even if a runtime error occurred.