Intouch Script & Logic PDF
Intouch Script & Logic PDF
Guide
Revision A
Trademarks
All terms mentioned in this documentation that are known to be trademarks or
service marks have been appropriately capitalized. Invensys Systems, Inc. cannot
attest to the accuracy of this information. Use of a term in this documentation
should not be regarded as affecting the validity of any trademark or service mark.
Alarm Logger, ActiveFactory, ArchestrA, Avantis, DBDump, DBLoad, DT Analyst,
FactoryFocus, FactoryOffice, FactorySuite, FactorySuite A2, InBatch, InControl,
IndustrialRAD, IndustrialSQL Server, InTouch, MaintenanceSuite, MuniSuite, QI
Analyst, SCADAlarm, SCADASuite, SuiteLink, SuiteVoyager, WindowMaker,
WindowViewer, Wonderware, and Wonderware Logger are trademarks of Invensys
plc, its subsidiaries and affiliates. All other brands may be trademarks of their
respective owners.
3
Contents
Welcome............................................ 9
Documentation Conventions...............................................9
Technical Support .............................................................10
Security-Related Scripting..............................................155
Logging On and Off ......................................................155
Changing and Setting Password .................................156
Specifying and Configuring Users ...............................156
Managing Security and Other Information ................157
Miscellaneous Scripting ..................................................158
Playing Sound Files from an InTouch Application.....158
Getting and Setting Properties of Wizards .................159
Welcome
Documentation Conventions
This documentation uses the following conventions:
Technical Support
Wonderware Technical Support offers a variety of support
options to answer any questions on Wonderware products
and their implementation.
Before you contact Technical Support, refer to the relevant
section(s) in this documentation for a possible solution to the
problem. If you need to contact technical support for help,
have the following information ready:
The type and version of the operating system you are
using.
Chapter 1
Introduction to Scripting
Types of Scripts
In InTouch, scripts are categorized based on what causes the
script to execute. For example, you would create a key
script if you want a script to execute when the operator
presses a certain key on the keyboard.
After you have chosen the script type, you can then further
define the criteria, or conditions, that make the script
execute. For example, you might want the script to execute
when the key is released, not when the key is pressed.
The script types are:
Application scripts execute either continuously while
WindowViewer is running or one time when
WindowViewer is started or shut down.
Toolbars
Condition
definition Command
area buttons
Script
window
Built-in
script
function
buttons
Equivalency
and math
operator
buttons MEM OLE
function
button
OLE Objects
In your custom scripts, you can call OLE objects. OLE objects
allow you to access your native computer system functions
and to interact with other programs such as the Wonderware
Manufacturing Engineering Module.
For example, using OLE, you can:
Produce random numbers.
Minimize windows.
Chapter 2
Printing Scripts
You can print scripts individually from the Script Editor, or
you can print all scripts of a specific type using the print
feature in WindowMaker.
Deleting Scripts
The steps to delete a script vary depending on the script type.
See the following sections:
Configuring Application Scripts on page 25.
Chapter 3
Script Triggers
2 In the Condition Type list, click the condition for the script
execution:
Click On Startup to configure a script to execute one
time when WindowViewer is started.
Click While Running to configure a script to execute
periodically while WindowViewer is running.
Click On Shutdown to configure a script to execute one
time when WindowViewer is shut down.
3 If you selected While Running in the previous step, type a
time interval between 1 and 360000 milliseconds in the
Every box. The time interval specifies how often the script
is executed.
4 Type your script in the window.
5 Click OK.
Note If you have configured an action script that uses the same
key or key combination to trigger it, the key script is ignored and
instead the action script is executed.
2 Click to clear the Action check box. The action scripts will
not be executed during run time. If you click the Action
button, the editor opens with the last action script that
you saved for any object.
Chapter 4
Statements
Indentation
Comments
Tag references
Value expressions
Syntax validation
Subroutines
There is no concept of separate subroutines within the same
script, such as Sub procedures in Visual Basic. To structure
a script into multiple subroutines, you must create a custom
QuickFunction for each subroutine. See Chapter 5, Custom
Script Functions.
Statements
A statement can be a value assignment, a function call, or
a control structure.
Indentation
You can indent your script code in any manner. Indents have
no functional relevance.
Comments
To mark text as a comment, enclose it in braces { }.
Comments can span multiple lines.
Tag References
There are several ways to make tag references.
To refer to a tag that is defined in the local Tagname
Dictionary, simply use the tagname.
Value Expressions
Value expressions can include literal values, tag references
and function calls, all linked together by suitable operators.
See Value Assignments and Operators on page 49.
Syntax Validation
When you save a script, the Script Editor automatically
checks it for correct syntax. You can also start this validation
manually by clicking the Validate button. See Validating
Scripts for Correct Syntax on page 21.
FunctionName(Parameters);
ResultsTagname = FunctionName(Parameters);
OtherFunction(FunctionName(Parameters));
CALL QuickFunctionName(Parameters);
ResultsTagname = CALL
QuickFunctionName(Parameters);
Or in a nested function call, using it as a parameter
for a standard function:
OtherFunction(CALL FunctionName(Parameters));
Supported Operators
The following table lists all supported operators. For
information on the use of a specific operator, see the relevant
section.
Addition or Concatenation: +
Adds two numeric operands or concatenates two string
operands.
Valid operands
For addition: Any Integer or Real value
For concatenation: Any Message value
Data type of return value
For addition: Integer or Real
For concatenation: Message
Example
MessageTag = "Setpoint value: " + Text(SetpointTag,
"#.##");
Subtraction or Negation: -
When used with two operands, performs a regular numeric
subtraction. When used with one operand, toggles the sign of
the operand.
Valid operands
Any Integer or Real value
Data type of return value
Integer or Real
Example
In this example, if OriginalValue is 70, InvertedValue
becomes -70. If OriginalValue is -70, InvertedValue becomes
70.
InvertedValue = -OriginalValue;
Multiplication: *
Regular numeric multiplication.
Valid operands
Any Integer or Real value
Data type of return value
Integer or Real
Division: /
Regular numeric division. If you try to divide by 0 at run
time, 0 is returned as the result.
Valid operands
Any Integer or Real value
Data type of return value
Integer or Real
Power: **
Raises the left operand (the base) to the power of the right
operand (the power).
Valid operands
Integer or Real values. It is not possible to combine a base of
0 with a negative power, or a negative base with a fractional
power. In these cases, 0 is returned as the result.
Data type of return value
Integer or Real
Example
8 ** (1/3) returns 2 (the cubic root of 8)
Modulo: MOD
Returns the remainder of the division of two integer values.
Valid operands
Any Integer value.
Data type of return value
Integer
Example
37 MOD 4 returns 1
Complement: ~
Returns the one's complement of an integer value. That is,
converts each zero-bit to a one-bit and vice versa.
Valid operands
Any Integer value.
Data type of return value
Integer
Example
IntTag = IntTag SHL 1; has the following results when
executed repeatedly for an initial tag value of 5:
0 0 0
0 1 0
1 0 0
1 1 1
Bitwise OR: |
Compares the binary representations of two integer numbers,
bit for bit, and returns a result according to the following
table:
0 0 0
0 1 1
1 0 1
1 1 1
Bitwise XOR: ^
Compares the binary representations of two integer numbers,
bit for bit, and returns a result according to the following
table:
0 0 0
0 1 1
1 0 1
1 1 0
p q p AND q
F F F
F T F
T F F
T T T
Valid operands
Any Discrete value.
Data type of return value
Discrete
Logical disjunction: OR
Returns TRUE if at least one of the discrete operands is
TRUE; otherwise, returns FALSE. The truth table for this
operator is as follows:
p q p OR q
F F F
F T T
T F T
T T T
Valid operands
Any Discrete value.
Data type of return value
Discrete
p NOT p
F T
T F
Valid operands
Any Discrete value.
Data type of return value
Discrete
Valid operands
Values of any data type (both values must be of the same
data type).
Data type of return value
Discrete
Data type of
Expression result Result
37 MOD 4 Integer 1
37 MOD 4 == 1 Discrete TRUE
NOT (37 MOD 4 == 1) Discrete FALSE
InfoAppActive(InfoAppTitle("xyz")) == 1 Discrete TRUE if a process
called xyz is running
"Batch " + Text(IntTag, "000") Message Batch 010 if IntTag
has a value of 10
The following table shows some invalid expressions, along
with the reason why they are invalid.
Expression Problem
NOT (37 MOD 4) NOT requires a discrete operand.
NOT 37 MOD 4 == 1 NOT has a higher precedence than the other operators, so the
InTouch HMI tries to apply NOT to the integer value of 37
instead of the discrete result of the comparison.
"Batch " + IntTag When using the + operator to concatenate strings, both
operands must be strings.
This does not work in the InTouch HMI. Each IF opens a new
nesting level and must have a corresponding ENDIF
statement. For a correct version of this example, see Nested
Conditional Structure on page 61.
There is a time limit for loops. See Time Limit for Loop
Execution on page 65.
Note The time limit is checked only at the NEXT statement of the
loop. Therefore, the first iteration of the loop is always executed,
even if it takes longer than the time limit.
Examples of Loops
The following script uses a simple loop and an indirect tag to
re initialize 100 tags (Tag001 to Tag100) with a value of 0.
DIM Counter AS INTEGER;
FOR Counter = 1 TO 100
IndirectInteger.Name = "Tag" + Text(Counter, "000");
IndirectInteger.Value = 0;
NEXT;
The following script uses two nested loops and an indirect tag
to reinitialize 1000 tags (Line01_Tag001 to Line10_Tag100)
with a value of 0.
DIM LineCounter AS INTEGER;
DIM TagCounter AS INTEGER;
FOR LineCounter = 1 TO 10
FOR TagCounter = 1 TO 100
IndirectInteger.Name = "Line" +
Text(LineCounter, "00") + "_Tag" +
Text(TagCounter, "000");
IndirectInteger.Value = 0;
NEXT;
NEXT;
Examples
To declare an Integer variable:
DIM MyLocalIntVar AS Integer;
Chapter 5
About QuickFunctions
QuickFunctions are scripts that you can call from other
scripts and animation links. The main advantage of
QuickFunctions is a reduction in duplicate code.
You can pass values to QuickFunctions, which can use the
values and return results.
QuickFunctions can run asynchronously. Unlike other
scripts, they can run in the background without disrupting
the main program flow. A QuickFunction run
asynchronously can be used for time-consuming operations,
such as SQL database calls.
Arguments (optional)
Configuring QuickFunctions
You can create, modify, or delete QuickFunctions.
To create a QuickFunction
1 In the Scripts pane, right-click QuickFunctions, and then
click New. The QuickFunctions dialog box appears.
To modify a QuickFunction
1 In the Scripts pane, expand QuickFunctions, right-click the
QuickFunction to modify and click Edit. The
QuickFunctions dialog box appears.
2 Make modifications to the script body and click OK.
To delete a QuickFunction
1 Delete all calls to the QuickFunction, close all InTouch
windows, and update the use counts.
2 In the Scripts pane, expand QuickFunctions, right-click the
QuickFunction to delete and click Delete. When a
message appears, click Yes.
Calling QuickFunctions
You can configure scripts and animation links to call
QuickFunctions and to process or show a possible return
value.
A QuickFunction is not called if the parameter values have
not changed. You can use $second as a parameter to insure a
QuickFunction is executed at least every second.
For more information, see Calling Custom Functions
(QuickFunctions) on page 48.
IsAnyAsyncFunctionBusy() Function
Returns a discrete value indicating if any asynchronous
QuickFunctions are running.
Syntax
result = IsAnyAsyncFunctionBusy (timeout)
Arguments
result
The discrete value that indicates if asynchronous
QuickFunctions are running with following meaning:
0 = No asynchronous QuickFunctions are running.
1 = Asynchronous QuickFunctions are running.
timeout
The number of seconds to wait before checking if any
asynchronous QuickFunctions are running. A literal
integer value, integer tagname or integer expression.
Example(s)
Assume you want to connect to several SQL databases using
asynchronous QuickFunctions, and you know that it takes 2
minutes to make those connections.
First, execute the asynchronous QuickFunctions to connect
to the SQL databases.
Next, use the IsAnyAsyncFunctionBusy(120) function in a
QuickScript to allow enough time for SQL to make the
connections before completing the QuickFunction.
If after 2 minutes the connections have not been made and
the asynchronous QuickFunctions are still busy trying to
make the connections, a value of 1 (true) is returned by the
IsAnyAsyncFunctionBusy() function.
You can now show an error message telling the operator that
the SQL connections were unsuccessful.
The following script implements the scenario:
IF IsAnyAsyncFunctionBusy(120) == 1 THEN
SHOW "SQL Connection Error Dialog";
ENDIF;
Chapter 6
Built-In Functions
Mathematical Calculations
The InTouch HMI supports basic mathematical functions
that you can use in scripts and in animation links, such as
functions to:
Round and truncate numbers.
Use To
Abs() Function
Returns the absolute value of a specified number. You can
use this to convert a negative number to a positive number.
Syntax
result = Abs (number)
Parameters
number
A literal number, analog tagname, or numeric expression.
Example(s)
Abs(14) returns 14.
Abs(-7.5) returns 7.5.
Int() Function
Returns the integer less than (or equal to) a specified
number.
Syntax
result = Int (number)
Parameters
number
A literal number, analog tagname, or numeric expression.
Example(s)
Int(4.7) returns 4.
Int(-4.7) returns -5.
Round() Function
Rounds a number to a specified precision. The result is a real
number.
Syntax
result = Round (number, precision)
Parameters
number
A literal number, analog tagname, or numeric expression.
precision
The precision to which the number is rounded. Can be a
literal number, analog tagname, or numeric expression.
Example(s)
Round(4.3, 1) returns 4.
Round(4.3, 0.01) returns 4.30.
Round(4.5, 1) returns 5.
Round(-4.5, 1) returns -4.
Round(106, 5) returns 105.
Round(43.7, 0.5) returns 43.5.
Sgn() Function
Returns the sign of a number. Use it to determine if a
number, tagname, or expression is negative, positive, or zero.
Syntax
result = Sgn (number)
Parameters
number
A literal number, analog tagname, or numeric expression.
Example(s)
Sgn(425) returns 1.
Sgn(0) returns 0.
Sgn(-37.3) returns -1.
Trunc() Function
Returns the truncated value of a number. The truncated
value is the part before a decimal point. Use it to work with
the integer part of a real number.
Syntax
result = Trunc (number)
Parameters
number
A literal number, analog tagname, or numeric expression.
Example(s)
Trunc(4.3) returns 4.
Trunc(-4.3) returns -4.
Note You can also use this function to work with the fractional
part of a number. To return the fractional part of a specified
number use the Trunc() function as follows:
result = number - trunc(number);
Use To
Sin() Function
Returns the sine of a number. For trigonometric functions
the number is the angle in degrees.
Syntax
result = Sin (number)
Parameters
number
A literal number, analog tagname, or numeric expression.
Example(s)
Sin(90) returns 1.
Sin(0) returns 0.
Sin(30) returns 0.5.
100 * Sin (6 * $second) returns a sine wave with an
amplitude of 100 and a period of one minute.
ArcSin() Function
Returns the arc sine of a number. It is the reciprocal function
to the Sin() function. Use the ArcSin() function to calculate
the angle from -90 to 90 degrees whose sine is equal to that
number.
Syntax
result = ArcSin (number)
Parameters
number
A literal number, analog tagname, or numeric expression in
the range of -1 to 1.
Example(s)
ArcSin(1) returns 90.
ArcSin(0) returns 0.
ArcSin(0.5) returns 30.
Cos() Function
Returns the cosine of a number. For trigonometric functions
the number is the angle in degrees.
Syntax
result = Cos (number)
Parameters
number
A literal number, analog tagname, or numeric expression.
Example(s)
Cos(90) returns 0.
Cos(0) returns 1.
Cos(60) returns 0.5.
20 + 50 * Cos(6 * $second) produces a sine wave
oscillating around 20 with an amplitude of 50 and a
period of one minute.
ArcCos() Function
Returns the arcus cosine of a number. It is the reciprocal
function to the Cos() function. Use the ArcCos() function to
calculate the angle from 0 to 180 degrees whose cosine is
equal to that number.
Syntax
result = ArcCos (number)
Parameters
number
A literal number, analog tagname, or numeric expression in
the range of -1 to 1.
Example(s)
ArcCos(1) returns 0.
ArcCos(-0.5) returns 120.
Tan() Function
Returns the tangent of a specified number. For trigonometric
functions the number is the angle in degrees.
Syntax
result = Tan (number)
Parameters
number
A literal number, analog tagname, or numeric expression.
Example(s)
Tan(45) returns 1.
Tan(0) returns 0.
ArcTan() Function
Returns the arcus tangent of a number. It is the reciprocal
function to the Tan() function. Use the ArcTan() function to
calculate the angle whose tangent is equal to that number.
Syntax
result = ArcTan (number)
Parameters
number
A literal number, analog tagname, or numeric expression.
Example(s)
ArcTan(1) returns 45.
ArcTan(0) returns 0.
Calculating Logarithms
In a script, you can use the following functions to run
calculations with logarithms and exponential functions.
Use To
Log() Function
Returns the natural logarithm of a specified positive number.
This is the reciprocal function to the Exp() function.
Syntax
result = Log (number)
Parameters
number
A positive literal number, analog tagname, or numeric
expression.
Example(s)
Log(100) returns 4.6051702.
Log(1) returns 0.
Exp() Function
Returns the exponential of a specified number. This is the
reciprocal function to the Log() function and is equivalent to e
raised to a power.
Syntax
result = Exp (number)
Parameters
number
A literal number, analog tagname, or numeric expression in
the range of -88.72 to 88.72.
Example(s)
Exp(1) returns 2.7182818.
Exp(0) returns 1.
LogN() Function
Returns the logarithm of a positive number to a specified
base. This is the reciprocal function to the base to the power
of the logarithm.
Example(s)
Syntax
result = LogN (number, base)
Parameters
number
A positive literal number, analog tagname, or numeric
expression.
base
A positive literal number, analog tagname, or expression
unequal to 1.
Example(s)
LogN(8,2) returns 3.
LogN(num,btag) returns the logarithm of num to the base
btag.
Syntax
result = Sqrt (number)
Parameters
number
A non-negative literal number, analog tagname, or numeric
expression
Example(s)
Sqrt(36) returns 6.
Sqrt(perftag) returns the square root of the value held by
the tagname perftag.
String Operations
You can use many basic string functions in scripts and
animation links. You can use these functions to:
Return parts of strings.
StringLeft() Function
Returns a specified number of characters from the beginning
of a string.
Syntax
result = StringLeft (string, length)
Parameters
string
A literal text, message tagname, or string expression.
length
The numbers of characters to return. A literal number,
analog tagname, or numeric expression.
Example(s)
StringLeft("Hello World",5) returns Hello.
StringLeft("Hello World",20) returns Hello World.
StringLeft("Hello World",0) returns Hello World.
StringRight() Function
Returns a specified number of characters from the end of a
string.
Syntax
result = StringRight (string, length)
Parameters
string
A literal text, message tagname, or string expression.
length
The number of characters to return. A literal number,
analog tagname, or numeric expression.
Example(s)
StringRight("Hello World",5) returns World.
StringRight("Hello World",20) returns Hello World.
StringRight("Hello World",0) returns Hello World.
StringMid() Function
Returns a part of a string. You can specify the starting point
and how many characters to return.
Syntax
result = StringMid (string, startpos, length)
Parameters
string
A literal text, message tagname, or string expression.
startpos
The starting position in the string. A literal number, analog
tagname, or numeric expression.
length
The number of characters to return. A literal number,
analog tagname, or numeric expression.
Example(s)
StringMid("Hello World",5,4) returns "o Wo.
StringMid("Hello World",7,50) returns World.
StringMid("Hello World",4,0) returns lo World.
StringLower() Function
Returns the lowercase equivalent of a string.
Syntax
result = StringLower (string)
Parameters
string
A literal text, message tagname, or string expression.
Example(s)
StringLower("TURBINE") returns turbine.
StringLower("The Value Is 22.2") returns the value is
22.2.
mtag = StringLower(mtag) converts the message value of
mtag to lowercase.
StringUpper() Function
Returns the uppercase equivalent of a string.
Syntax
result = StringUpper (string)
Parameters
string
A literal text, message tagname, or string expression.
Example(s)
StringUpper("abcd") returns ABCD.
StringUpper("The Value Is 22.2") returns THE
VALUE IS 22.2.
mtag = StringUpper(mtag) converts the message value of
mtag to uppercase.
StringTrim() Function
Rrim leading and trailing spaces (blanks) from strings. You
can use this to remove unwanted spaces from a string, for
example after a user input.
Syntax
result = StringTrim (string, trimtype)
Parameters
string
A literal text, message tagname, or string expression.
trimtype
A literal value, analog tagname, or numeric expression that
determines which spaces to remove:
1 = Leading spaces.
2 = Trailing spaces.
3 = Leading and trailing spaces.
Remarks
This function removes all leading and trailing white spaces
from a string. White spaces are spaces (ASCII 0x20) and
control characters in the range from ASCII 0x09 to 0x0D.
Example(s)
To remove all spaces in a message tag, mtag, with an action
script, use the following script:
DIM i AS INTEGER;
DIM tmp AS MESSAGE;
mtag = StringTrim(mtag,3); {mtag is trimmed}
FOR i = 1 TO StringLen(mtag) {run variable i over
the characters of mtag}
IF StringMid(mtag, i, 1)<>" " THEN {i-th
character is not space} tmp = tmp +
StringMid(mtag, i, 1); {
add that character to tmp}
ENDIF;
NEXT;
mtag = tmp; {pass tmp back to mtag}.
Other examples:
StringTrim(" Joe ",1) returns Joe .
StringTrim(" Joe ",2) returns Joe.
This script removes all spaces from the left and the right of
the mtag value:
mtag = StringTrim(mtag,3)
StringChar() Function
Returns a single character corresponding to a specified
ASCII code.
Syntax
result = StringChar (ASCIICode)
Parameters
ASCIICode
A literal number, numeric tagname, or numeric expression
in the range of 0 to 255.
Remarks
This function is very useful for passing control characters to
external devices (such as printers or modems) or double
quotes to SQL queries.
Example(s)
StringChar(65) returns "A".
StringASCII() Function
Returns the ASCII code of the first character of a string.
Syntax
result = StringASCII (string)
Parameters
string
A literal string, message tagname, or string expression.
Example(s)
StringASCII("A") returns 65.
StringASCII("hello world") returns 104.
Use To
StringInString() Function
Returns the first position of a specified string in another
string.
Syntax
result = StringInString (string, searchfor, startpos,
casesens)
Parameters
string
This is the string to searched. A literal string, message
tagname, or string expression.
searchfor
This is the string that is to be searched for. A literal string,
message tagname, or string expression.
startpos
This is the starting position in string of the search. A literal
value, numeric tagname, or numeric expression.
casesens
Determines whether the search is case sensitive. Can be 0
or 1, discrete tagname, or Boolean expression.
0 - search is not case sensitive (uppercase and lowercase
are considered the same).
1 - search is case sensitive (uppercase and lowercase are
considered to be different).
Remarks
Use this function to determine if a certain string is contained
in a message tag. You can specify the starting position for the
search and whether the letter case is to be respected.
Example(s)
This script returns 5because the first M in MTX is in
the fifth position of the string:
StringInString("DBO MTX-010","MTX",1,0)
StringReplace() Function
Searches for a string within another string and, if found,
replaces it with yet another string. You can specify:
Case-sensitivity - This determines if uppercase letters
and lowercase letters are to be treated as identical letters
or not.
Note This function does not support double byte character sets.
Syntax
result = StringReplace (string, searchfor, replacewith,
casesens, numtoreplace, matchwholewords)
Parameters
string
The string to search within. A literal string, message
tagname, or string expression.
searchfor
The string that is to be searched for. A literal string,
message tagname, or string expression.
replacewith
The string that is used as replacement. A literal string,
message tagname, or string expression.
casesens
Determines whether the search is case sensitive. Can be 0
or 1, discrete tagname or Boolean expression.
0 - search is not case sensitive (uppercase and lowercase
are considered the same)
1 - search is case sensitive (uppercase and lowercase are
considered to be different)
numtoreplace
The number of replacements to make. Set it to -1 to replace
all occurrences of the found search string. A literal integer
value, integer tagname, or integer expression.
matchwholewords
Determines whether only whole words are matched. Can be
0 or 1, discrete tagname, or Boolean expression.
0 - the function looks for the search string characters
anywhere in the string
1 - only whole words are matched
Example(s)
This statement replaces only the first occurrence and returns
"MTY 030 MTX".
StringReplace("MTX 030 MTX","MTX","MTY",0,1,0)
StringLen() Function
Returns the length of a specified string, including non-visible
characters.
Syntax
result = StringLen (string)
Parameters
string
A literal string, message tagname, or string expression.
Example(s)
StringLen("Twelve percent") returns 14.
StringLen("12%") returns 3.
StringLen("The end." + StringChar(13)) returns 9.
StringTest() Function
Tests whether a first character of a string is in a certain
group of characters.
Syntax
result = StringTest (string, group)
Parameters
string
A literal string, message tagname, or string expression.
group
The number of the group to test the character against. A
literal value, integer tagname, or integer expression in the
range of 1 to 11.
1 - alphanumeric characters (A-Z, a-z, 0-9)
2 - numeric characters (0-9)
3 - alphabetic characters (A-Z, a-z)
4 - uppercase characters (A-Z)
5 - lowercase characters (a-z)
6 - punctuation characters (ASCII 0x21 - 0x2F), for
example !,@,#,$,%,^,&,* and so on
7 - ASCII characters (ASCII 0x00 - 0x7F)
8 - Hexadecimal characters (0-9, A-F, a-f)
9 - Printable characters (ASCII 0x20 - 0x7E)
10 - Control characters (ASCII 0x00 - 0x1F and 0x7F)
11 - White space characters (ASCII 0x09 - 0x0D and
0x20)
Example(s)
This string returns a 1because A is an alphanumeric
character:
StringTest("ACB123",1)
Comparing Strings
In a script, you can use the StringCompare(),
StringCompareNoCase() and StringCompareEncrypted()
functions to compare two strings.
Use To
StringCompare() Function
Compares two strings with each other and returns a Boolean
result (0 = strings are equal). The case of each letter is
respected so that, for example, A is considered not equal to
a.
Syntax
result = StringCompare (string1, string2)
Parameters
string1
A literal string, message tagname, or string expression.
string2
A literal string, message tagname, or string expression.
Example(s)
StringCompare ("Apple","Apple") returns 0.
StringCompare ("Apple","apple") returns 1.
StringCompareNoCase() Function
Compares two strings with each other and returns an integer
result. The case of each letter is not respected so that, for
example, A is considered equal to a.
The integer result returns:
0 if both strings are identical (ignoring case).
Syntax
result = StringCompareNoCase (string1, string2)
Parameters
string1
A literal string, message tagname, or string expression.
string2
A literal string, message tagname, or string expression.
Example(s)
This string returns 0because the strings are considered
identical:
StringCompareNoCase("Apple","apple")
StringCompareEncrypted() Function
Compares an encrypted string with an unencrypted string
and returns a Boolean result. You can use this function for
password verification. For more information on password
encryption, see Enabling String Input in Chapter 4,
Animating Objects, in the InTouch HMI Visualization
Guide.
Syntax
result = StringCompareEncrypted (plain, encrypted)
Parameters
plain
A literal string, message tagname, or string expression.
encrypted
An encrypted message tagname.
Example(s)
This script returns 1 when the plain text and the encrypted
text are identical, otherwise it returns 0. Passwd is a
message tag containing a value from an encrypted user input.
PlainTxt is a message tag against which the user input is to
be compared.
StringCompareEncrypted(PlainTxt, Passwd)
StringToIntg() Function
StringToReal() Function
DText() Function
Text() Function
The Text() function returns the value of a number as a string
according to a specified format. You may want to do this to
format a value in a certain way or to combine the result with
other string values for further processing.
Syntax
result = Text (number, format)
Parameters
number
A literal numeric value, analog tagname, or numeric
expression.
format
Use #, 0, ., or ,.
Use # to represent a digit, . to represent the decimal
separator, 0 to force a leading zero, and , to insert a
comma.
If you use a zero in the format, it must be followed by zeros.
All places to the right of the decimal point must always be
zeros. For example, 000.00 is correct, while #0#0.0# is
incorrect.
The function rounds the value, if necessary. A literal string,
message tagname, or string expression.
Example(s)
Text(66,"#.00") returns 66.00.
Text (1234,"#") returns 1234.
Text (123.4, "#,##0.0") returns 123.4.
Text (12.3, "0,000.0") returns 0,012.3.
Text(3.57,"#.#") returns 3.6.
StringFromIntg() Function
In a script, you can convert an integer value to a string value
by using the StringFromIntg() function.
This function returns the string value of an integer value and
performs a base conversion at the same time. This can be
used, for example, to show text together with integer values
or for converting integer values to hexadecimal numbers.
Syntax
result = StringFromIntg (number, base)
Parameters
number
A literal integer value, integer tagname, or integer
expression.
base
The base of the conversion. This is used for converting the
value to a different base, such as binary (2), decimal (10) or
hexadecimal (16). A literal integer value, integer tagname,
or integer expression.
Example(s)
StringFromIntg(26,2) returns 11010 (binary.
StringFromIntg(26,8) returns 32because
(base 8: 26 = 3*8 + 2)
StringFromIntg(26,10) returns 26 (decimal).
StringFromIntg(26,16) returns 1A (hexadecimal).
StringFromReal() Function
In a script, you can convert an real value to a string value by
using the StringFromReal() function.
You can also specify to:
Round the value to a specified precision.
This can be used, for example, to show text together with real
values or for showing real numbers with exponential
notation.
Syntax
result = StringFromReal (number, precision, type)
Parameters
number
A literal value, analog tagname, or numeric expression.
precision
Specifies how many decimal places are to be used. A literal
integer value, integer tagname, or integer expression.
type
Specifies if the exponential notation is to be used. A literal
string, message tagname, or string expression.
f - Use floating point notation.
e - Use exponential notation with lowercase e.
E - Use exponential notation with uppercase E.
Example(s)
StringFromReal(263.355, 2,"f") returns 263.36.
StringFromReal(263.355, 2,"e") returns 2.63e2.
StringFromReal(263.55, 3,"E") returns 2.636E2.
StringFromReal(0.5723, 2,"E") returns 5.72E-1.
StringToIntg() Function
In a script, you can convert a value contained in a string to an
integer value by using the StringToIntg() function.
You can use this to read a value contained at the beginning of
a string into an integer tag for further mathematical
operations.
Syntax
result = StringToIntg (string)
Parameters
string
A literal string, message tagname, or string expression.
Remarks
The function checks the first character of the string. If it is a
number, it attempts to read this and the following characters
as an integer number until a non-numeric character is met.
The function ignores leading spaces in the string.
Example(s)
StringToIntg("ABCD") returns 0.
StringToIntg("13.4 mbar") returns 13.
StringToIntg("Pressure is 13.4") returns 0.
StringToReal() Function
In a script, you can convert a value contained in a string to a
real value by using the StringToReal() function.
You can use this to read a value contained at the beginning of
a string into a real tag for further mathematical operations.
Syntax
result = StringToReal (string)
Parameters
string
A literal string, message tagname, or string expression.
Remarks
The function checks the first character of the string. If it is a
number, it attempts to read this and the following characters
as a real number until a non-numeric character is met. The
function ignores leading spaces in the string.
To extract the first real number from a string (message tag
mtag) that is not at the beginning and store it in the real tag
rtag1, use the following script:
DIM i AS INTEGER;
DIM tmp AS INTEGER;
FOR i = 1 TO StringLen(mtag) {run variable i over the characters of mtag}
tmp = StringASCII(StringMid(mtag, i, 1)) - 48; {detect ASCII value}
IF (tmp>=0 AND tmp<10) THEN {if ASCII value represented "0" - "9"}
rtag = StringToReal(StringMid(mtag, i, 0)); {set rtag to value from that
position and exit loop}
EXIT FOR;
ENDIF;
NEXT;
Example(s)
StringToReal("ABCD") returns 0.
StringToReal("13.4 mbar") returns 13.4.
StringToReal("Pressure is 13.4") returns 0.
DText() Function
In a script, you can convert a Boolean value to a string value
by using the DText() function. You can use this function to
use customized message display animation links.
This function returns different string values depending on
the value of a Boolean value.
Syntax
result = Dtext (Boolean, stringtrue, stringfalse)
Parameters
Boolean
A literal Boolean value, discrete tagname, or Boolean
expression.
stringtrue
The string to be returned if Boolean is true. A literal string
value, message tagname, or string expression.
stringfalse
The string to be returned if Boolean is false. A literal string
value, message tagname, or string expression.
Example(s)
This script returns Running if the discrete tagname switch
is TRUE, otherwise it returns Stopped.
DText(switch,"Running","Stopped")
OpenWindowList() Function
Shows a dialog box containing the list of InTouch windows
that are currently open.
You can not use this function in an animation link.
Syntax
[result = ]OpenWindowsList();
Example(s)
This script opens the Open Windows List dialog box and shows
all InTouch windows that are currently open.
OpenWindowsList()
WindowState() Function
Checks if an InTouch window is open, is closed, or does not
exist.
Syntax
result = WindowState (windowname)
Parameters
windowname
Name of the window. A literal string value, message
tagname, or string expression.
Return Value
An integer value with the following meaning:
0 - InTouch window exists and is currently closed
1 - InTouch window exists and is currently open
2 - InTouch window does not exist
Example(s)
This script returns 0, if the InTouch window Main exists, but
is not open.
WindowState("Main")
Use To
Show() Function
Opens an InTouch window at its default position.
Syntax
Show windowname
Parameters
windowname
The name of the window to be opened. A literal string
value, message tagname, or string expression.
Example(s)
This script opens the window Main.
Show "Main";
This script opens the window with the name that is stored in
the wname message tag.
Show wname;
ShowAt() Function
Opens an InTouch window at a specified position. It also can
move an already open InTouch window to a specified position.
The position is the center point of the window.
Note The window will not be centered if one of its edges is off-
screen.
Syntax
ShowAt (windowname, xpos, ypos)
Parameters
windowname
The name of the window to be opened or moved.
xpos
The horizontal position in pixels that the window center is
to be moved to. A literal value, analog tagname, or numeric
expression.
ypos
The vertical position in pixels that the window center is to
be moved to. A literal value, analog tagname, or numeric
expression.
Example(s)
This script opens the window Main so that it is centered at
the position x:450, y:130.
ShowAt("Main",450,130);
ShowHome() Function
Opens the InTouch window(s) you specified in the Home
Windows tab in the WindowViewer Properties dialog box and
closes any other windows.
Syntax
ShowHome;
ShowTopLeftAt() Function
Opens an InTouch window at a specified position. Can also be
used to move an open window.
Syntax
ShowTopLeftAt (windowname, xpos, ypos)
Parameters
The name of the window to be opened or moved.
xpos
The horizontal position in pixels that the window left edge
is to be moved to. A literal value, analog tagname, or
numeric expression.
ypos
The vertical position in pixels that the window top edge is
to be moved to. A literal value, analog tagname, or numeric
expression.
Example(s)
This script opens the window Main so that its top left corner
is positioned at x:450, y:130.
ShowTopLeftAt("Main",450,130);
WWMoveWindow() Function
Moves and resizes an opened InTouch window to a specified
position and specified size. The new position and new size
apply temporarily while the specified window is open.
Syntax
WWMoveWindow (windowname, xpos, ypos, xsize, ysize)
Parameters
windowname
The name of the window to be opened or moved.
xpos
The horizontal position in pixels that the window left edge
is to be moved to. A literal value, analog tagname, or
numeric expression.
ypos
The vertical position in pixels that the window top edge is to
be moved to. A literal value, analog tagname, or numeric
expression.
xsize
The horizontal size in pixels for the specified window. A
literal value, analog tagname, or numeric expression.
ysize
The vertical size in pixels for the specified window. A literal
value, analog tagname, or numeric expression.
Use To
Hide() Function
Hides (closes) an InTouch window.
Syntax
Hide windowname;
Parameters
windowname
The name of the window to be hidden. A literal string value,
message tagname, or string expression.
Example(s)
This script hides the window called UserConfirmation.
Hide "UserConfirmation";
HideSelf() Function
Hides (closes) the currently active InTouch window.
Syntax
HideSelf;
Example(s)
HideSelf;
ChangeWindowColor() Function
Changes the color of an open InTouch window and returns a
result code.
Syntax
Result = ChangeWindowColor (windowname, rValue, gValue,
bValue)
Parameters
windowname
The name of the window for which the color is to be
changed. A literal string value, message tagname, or string
expression.
rValue
The intensity of the red color. A literal integer value,
integer tagname, or integer expression in the range of 0 to
255.
gValue
The intensity of the green color. A literal integer value,
integer tagname, or integer expression in the range of 0 to
255.
bValue
The intensity of the blue color. A literal integer value,
integer tagname, or integer expression in the range of 0 to
255.
Return Value
A value with the following meaning:
0 - Failure, window is not defined or RGB value is out of
range.
1 - Success.
2 - Failure. The window exists, but it is not open.
SetWindowPrinter() Function
At run time, you can set the printer you want to use with the
SetWindowPrinter() function.
Note The printer set with this function is also the printer that is
used with the PrintHT() function.
Syntax
SetWindowPrinter (printername)
Parameters
printername
The name of the printer, either as network share or as
printer name as it appears in its property window. A literal
string value, message tagname, or string expression.
Example(s)
In this example, PRTSRV1 is the node name and PRT22SW1
is the share name given to the printer.
SetWindowPrinter("\\PRTSRV1\PRT22SW1");
PrintWindow() Function
In a script, you can print an InTouch window with the
PrintWindow() function.
Syntax
[result = ] PrintWindow (windowname, leftmargin,
topmargin, width, height, options);
Parameters
windowname
The name of the window to be printed. A literal string
value, message tagname, or string expression.
leftmargin
Left margin offset (in inches). A literal numeric value,
analog tagname, or numeric expression.
topmargin
Top margin offset (in inches). A literal numeric value,
analog tagname, or numeric expression.
width
Printout width (in inches). Set this value to 0 for largest
aspect ratio. A literal numeric value, analog tagname, or
numeric expression.
height
Printout height (in inches). Set this value to 0 for largest
aspect ratio. A literal numeric value, analog tagname, or
numeric expression.
options
A discrete value, 0 or 1, that is only used if width and height
are 0. A literal Boolean value, discrete tagname or Boolean
expression. Set to:
1 - The window is printed with the largest aspect ratio
that is an integer multiple of the window size.
0 - The window is printed with the largest aspect ratio
that fits on the page.
Return Value
0 - Printing job is not queued successfully, or window
does not exist
1 - Printing job is queued successfully
PrintScreen() Function
You can write a script to print the entire WindowViewer
screen with the PrintScreen() function.
Syntax
PrintScreen (ScreenOption, PrintOption)
Parameters
ScreenOption
Determines how much of the WindowViewer screen is to be
printed. A literal integer value, integer tagname, or integer
expression.
1 - Print the client area, no menus (default)
2 - Print the entire window area, including menus
PrintOption
Determines how the printed image is to be stretched to fit
on the printout.
1 - Best Fit:
image is stretched so that it fits either horizontally or
vertically on the printout without changing the aspect
ratio. (default)
2 - Vertical Fit:
image is stretched so that it fits vertically on the
printout without changing the aspect ratio. The image
may be cut off horizontally.
3 - Horizontal Fit:
image is stretched so that it fits horizontally on the
printout without changing the aspect ratio. The image
may be cut off vertically.
4 - Stretch to Page:
image is stretched so that it fits horizontally and
vertically on the printout. The aspect ratio may
change but the image is not truncated.
Invalid options, including 0, default to Best Fit.
Example(s)
This script sends a printout of the current entire
WindowViewer screen area without menus to the printer
queue. The printout contains the screen area stretched so
that it fills the printout dimensions.
PrintScreen(1,4);
PrintHT() Function
In a script, you can create a button to print the historical
trend by linking it to an action QuickScript that executes the
PrintHT QuickScript function.
Use the PrintWindow() function instead of the PrintHT()
function when you want to print the entire window instead of
just the trend chart.
Note Printing the Historical Trend using the Print option or the
PrintHT() function will not print the x & y values. Use
PrintWindow() or PrintScreen() to print the x & y values.
Syntax
PrintHT(HistTrendTagname);
Parameter
HistTrendTagname
The history trend tag name for the history trend to be
printed.
Use To
Syntax
$Msec
Data Type
Integer (read only)
DateTimeGMT() Function
Returns the number of days (including fractions of a day)
that have passed since the 1st January 1970 in Coordinated
Universal Time (UTC).
Syntax
result = DateTimeGMT();
Return Value
Number of days since 1st January 1970 in UTC. A literal real
value.
Example(s)
This script returns the current date/time in UTC.
StringFromTime(DateTimeGMT() * 86400.0, 3);
Use To
UTCDateTime() Function
Returns the UTC time, the UTC date and time, or the local
time zone.
Syntax
result = UTCDateTime (format)
Parameters
format
Determines what content is returned. A literal string value,
message tagname, or string expression with the following
possible values:
UTC_SHORT - the function returns the UTC time
UTC_LONG - the function returns the UTC date and
time
UTC_LOCAL - the function returns the name of the time
zone as set in the time zone settings of the local operating
system
Any other values return the UTC date and time in default
format (ddd mm dd hh:mm:ss yyyy).
Example(s)
At 09:24 AM Monday January 6th 2003 in the Pacific time
zone, the UTCDateTime() function returns the following.
This script returns 17:24:05
UTCDateTime("UTC_SHORT")
Use To
StringFromTime() Function
Converts a timestamp given in UTC time to local time and
returns the result as a string. This function takes Daylight
Saving Time into account.
Syntax
result = StringFromTime (timestamp, format)
Parameters
timestamp
The number of seconds that have passed since midnight of
the 1st January 1970 in the UTC time zone. A literal
integer value, integer tagname, or integer expression.
format
Determines how the string result is shown. A literal integer
value, integer tagname, or integer expression in the range
from 1 to 5 with following meaning:
1 - Shows the date according to the format set in the
Regional Settings of the local operating system
2 - Shows the time according to the format set in the
Regional Settings of the local operating system
3 - Shows the date and time as a 24 character string (ddd
mmm dd hh:mm:ss yyyy)
4 - Shows the day of the week in short form
5 - Shows the day of the week in long form
Example(s)
This example assumes that the time zone on the local node is
Pacific Standard Time (PST, UTC-0800). The UTC time
passed to the function is 12:00:00 AM on Friday, January 2,
1970. Since PST is 8 hours behind UTC, the function returns
the following results.
This script returns 1/1/70
StringFromTime(86400,1)
wwStringFromTime() Function
Converts a timestamp given in local time to UTC time and
returns the result as a string. This function takes Daylight
Saving Time into account.
Syntax
result = wwStringFromTime (timestamp, format)
Parameters
timestamp
The number of seconds that have passed since midnight of
January 1, 1970 in the local time zone. A literal integer
value, integer tagname, or integer expression.
format
Determines how the string result is shown. A literal integer
value, integer tagname, or integer expression in the range
from 1 to 5 with following meaning:
1 - Shows the date according to the format set in the
Regional Settings of the local operating system
2 - Shows the time according to the format set in the
Regional Settings of the local operating system
3 - Shows the date and time as a 24 character string (ddd
mmm dd hh:mm:ss yyyy)
4 - Shows the day of the week in short form
5 - Shows the day of the week in long form
Example(s)
This example assumes that the time zone on the local node is
Pacific Standard Time (PST, UTC-0800). The local time
passed to the function is 04:00:00 PM on Thursday, January
1, 1970. Since PST is 8 hours behind UTC, the function
returns the following results.
This script returns 1/2/70
wwStringFromTime(57600,1)
StringFromTimeLocal() Function
Converts a timestamp to a time and returns the result as a
string.
Syntax
result = StringFromTimeLocal (timestamp, format)
Parameters
timestamp
The number of seconds that have passed since midnight of
January 1, 1970. A literal integer value, integer tagname,
or integer expression.
format
Determines how the string result is shown. A literal integer
value, integer tagname, or integer expression in the range
from 1 to 5 with following meaning:
1 - Shows the date according to the format set in the
Regional Settings of the local operating system
2 - Shows the time according to the format set in the
Regional Settings of the local operating system
3 - Shows the date and time as a 24 character string (ddd
mmm dd hh:mm:ss yyyy)
4 - Shows the day of the week in short form
5 - Shows the day of the week in long form
Example(s)
This script returns 1/2/70
StringFromTimeLocal(86400,1)
wwIsDaylightSaving() Function
Returns whether daylight savings time is currently active.
Syntax
result = wwIsDaylightSaving()
Return Value
A Boolean value with following meaning:
0 - Daylight savings time is not active.
1 - Daylight savings time is active.
Note You need to know the path and file name of the application.
If the application is in a directory that is part of the Windows PATH
environment variable, you only need to pass the file name
(without path).
Example(s)
This script starts Microsoft Calculator.
StartApp "calc"
InfoAppTitle() Function
Returns the application title or Windows task list name of a
specified application that is running.
Syntax
result = InfoAppTitle (appname)
Parameters
appname
Name of the application without the .exe extension. A
literal string value, message tagname, or string expression.
Example(s)
This script returns Calculator
InfoAppTitle("calc")
InfoAppActive() Function
Returns the running status of an application.
Syntax
result = InfoAppActive (apptitle)
Parameters
apptitle
The application title or Windows task list of the application
for which you want to query the running status. A literal
string value, message tagname, or string expression.
Return Value
A Boolean value indicating:
0 - The application is not running
1 - The application is running
Example(s)
This script queries for the application Notepad, and if it is
already running, activates it. Otherwise it launches a new
instance of Notepad. This way launching Notepad multiple
times is avoided.
IF InfoAppActive(InfoAppTitle("Notepad"))==1
THEN
ActivateApp InfoAppTitle( "Notepad" );
ELSE
StartApp "Notepad";
ENDIF;
ActivateApp Function
Activates an already running Windows application.
Syntax
ActivateApp apptitle;
Parameters
apptitle
The application title or Windows task list name of the
running application you want to activate.
Example(s)
This script checks if a command prompt window is already
open, and if so, activates it. Otherwise it starts the command
prompt window.
IF InfoAppActive( InfoAppTitle("cmd")) == 1 THEN
ActivateApp InfoAppTitle("cmd");
ELSE
StartApp "cmd";
ENDIF;
SendKeys Function
Simulates a sequence of key strokes.
Syntax
SendKeys sequence;
Parameters
sequence
The sequence of keys strokes to be simulated. A literal
string value, message tagname, or string expression.
In addition to regular characters on the keyboard (such as
alphanumeric characters) you can also specify control keys
as a code:
{BACKSPACE} - Simulates the Backspace key
{BREAK} - Simulates the Break key
{CAPSLOCK} - Simulates the Caps Lock key
{DELETE} - Simulates the Delete key (or {DEL})
{DOWN} - Simulates Arrow Down key
{END} - Simulates the End key
{ENTER} - Simulates the Enter key (or ~)
{ESCAPE} - Simulates the ESC key (or {ESC})
{F1} .. {F12} - Simulate the F1 .. F12 keys
{HOME} - Simulates the Home key
{INSERT} - Simulates the Insert key
{LEFT} - Simulates the Arrow Left key
{NUMLOCK} - Simulates the Num Lock key
{PGDN} - Simulates the Page Down Key
{PGUP} - Simulates the Page Up key
{PRTSC} - Simulates the Print Screen key
{RIGHT} - Simulates the Arrow Right key
{TAB} - Simulates the Tab key
{UP} - Simulates the Up key
+ - Simulates the Shift key
use with parenthesis surrounding the key(s) you
want to press in combination with the Shift
key.
^ - Simulates the Ctrl key
use with parenthesis surrounding the key(s) you
want to press in combination with the Ctrl key.
% - Simulates the Alt key
use with parenthesis surrounding the key(s) you
want to press in combination with the Alt key.
Remarks
Use the StartApp and/or ActivateApp() commands to activate
another application before sending simulated keys strokes to
it.
Example(s)
This script simulates pressing the B key.
SendKeys "b";
WWControl() Function
Restores, minimizes, maximizes, or closes a Windows
application.
Syntax
WWControl (apptitle, control);
Parameters
apptitle
The application title or Windows task list name of the
running application you want to restore, minimize,
maximize or close. A literal string value, message tagname,
or string expression.
control
Determines the action you want to take on the specified
Windows application. A literal string value, message
tagname, or string expression with following values:
Restore - activates and shows the application window
Minimize - activates and minimizes the application
window
Maximize - activates and maximizes the application
window
Close - closes the application
Remarks
To use this function in Windows Server 2003, you must be a
member of the Administrators group, the Performance Log
Users group, or the Performance Monitor Users group on the
local computer or you must have been delegated the
appropriate authority to write to the registry.
Example(s)
This script restores the calculator application if it is already
running.
WWControl ("Calculator","Restore");
Use To
WWExecute() Function
Sends a command to an application, executes it, and returns
a status result. You can use it to have Excel to run a macro.
Syntax
Result = WWExecute (appname, topic, command)
Parameters
appname
The name of the application the command is sent to. A
literal string value, message tagname, or string expression.
topic
The name of the topic within the application that the
command is sent to. A literal string value, message
tagname, or string expression.
command
The command to be sent. A literal string value, message
tagname, or string expression.
Return Value
A value of-1, 0, or 1 indicating the following:
-1 - command not executed successfully. Possible causes are
the application not running, the topic does not exist or
the command contains an error.
0 - command not executed successfully because the
application is busy.
1 - command executed successfully.
Example(s)
This script instructs Microsoft Excel to execute the macro
Macro1 by sending the command [Run(Macro1,0)] to Excel.
Macro="Macro1";
Command="[Run(" + StringChar(34) + Macro +
StringChar(34) + ",0)]";
WWExecute("excel","system",Command);
WWRequest() Function
Reads data from an item of an application. You can use it, for
example, to read the value of a spreadsheet cell in Microsoft
Excel.
Syntax
Result = WWRequest(appname, topic, item, messagetag)
Parameters
appname
The name of the application. A literal string value, message
tagname, or string expression.
topic
The name of the topic within the application. A literal
string value, message tagname, or string expression.
item
The name of the item belonging to the topic and application.
A literal string value, message tagname, or string
expression.
messagetag
A message tagname to retrieve the value of the item. The
message tagname value can be converted into an integer or
real value by using the StringToIntg() or StringToReal()
functions.
Return Value
A value of -1, 0, or 1 indicating the following:
-1 - data not read successfully. Possible causes are the
application not running or the topic or item do not exist.
0 - data not read successfully because the application is
busy.
1 - data read successfully.
Example(s)
This script reads the value contained in Microsoft Excel book
Book1.xls, sheet Sheet1 in Row 1, Column 1 to the message
tagname MTag and puts the value in the real tagname
CellValue.
Result = WWRequest("excel","[Book1.xls]sheet1",
"r1c1",Mtag);
CellValue=StringToReal(MTag);
WWPoke() Function
Writes data to an item of an application. You can use it, for
example, to write the value into a spreadsheet cell in Excel.
Syntax
result = WWPoke (appname, topic, item, string)
Parameters
appname
The name of the application. A literal string value, message
tagname, or string expression.
topic
The name of the topic within the application. A literal
string value, message tagname, or string expression.
item
The item name belonging to the topic and application. A
literal string value, message tagname, or string expression.
string
The value to be written. A literal string value, message
tagname, or string expression. You can use the
StringFromIntg(), StringFromReal() or Text() functions to
convert the value of an integer or real tagname to a message
tagname.
Return Value
A value of-1, 0, or 1 indicating the following:
-1 - data not written successfully. Possible causes are the
application not running or the topic or item do not exist.
0 - data not written successfully because the application is
busy.
1 - data written successfully.
Remarks
Do not use the WWPoke() or WWRequest() function to read
and write data between InTouch applications on different
nodes or sessions. To read and write data between InTouch
applications, use Access Names instead. See Setting Up
Access Names in Chapter 5, Data Access with I/O, in the
InTouch HMI Data Management Guide.
Example(s)
This script puts the value of the real tagname CellValue in
the message tagname Mtag and writes the value to the
spreadsheet cell Row 1, Column 1 of sheet Sheet1 in Microsoft
Excel book Book1.xls.
MTag = Text(CellValue,"0");
Result = WWPoke("excel","[Book1.xls]sheet1",
"r1c1",Mtag);
Use To
Managing Files
In a script, you can copy, delete or move files.
FileCopy() Function
Copies a source file to a destination file and returns a status
result. This function may take a longer time to execute and is
executed in multiple stages:
1 FileCopy() function is called and an immediate result is
returned, indicating success or failure of the file copy
initialization.
2 FileCopy() function executes the copy procedure in the
background, and InTouch scripting continues execution
while the file copying is in progress. You can monitor the
file copying progress with an integer tag.
3 FileCopy() function returns a file copy result, indicating
success or failure of the file copy procedure.
If the destination folder is not available (i.e. another
computer on the network), the function waits for up to 10
seconds to time out, and then posts a message in the Logger.
Syntax
result = FileCopy (sourcefile, destfile, progresstag)
Parameters
sourcefile
Full path and file name of the file to be copied. A literal
string value, message tagname, or string expression. You
can use the wildcard characters (* and ?) in this parameter
to copy just files matching a specified criteria. The path
name can also be a UNC path name.
destfile
Full path and file name (or just path name) of the
destination. A literal string value, message tagname, or
string expression. The path name can also be a UNC path.
progresstag
Name of an integer tag enclosed in double quotes that will
contain a value indicating the file copy progress. A literal
string value, message tagname (such as a message tag
containing the value IntTag.Name) or string expression.
The values have following meaning:
0 - FileCopy() procedure is still in progress.
1 - FileCopy() procedure has completed successfully.
-1 - FileCopy() procedure completed with errors.
Return Value
A value of -1, 0, or 1 indicating the following:
1 - FileCopy() function successfully called.
0 - Error when calling the FileCopy() function because
another FileCopy() procedure is already in progress.
-1 - Error when calling the FileCopy() function because of a
non-existent source file or the destination is read only.
Example(s)
This script copies the file c:\MyData\output.log to the
directory d:\archive and renames the file to output.txt. The
progress of the file copy is written to the integer tag Monitor.
Status=FileCopy("c:\MyData\output.log","d:\archive\outp
ut.txt","Monitor");
This script copies all files with file ending .txt in the c:\ root
directory to the destination directory c:\Backup.
Status=FileCopy("c:\*.txt", "c:\Backup", "Monitor");
This script copies a file whose full path and file name is
contained in the message tag LogFile to the destination
directory c:\results\ and renames it to logxxx.txt where xxx
is a timestamp.
Status=FileCopy(LogFile, "c:\results\log" + $DateString
+ $TimeString + ".txt", "Monitor");
FileDelete() Function
Deletes an individual file.
Syntax
result = FileDelete (filename)
Parameters
filename
The path name and file name of the file to delete. A literal
string value, message tagname, or string expression. UNC
path names are supported.
Remarks
Do not use the wildcard characters (* and ?) with the
FileDelete() function and do not use the FileDelete() function
in asynchronous QuickFunctions.
The FileDelete() function does not delete directories.
Return Value
A value indicating success or failure of the file deletion:
1 - file is deleted successfully
0 - file is not deleted successfully. Possible causes are
attempts to delete a read only or a non-existent file.
Example(s)
This script deletes the file c:\Data.txt and returns 1 if the file
was found and deleted successfully.
Status=FileDelete("c:\Data.txt");
FileMove() Function
Moves a source file to a destination file and returns a status
result. It can be also used to rename a file. This function may
take a longer time to execute and executes in multiple stages:
1 FileMove() function is called and an immediate result is
returned, indicating success or failure of the file move
initialization.
2 FileMove() function executes the move procedure in the
background, InTouch scripting continues execution while
the file moving is in progress. You can monitor the file
moving progress with an integer tag.
3 FileMove() function returns a file move result, indicating
success or failure of the file moving procedure.
Do not use the FileMove() function in asynchronous
QuickFunctions.
Syntax
result = FileMove (sourcefile, destfile, progresstag)
Parameters
sourcefile
Full path and file name of the file to be moved. A literal
string value, message tagname, or string expression. You
can use the wildcard characters (* and ?) in this parameter
to move just files matching a specified criteria. The path
name can also be a UNC path name.
destfile
Full path and file name (or just path name) of the
destination. A literal string value, message tagname, or
string expression. The path name can also be a UNC path.
progresstag
Name of an integer tag enclosed in double quotes that will
contain a value indicating the file moving progress. A literal
string value, message tagname (such as a message tag
containing the value IntTag) or string expression. The
values have following meaning:
0 - FileMove() procedure is still in progress
1 - FileMove() procedure has completed successfully
-1 - FileMove() procedure completed with errors
Return Value
A value of-1, 0, or 1 indicating the following:
1 - FileMove() function successfully called
0 - Error when calling the FileMove() function because
another FileMove() procedure is already in progress
-1 - Error when calling the FileMove() function. Possible
errors are attempts to move a non-existent file.
Example(s)
This script moves the file c:\MyData\output.log to the
directory d:\archive and renames the file to output.txt. The
progress of the file moving is written to the integer tag
Monitor.
Status=FileMove("c:\MyData\output.log","d:\archive\out
put.txt","Monitor");
This script moves all files with file ending .txt in the c:\ root
directory to the destination directory c:\Backup.
Status=FileMove("c:\*.txt", "c:\Backup", "Monitor");
This script moves a file whose full path and file name is
contained in the message tag LogFile to the destination
directory c:\results\ and renames it to logxxx.txt where xxx
is a timestamp.
Status=FileMove(LogFile, "c:\results\log" + $DateString
+ $TimeString + ".txt", "Monitor");
FileReadFields() Function
Reads the values contained in a csv file into a series of
tagnames. You can use this function to load a set of tagname
values.
Commas are the only supported delimiter.
Syntax
[result = ] FileReadFields (filename, offset, starttag,
numberoffields)
Parameters
filename
Name of the csv file to read the data from. A literal string
value, a message tagname or a string expression.
offset
Location (in bytes) in the file to start reading. A literal
integer value, integer tagname, or integer expression.
starttag
Name of the first tagname that receives the first read data
item. The tagname must be enclosed with double quotes
and end in a number, such as MyTag1. A literal string
value, message tagname (such as a message tagname
containing the value MyTag1), or a string expression.
numberoffields
Number of data items to read from the csv file. A literal
integer value, integer tagname, or integer expression. The
first data item is read into the tagname defined in the
starttag parameter, subsequent data items into tagnames
with the incremented numeral suffix of the starttag
parameter (MyTag1, MyTag2, MyTag3, ...).
Return Value
Optional new file offset (in byte) after reading the data. This
can be used to read the next set of data.
Example(s)
This script reads the values Flour to RecipeTag1, 27.23 to
RecipeTag2, 14 to RecipeTag3, and 1 to RecipeTag4, and
returns the new file offsetif the csv file c:\set.csv contains
the following data: Flour, 27.23,14,1 and if the following tags
are defined: RecipeTag1:message, RecipeTag2:real,
Recipe3:integer, RecipeTag4:discrete.
FileReadFields("c:\set.csv",0,"RecipeTag1",4);
FileWriteFields() Function
Writes the values contained in a series of tagnames to a csv
file. You can use this function to save a set of tagname
values.
Commas are the only supported delimiter.
Syntax
[result = ] FileWriteFields (filename, offset,
starttag, numberoffields)
Parameters
filename
Name of the csv file to write the data to. A new file is
created if it does not previously exist. A literal string value,
a message tagname, or a string expression.
offset
Location (in bytes) in the file to start writing to. Use -1 to
write to the end of the file (append). A literal integer value,
integer tagname, or integer expression.
starttag
Name of the first tagname that contains the first data item
to be written. The tagname must be enclosed with double
quotes and end in a number, such as MyTag1. A literal
string value, message tagname (such as a message tagname
containing the value MyTag1) or a string expression.
numberoffields
Number of data items to write to the csv file. A literal
integer value, integer tagname, or integer expression. The
first data item is written from the tagname defined in the
starttag parameter to the file, subsequent data items from
tagnames with the incremented numeral suffix of the
starttag parameter (MyTag1, MyTag2, MyTag3, ...).
Return Value
Optional new file offset (in byte) after writing the data. This
can be used to write the next set of data.
Example(s)
A series of InTouch tags is defined as follows:
FileReadMessage() Function
Reads a specified number of bytes (or one line) of string data
from a file.
Syntax
[result = ] FileReadMessage (filename, offset,
messagetag, charstoread)
Parameters
filename
Name of the file to read the data from. A literal string
value, a message tagname, or a string expression.
offset
Location (in bytes) in the file to start reading from. A literal
integer value, integer tagname, or integer expression.
messagetag
Message tagname that receives the first line or number of
bytes from the file.
charstoread
Number of bytes to read from the file. Set it to 0 to read
until the next line feed (LF) character. A literal integer
value, integer tagname, or integer expression.
Return Value
Contains the new byte position after the read. You can use
this for subsequent reads from the file.
Example(s)
This script reads the first line of data in the file
c:\Data\File.txt to the message tagname MsgTag.
FileReadMessage ("c:\Data\File.txt",0,MsgTag, 0);
FileWriteMessage() Function
Writes a specified number of bytes (or one line) of string data
to a file.
Syntax
[result = ] FileWriteMessage (filename, offset,
messagetag, linefeed)
Parameters
filename
Name of the file to write the data to. A literal string value, a
message tagname, or a string expression.
offset
Location (in bytes) in the file to start writing to. Set it to -1
to write data to the end of the file (append). A literal integer
value, integer tagname, or integer expression.
messagetag
Message tagname that contains the data to be written to
the file.
linefeed
Specifies whether to write a line feed (LF) character after
writing the data to the file. Set to 1 to write a line feed
character; otherwise, set it to 0. A literal Boolean value,
discrete tagname, or Boolean expression.
Return Value
Contains the new byte position after the write. You can use
this for subsequent writes to the file.
Example(s)
This script writes the value of a message tagname MsgTag to
the end of the file c:\Data\File.txt.
FileWriteMessage("c:\Data\File.txt",-1,MsgTag,1);
Use To
GetNodeName() Function
Returns the node name of the computer.
Syntax
GetNodeName (messagetag, nodenum);
Parameters
messagetag
Message tagname that will contain the node name.
nodenum
Number of characters to retrieve from the node name. A
literal integer value, integer tagname, or integer expression
in the range of 0 to 131.
Example(s)
This script retrieves the node name and assigns it to the
NodeName message tagname.
GetNodeName(NodeName,131);
InfoDisk() Function
Returns either the total or free space on a local or network
disk drive.
Syntax
result = InfoDisk (drive, infotype, trigger);
Parameters
drive
The drive letter for which you want to retrieve information.
Only the first character of a string is used. A literal string
value, message tagname, string expression.
infotype
Specifies the information type. A literal integer value,
integer tagname, or integer expression with following
possible values:
1 - function returns total size of disk drive (in bytes)
2 - function returns free space of disk drive (in bytes)
3 - function returns total size of disk drive (in kilobytes)
4 - function returns free space of disk drive (in kilobytes)
trigger
A tagname (or expression) that acts as a trigger to
recalculate the disk information. If the trigger value
changes the disk information is recalculated. A discrete or
analog taname, or a discrete or analog expression.
Remarks
The trigger tag only has meaning when the InfoDisk()
function is used in an animation display link. If this function
is used in a script, you can specify any literal numeric value,
analog tagname, or numeric expression.
Example(s)
Use this script in an animation display link to show the free
space of disk drive C and update the information every
minute.
InfoDisk("C", 4, $Minute)
InfoFile() Function
Returns various information on a file or directory.
Syntax
result = InfoFile (filename, infotype, trigger)
Parameters
filename
The full file name or directory name you want to retrieve
information about. A literal string value, message tagname,
or string expression. Can also include wildcard characters,
such as * and ?.
infotype
The type of information you want to retrieve about the
specified file or directory. A literal integer value, integer
tagname, or integer expression with following values and
meaning:
1 - Existence. The InfoFile() function returns 1 if the file
exists, 2 if the file is a directory and 0 if the file or
directory does not exist.
2 - Size. The InfoFile() function returns the file size in
bytes.
3 - Creation timestamp. The InfoFile() function returns
the time stamp as seconds that have passed since
midnight January 1st 1970. Use the
StringFromTimeLocal() function to convert this value
to a message timestamp.
4 - Wildcard Search Match. The InfoFile() function
returns the number of files that match a specified
wildcard search.
trigger
A tagname (or expression) that acts as a trigger to
recalculate the file information. If the trigger value
changes, the file information is recalculated. A discrete or
analog taname, or a discrete or analog expression.
Remarks
The trigger tag only has meaning when the InfoFile()
function is used in an animation display link. If this function
is used in a script, you can specify any literal numeric value,
analog tagname, or numeric expression.
Example(s)
This script returns 1 if the file c:\data\log.txt exists.
InfoFile("c:\data\log.txt",1,$minute)
InfoResources() Function
Returns the free bytes of the paging file or the approximate
number of Windows tasks.
Syntax
result = InfoResources (infotype, trigger)
Parameters
infotype
The type of information you want to retrieve about the
Windows environment. A literal integer value, integer
tagname, or integer expression with following values and
meaning:
1 - Free bytes of paging file.
2 - Approximate number of open Windows tasks. This can
be used as measurement for the system load.
trigger
A tagname (or expression) that acts as a trigger to retrieve
the system information. If the trigger value changes the
system information is retrieved again. A discrete or analog
taname or a discrete or analog expression.
Remarks
The trigger tag only has meaning when the InfoResources()
function is used in an animation display link. If this function
is used in a script, you can specify any literal numeric value,
analog tagname, or numeric expression.
Example(s)
This script retrieves the approximate number of Windows
tasks and, if used in an animation display link, updates the
information every second.
InfoResources(2,$second);
Use To
InfoInTouchAppDir() Function
Returns the current InTouch application directory.
Syntax
result = InfoInTouchAppDir();
Return Value
A message tagname to contain the directory of the currently
running InTouch application.
Remarks
The application directory name may be truncated when
passed to a message tagname or shown in an animation link
due to the 131 characters limitation.
Example(s)
This script may return c:\documents and settings\user1\my
documents\my intouch applications\packaging.
InfoInTouchAppDir()
InTouchVersion() Function
Returns the complete InTouch version number or just parts
of it.
Syntax
result = InTouchVersion (infotype);
Parameters
infotype
Specifies how the version information is returned. A literal
integer value, integer tagname, or integer expression with
the following meaning:
0- function returns the whole version number
1- function returns just the major version number
2- function returns just the minor version number
3- function returns just the patch level
4- function returns just the build level
Example(s)
Security-Related Scripting
You can add and manage security within your InTouch
application with various QuickScript functions and system
tags. For more information about security functions, see
Chapter 5, Securing InTouch, in the InTouch HMI
Application Management and Extension Guide.
Use To
Use To
Use To
Use To
Miscellaneous Scripting
InTouch scripting supports sound output so that you can
associate human machine interaction with sounds. InTouch
scripting also supports getting and setting properties of
Wizards.
PlaySound() Function
Plays a sound from a wave file or a Windows default sound.
Syntax
Playsound (soundname, flag)
Parameters
soundname
The name of the sound or wave file. A literal string value,
message tagname, or string expression. If the sound is
defined as a name, it must be defined in the Win.ini file
under the [Sounds] section, for example MC=c:\test.wav
flag
Specifies how the sound is played. A literal integer value,
integer tagname, or integer expression with the following
meanings:
0 - Play sound one time synchronously (script execution
waits until sound has finished playing).
1 - Play sound one time asynchronously (script execution
does not wait until sound has finished playing).
9 - Play sound continuously (until the PlaySound() function
is called again).
Example(s)
This script plays the sound of the file c:\welcome.wav one
time and holds script execution until it has finished playing.
PlaySound("c:\welcome.wav",0);
Use To
GetPropertyD() Function
Reads a discrete property in a wizard and returns a success
code.
Syntax
result = GetPropertyD (controlname.property, dtag)
Parameters
controlname
The name of a wizard that supports properties. A literal
string value, message tagname, or string expression.
property
The discrete property of the wizard that is to be read.
Together with controlname can be a literal string value,
message tagname, or string expression.
dtag
The discrete tagname that will receive the discrete property
value.
Return Value
An integer error code. For more information about the error
codes, see Understanding Windows Controls Error Messages
in Chapter 5, Wizards, in the InTouch HMI Visualization
Guide.
Example(s)
With a check box wizard Checkbox1 and a discrete tagname
dtag you can check the visibility of the check box with the
following script function:
result=GetPropertyD("Checkbox1.visible",dtag);
SetPropertyD() Function
Sets a discrete property in a wizard and returns a success
code.
Syntax
result = SetPropertyD(controlname.property, Boolean)
Parameters
controlname
The name of a wizard that supports properties. A literal
string value, message tagname, or string expression.
property
The discrete property of the wizard that is to be set.
Together with controlname can be a literal string value,
message tagname, or string expression.
Boolean
The Boolean value to pass to the wizard property. A literal
Boolean value, discrete tagname or Boolean expression.
Return Value
An integer error code. For more information about the error
codes, see Understanding Windows Controls Error Messages
in Chapter 5, Wizards, in the InTouch HMI Visualization
Guide.
Example(s)
With a check box wizard Checkbox1 and a discrete tagname
dtag you can control the visibility of the check box with the
following script function:
result=SetPropertyD("Checkbox1.visible",dtag);
If you set dtag to 0 and call the script function above, the
check box wizard becomes invisible.
GetPropertyI() Function
Reads an integer in a wizard and returns a success code.
Syntax
result = GetPropertyI (controlname.property, itag)
Parameters
controlname
The name of a wizard that supports properties. A literal
string value, message tagname, or string expression.
property
The integer property of the wizard that is to be read.
Together with controlname can be a literal string value,
message tagname, or string expression.
itag
The integer tagname that will receive the integer property
value.
Return Value
An integer error code. For more information about the error
codes, see Understanding Windows Controls Error Messages
in Chapter 5, Wizards, in the InTouch HMI Visualization
Guide.
Example(s)
With a radio button wizard Radiobutton1 and an integer
tagname itag you can check the currently selected item in the
radio button group with the following script function:
result=GetPropertyI("Radiobutton1.value",itag);
This script sets itag to 1 (2, 3, ...) , if the first (second, third,
...) radio button is selected.
SetPropertyI() Function
Sets an integer property in a wizard and returns a success
code.
Syntax
result = SetPropertyI (controlname.property, integer)
Parameters
controlname
The name of a wizard that supports properties. A literal
string value, message tagname, or string expression.
property
The integer property of the wizard that is to be set.
Together with controlname can be a literal string value,
message tagname, or string expression.
integer
The integer value to pass to the wizard property. A literal
integer value, integer tagname, or integer expression.
Return Value
An integer error code. For more information about the error
codes, see Understanding Windows Controls Error Messages
in Chapter 5, Wizards, in the InTouch HMI Visualization
Guide.
Example(s)
With a radio button wizard Radiobutton1 you can set the 2nd
radio button with the following script function:
result=SetPropertyI("Radiobutton1.value",2);
GetPropertyM() Function
Reads a message property in a wizard and returns a success
code.
Syntax
result = GetPropertyM (controlname.property, mtag)
Parameters
controlname
The name of a wizard that supports properties. A literal
string value, message tagname, or string expression.
property
The message property of the wizard that is to be read.
Together with controlname can be a literal string value,
message tagname, or string expression.
mtag
The message tagname that will receive the message
property value.
Return Value
An integer error code. For more information about the error
codes, see Understanding Windows Controls Error Messages
in Chapter 5, Wizards, in the InTouch HMI Visualization
Guide.
Example(s)
With a check box wizard Checkbox1 and a message tagname
mtag you can check the caption of the check box with the
following script function:
result=GetPropertyM("Checkbox1.caption",mtag);
SetPropertyM() Function
Sets a message property in a wizard and returns a success
code.
Syntax
result = SetPropertyM (controlname.property, message)
Parameters
controlname
The name of a wizard that supports properties. A literal
string value, message tagname, or string expression.
property
The message property of the wizard that is to be set.
Together with controlname can be a literal string value,
message tagname, or string expression.
message
The message value to pass to the wizard property. A literal
string value, message tagname, or string expression.
Return Value
An integer error code. For more information about the error
codes, see Understanding Windows Controls Error Messages
in Chapter 5, Wizards, in the InTouch HMI Visualization
Guide.
Example(s)
With a check box wizard Checkbox1 you can set the caption of
the check box wizard dynamically with the following script
function:
result=SetPropertyM("Checkbox1.caption","Start Engine
1");
Chapter 7
OLE_IsObjectValid() Function
OLE_ReleaseObject() Function
OLE_CreateObject() Function
Before you can reference an OLE object in a script, you must
create it. When you do this you receive a pointer that
references the OLE object.
In a script, you can create an OLE object and assign a pointer
by using the OLE_CreateObject() function.
Syntax
OLE_CreateObject(%pointer, classname);
Parameters
%pointer
The name of your choice for the pointer to the OLE object. It
can contain alphanumeric characters (A-Z, 0-9) and
underscore. It is case-insensitive.
classname
The name of the OLE class. The class name is case-
sensitive. A literal string value, message tagname, or string
expression.
Remarks
If you use the same object name to create another object, the
object is updated to reference the new OLE class. It is
released from the old OLE class.
Example(s)
This script creates an OLE object called %WShell that
references the class Wscript.Shell.
OLE_CreateObject(%WShell, "Wscript.Shell");
OLE_IsObjectValid() Function
In a script, you can verify that an OLE object is valid by
using the OLE_IsObjectValid() function. This is not a
required step for working with OLE objects, but it is
recommended to make sure that you do not come across
problems when working with OLE objects.
Syntax
result = OLE_IsObjectValid(%pointer)
Arguments
%pointer
The pointer referencing an OLE object that is to be tested.
result
A Boolean value indicating the following:
0 - The OLE object the pointer is referencing is invalid.
1 - The OLE object the pointer is referencing is valid.
Example(s)
This script creates an OLE object based on the Wscript.Shell
class and creates a pointer %WS to reference it. isvalid is a
discrete tag that is TRUE if the OLE object is created
successfully. Otherwise it is FALSE.
OLE_CreateObject(%WS, "Wscript.Shell");
isvalid = OLE_IsObjectValid(%WS);
OLE_ReleaseObject() Function
After you have used an OLE object in a script, you can release
it and delete its pointer to free up system resources. After you
release an OLE object you cannot use its pointer to access
properties and methods of the associated OLE class.
Syntax
OLE_ReleaseObject(%pointer);
Arguments
%pointer
Name of the pointer that references the OLE Object. It can
contain alphanumeric characters (A-Z, 0-9) and underscore.
It is case-insensitive.
Example(s)
This script releases the OLE object associated with the
pointer %WShell and deletes the pointer %WShell.
OLE_ReleaseObject(%WShell);
Note When you use OLE object properties in a script, make sure
that their references do not exceed 98 characters, including
leading %. Keep OLE pointer names as short as possible.
Function Description
OLE_GetLastObjectError() Function
This function returns the error number of the last OLE error.
Syntax
errnum = OLE_GetLastObjectError();
Arguments
errnum
The number of the last OLE error.
OLE_GetLastObjectErrorMessage() Function
This function returns the error message of the last OLE
error.
Syntax
errmsg = OLE_GetLastObjectErrorMessage();
Arguments
errmsg
The error message of the last OLE error.
OLE_ResetObjectError() Function
In a script, use the OLE_ResetObjectError() function to reset
the last OLE error so that the last OLE error number is set to
zero and last OLE error message is set to blank.
This can be used for identifying any errors in a batch of OLE
functions.
Syntax
OLE_ResetObjectError()
OLE_ShowMessageOnObjectError() Function
By default, when an OLE error occurs, an error message
dialog box is displayed.
In a script, you can specify whether or not to display the error
message dialog box by using the function
OLE_ShowMessageOnObjectError().
Syntax
OLE_ShowMessageOnObjectError(Boolean)
Arguments
Boolean
A value that determines if an OLE error message dialog box
is displayed or not. A literal Boolean value, discrete
tagname or Boolean expression with following meanings:
0 - no OLE error message dialog box is displayed when an
OLE error occurs
1 - an OLE error message dialog box is displayed when an
OLE error occurs
Example(s)
This script suppresses all OLE error message dialog boxes.
When OLE errors occur, no error message dialog boxes are
displayed.
OLE_ShowMessageOnObjectError(0);
OLE_IncrementOnObjectError() Function
In a script, you can use the OLE_IncrementOnObjectError()
function to designate an integer tagname as counter for the
number of OLE errors.
Syntax
OLE_IncrementOnObjectError(integertag)
Parameters
integertag
The tagname that acts as a counter.
Remarks
If OLE error message dialog boxes are displayed, the counter
tagname is only incremented after the OLE error message
dialog box is closed.
Example(s)
This script designates the integer tagname errorcount as
error counter, hides the error message dialog boxes and
attempts to create an OLE object based on an invalid OLE
class name. This creates an error and the tagname value
errorcount is incremented to 1.
errorcount = 0;
OLE_IncrementOnObjectError(errorcount);
OLE_ShowMessageOnObjectError(0);
OLE_CreateObject(%WS,"InVaLiD.cLaSs.nAmE");
Warning icon 48
Information icon 64
Value Style
0 Only OK button
1 OK and Cancel buttons
Minimize Windows
In a script, you can use the following commands to minimize
all windows on your desktop:
OLE_CreateObject(%WA,"Shell.Application");
%WA.MinimizeAll();
Chapter 8
2 Click the name of the ActiveX control from the left pane.
The right pane contains the names of properties and
methods that are supported by the ActiveX control.
3 Click the name of the method to use from the right pane
and then click OK. The method name and default
parameters are pasted into the script window at the
cursor position.
4 Configure the method parameters inside the parentheses,
to your specifications.
2 Click the name of the ActiveX control from the left pane.
The right pane contains the names of properties and
methods of the selected ActiveX control.
3 Click the name of the property to use from the right pane.
The property name is inserted into the script window at
the cursor position.
4 Assign the property name to a tag or use according to
your specifications.
5 Click OK.
Example(s)
The following script reads the ToPriority property of the
ActiveX control instance AlarmViewerCtrl1 into the integer
tagname topri.
topri = #AlarmViewerCtrl1.ToPriority;
Chapter 9
Troubleshooting QuickScripts
LogMessage() Function
Writes a user-defined message to the ArchestrA Log Viewer.
Category
misc
Syntax
LogMessage("Message_Tag");
Parameter
Message_Tag
String to log to the Log Viewer. Actual string or message
tagname.
Remarks
This is a very powerful function for troubleshooting InTouch
scripting. By strategically placing LogMessage() functions in
your scripts, you can determine the order of QuickScript
execution, the performance of scripts, and identify the value
of tags both before they are changed and after they have been
affected by the QuickScript. Each message posted to the Log
Viewer is stamped with the exact date and time.
Example(s)
LogMessage("Report Script is Running");
Index
creating F
ActiveX event scripts 184, 186 file operations 139
custom scripts 69 FileCopy() function 139
OLE object 166 FileDelete() function 141
scripts 15 FileMove() function 142
user interface dialog boxes 175 FileReadFields() function 144
CSV file functions 143 FileReadMessage() function 146
files
D CSV functions 143
data change scripts retrieving directory information 150
configuring 33 text functions 146
deleting 33 FileWriteFields() function 145
triggers 24 FileWriteMessage() function 147
data types, conversion 58 finding and/or replacing text 18
date and time 118129 FOR loops 62
date and time system tags 118 forcing the end 64
date and time, converting to strings 125 forcing the end of a loop 64
date and time, retrieving as string 123 forcing updates in animation display
DateTimeGMT() function 122 links 75
daylight savings time 129 formatting strings with spaces 89
DDE, executing commands and functions
exchanging data using 136 Abs() function 76
declaring a local variable 66 ActivateApp() function 132
deleting scripts 22 AddPermission() function 157
directory information, retrieving 150 ArcCos() function 81
discarding changes 18 ArcSin() function 80
discrete values, converting to string 104 ArcTan() function 82
documentation conventions 9 AttemptInvisibleLogon() function 155
dot fields, inserting 19 calling syntax 46
DText() function 104 ChangePassword() function 156
ChangeWindowColor() function 112
E Cos() function 80
editing scripts 1520 DateTimeGMT() function 122
editor 13 definition 12
event scripts DText() function 104
creating 184 Exp() function 83
importing 187 FileCopy() function 139
re-using 185 FileDelete() function 141
self-referencing 186 FileMove() function 142
example of incorrect nesting 62 FileReadFields() function 144
executing commands and exchanging FileReadMessage() function 146
data using DDE 136
FileWriteFields() function 145
Exp() function 83
FileWriteMessage() function 147
expression examples 59
GetAccountStatus() function 157
G L
GetAccountStatus() function 157 limitations
GetNodeName() function 148 application scripts 26
GetPropertyD() function 159 asynchronous QuickFunctions 72
GetPropertyI() function 161 literal data values 45
GetPropertyM() function 163 local variables 6667
getting and setting properties of declaring 66
wizards 159 naming conflicts 67
using 66
H Log Viewer 192
help for script functions 20 Log() function 83
Hide() function 111 logarithms 82
HideSelf() function 111 logging messages 189192
hiding InTouch windows 111 logging on and off 155
historical trend printing 117 LogMessage() function 190, 191
LogN() function 84
I Logoff() function 155
IF-THEN-ELSE branching 60 LogonCurrentUser() function 155
implicit data type conversion 58 loops 65
importing ActiveX event scripts 187 effect on other processes 64
incorrect nesting example 62 examples 65
indenting script statements 44 FOR 62
InfoAppActive() function 131 forcing the end of 64
InfoAppTitle() function 130 time limit for execution 65
InfoDisk() function 149 using 62
InfoFile() function 150
InfoInTouchAppDir() function 153 M
InfoResources() function 152 managing files 139
inserting managing security and other
code elements 19 information 157
dot fields 19 mathematical calculations 7684
inserting functions 19 MEM OLE 13
inserting tagnames 19 minimizing windows 178
Int() function 77 miscellaneous scripting 158
integers, converting from string 102 moving and resizing a window 110
integers, converting to string 100 multiple triggers 24
interacting with other applications 129
138 N
InTouchVersion() function 154 naming conflicts 67
InvisibleVerifyCredentials() function 157
IsAnyAsyncFunctionBusy() function 73 O
IsAssignedRole() function 157 OLE
counting error messages 174
K creating user interface dialog
key scripts boxes 175
configuring 28 errors 172
deleting 30 minimizing windows 178
triggers 24