Displays text messages in the Windows Console when processed by the CScript execution hosts, and in pop-up dialog boxes when processed by the WScript execution hosts.. Displays text mess
Trang 1‘Instantiate the VBScript FileSystemObject
Set FsoObject = WScript.CreateObject(“Scripting.FileSystemObject”)
‘Use the FileSystem Object object’s GetDrive method to set up a reference
‘to the computer’s C: drive
Set DiskDrive = FsoObject.GetDrive(FsoObject.GetDriveName(“c:”))
‘Main Processing Section
‘Use the FileSystemObject FreeSpace property to determine the amount of
‘free space (in MB) on the C: drive
AvailSpace = (DiskDrive.FreeSpace / 1024) / 1024
‘Use the VBScript FormatNumber Function to format the results as a
‘whole number
AvailSpace = FormatNumber(AvailSpace, 0)
‘Display the amount of free space on the C: drive
WScript.Echo “You need 100 MB of free space to play this game “ & _
vbCrLf & “Total amount of free space is currently: “ & AvailSpace & “ MB”
The script begins by instantiating the FileSystemObjectas shown here:
Set FsoObject = WScript.CreateObject(“Scripting.FileSystemObject”)
The script then uses this instance of the FileSystemObjectto execute its GetDrive()method and set up a reference to the computer’s C: drive:
Set DiskDrive = FsoObject.GetDrive(FsoObject.GetDriveName(“c:”))
The next statement uses the FileSystemObject object’s FreeSpace property to retrieve the amount of free space on the C: drive:
AvailSpace = (DiskDrive.FreeSpace / 1024) / 1024
This statement divides this value by 1,024, and then again by 1,024, to present the amount
of free space in megabytes
The next statement formats this value further by eliminating any numbers to the left of the decimal point Finally, the last statement displays the final result, as shown in Figure 3.8
Trang 2For more information on how to use the VBScript FileSystemObject, see Chapter 5, “Condi-tional Logic,” in which I’ll show you how to create and write to Windows files to produce reports and log files In Chapter 8, “Storing and Retrieving Data,” I’ll cover how to open and read from Windows files
Examining Built-in VBScript Functions
One of the real advantages of working with VBScript is having access to its large number of built-in functions In the previous example, you saw how to use the FormatNumber()function There are too many built-in VBScript functions to try and list them all here For a complete list, refer to Appendix B “Built-in VBScript Functions.”
Demo: The Square Root Calculator
By using functions, you can really streamline your scripts VBScript’s built-in functions provide built-in code that you don’t have to write The best way to illustrate this is by two examples
In the first example, I’ve written a small VBScript that prompts the user to type in a number
so that the script can calculate its square root The second script is a rewrite of the first script, using the VBScript Sqr()function in place of the original programming logic Here’s the first example
‘*************************************************************************
‘Script Name: SquareRoot-1.vbs
‘Author: Jerry Ford
‘Created: 11/22/02
‘Description: This script demonstrates how to solve square root
‘calculations using a mathematic solution devised by Sir Isaac Newton
‘*************************************************************************
‘Initialization Section
Option Explicit
Figure 3.8
Using the
FileSystem
Object to access
information about
disk drives.
Trang 3Dim UserInput, Counter, X
UserInput = InputBox (“Type a number”, “Square Root Calculator”)
X = 1
For Counter = 1 To 15
X = X - ((X^2 - UserInput) / (2 * X))
Next
MsgBox “The square root of “ & UserInput & “ is “ & X
As you can see, the first part of the script displays a pop-up dialog to collect the number, and the last part displays the script’s final results The middle is where the real work results
X = 1
For Counter = 1 To 15
X = X - ((X^2 - UserInput) / (2 * X))
Next
I won’t go into the mathematical logic behind these statements Unless you’re a math major, it’s a bit of a challenge to understand This solution is based on Sir Isaac Newton’s solution for solving square root equations Granted, it only took four lines of code to repro-duce the formula, but would you like to have tried to write these four statements from scratch? I don’t think so
Demo: A New and Improved Square Root Calculator
Now let’s look at a rewrite of the square root calculator script in which I use VBScript’s built-in Str()function to perform square root calculations
‘*************************************************************************
‘Script Name: SquareRoot-2.vbs
‘Author: Jerry Ford
‘Created: 11/22/02
‘Description: This script demonstrates how to solve square root
‘calculations using VBScript’s Built-in Sqr() function
‘*************************************************************************
‘Initialization Section
Option Explicit
Trang 4Dim UserInput
UserInput = InputBox (“Type a number”, “Square Root Calculator”)
MsgBox “The square root of “ & UserInput & “ is “ & Sqr(UserInput)
As you can see, this time you don’t have to be a mathematician to write the script All you have to know is the correct way to use the Sqr()function, which is simply to pass it a number—
in the case of this script, that number is represented by a variable named UserInput These two examples show clearly the advantage of using VBScript’s built-in functions These func-tions can save you a lot of time and effort and perhaps a few headaches
Figures 3.9 and 3.10 demonstrate the operation of either version of these two scripts
Displaying Script Output
You’ve seen many examples already of how to display output messages in VBScripts Output display is a critical tool in any programmer’s toolbox As a VBScript programmer working with the WSH, you have four different options for displaying script output Two of these options are provided by the WSH in the form of object methods:
• Echo() Displays text messages in the Windows Console when processed by the
CScript execution hosts, and in pop-up dialog boxes when processed by the WScript execution hosts
• Popup() Displays text messages in the pop-up dialog boxes, giving you control over the icons and buttons that are displayed, and, optionally, returning a value repre-senting the button that is pressed
Figure 3.9
First, the script
prompts the user
to supply a
number.
Figure 3.10
The script then
determines the
number’s
square root.
Trang 5In addition to these two WSH options, VBScript gives you two functions of its own:
• InputBox() Displays a text entry field in a pop-up dialog to collect user input
• MsgBox() Displays text messages in the pop-up dialog boxes, giving you control over the icons and buttons that are displayed, and, optionally, returning a value repre-senting the button that is pressed
The WScript’s Echo() Method
The WScript object’s Echo() method can display text output in the Windows Command Console or in a pop-up dialog, depending on the execution hosts that processes it Table 3.7 outlines the Echo() method’s behavior based on the execution host that processes it Unlike other WSH output methods or VBScript functions, the Echo()method cannot collect user input
The syntax for the WScript Echo()method is as follows:
WScript.Echo [Arg1] [,Arg2]
The Echo()method can display any number of arguments:
WScript.Echo “This message appears differently depending on the “ & _
“execution host that runs it.”
The WshShell Object’s Popup() Method
The WshShellobject’s Popup()method displays messages in pop-up dialog boxes You can cus-tomize its appearance by selecting the buttons and the icon to be displayed You can also determine which button the user clicked on
The WshShellobject’s Popup()method can be used in either of two ways The syntax of the first option is as follows:
Response = WScript.Popup(StrText,[Time],[TitleBarMsg],[DialogSettings])
WSH Execution Hosts Output
WScript.exe Displays text messages in graphical pop-up dialog boxes
CScript.exe Displays text messages in the Windows Command Console
TA B L E 3 7 W SC R I P T EC H O( ) ME T H O D EX E C U T I O N OP T I O N S
Trang 6Value Button(s)
1 Displays the OK and Cancel buttons
2 Displays the Abort, Retry, and Ignore buttons
3 Displays the Yes, No, and Cancel buttons
4 Displays the Yes and No buttons
5 Displays the Retry and Cancel buttons
TA B L E 3 8 PO P U P( ) ME T H O D BU T T O N TY P E S
The syntax of the second option is as follows:
WScript.Popup StrText,[Time],[TitleBarMsg],[DialogSettings]
Responseis a variable that stores a number representing the button that was clicked by the user StrText represents the message text to be displayed Timeis a value that determines how long, in seconds, the pop-up dialog will be displayed; if omitted, the default is forever TitleBarMsgis an optional message that is displayed in the pop-up dialog’s title bar Finally, DialogSettingsis an option numeric value that specifies the buttons and the icon that are
to appear on the pop-up dialog If omitted, the pop-up dialog box displays the OK button without an icon
To determine what numeric value to specify as the DialogSettings value, you’ll need to reference Tables 3.8 and 3.9 Table 3.8 lists the different collections of buttons that can be displayed on pop-up dialogs created by the Popup()method, and Table 3.9 displays the dif-ferent icons that you can display using the Popup()method
Value Icon
16 Displays the stop icon
32 Displays the question icon
48 Displays the exclamation mark icon
64 Displays the information icon
TA B L E 3 9 PO P U P( ) ME T H O D IC O N TY P E S
Trang 7For example, to display a pop-up dialog that displays the OK button without any icon, you would specify a value of 0 As this is the default option for the Popup()method, you do not have
to specify this value at all To display a pop-up dialog with the Yes, No, and Cancelbutton and
no icon, you specify a value of 3for DialogSettings To display a pop-up dialog with OK and Cancel buttons and the information icon, you specify a value of 65(that is, the collective sum
of 1 and 64)
If you use the first form of the Popup()method (to be able to determine which button the user clicked), you’ll need to examine the value of Responseas demonstrated here:
Response = WshShl.Popup(“This is a text message”, ,”Test Script”, 5)
If Response = 4 Then
WshShl.Popup “You clicked on Retry”
End If
Table 3.10 lists the possible range of values that can be returned by the Popup()method
The VBScript InputBox() Function
VBScript provides two built-in functions that you can use to display text messages and inter-act with users The InputBox()function displays your text message in a pop-up dialog that also includes an entry field You have already seen the InputBox()function in action in both the Knock Knock game and the Rock, Paper, and Scissors game
The syntax for this function is as follows:
Response = InputBox(StrText[, TitleBarMsg][, default][, xpos][, ypos]
[, helpfile, context])
Value Results
TA B L E 3 10 PO P U P( ) ME T H O D RE T U R N VA L U E S
Trang 8Responseis a variable that stores a number representing the input typed by the user StrText
is the message that you want to display TitlebarMsg is an optional message that will be displayed in the pop-up dialog’s title bar Defaultis an optional default answer that you can display in the pop-up dialog Xposand yposare optional arguments that specify, in twips, the horizontal and vertical location of the pop-up dialog on the screen Helpfileand contextare also optional They specify the location of an optional context-sensitive help file
The following statement provides another example of
how to use the VBScript InputBox()function:
PlayerName = InputBox(“Please type your name”)
MsgBox “You typed: “ & PlayerName
The VBScript MsgBox() Function
The VBScript MsgBox()function displays a pop-up dialog that is very similar to the pop-up dialog produced by the WSH Popup() method It gives you the ability to customize the appearance of the dialog by selecting the buttons and the icon to be displayed You also can use it to determine which button the user clicked on
The syntax for the MsgBox()function is as follows:
MsgBox(TextMsg[, buttons][, TitleBarMsg][, helpfile, context])
TextMsgis the message to be displayed in the dialog Buttonsis a representation of the but-tons and icon to appear in the pop-up dialog TitleBarMsgis an optional message that will
be displayed in the pop-up dialog’s title bar, and helpfileand contextare optional; when used, they specify the location of an optional context-sensitive help file
Table 3.11 defines the different collections of buttons that can be displayed on pop-up dialogs displayed using the MsgBox()function
Definition
Twip stands for Twentieth of a Point
and represents a value of 1/1440 inch.
Constant Value Description
vbOKCancel 1 Displays the OK and Cancel buttons
vbAbortRetryIgnore 2 Displays the Abort, Retry, and Ignore buttons
vbYesNoCancel 3 Displays the Yes, No, and Cancel buttons
vbYesNo 4 Displays the Yes and No buttons
vbRetryCancel 5 Displays the Retry and Cancel buttons
TA B L E 3 11 V B SC R I P T MS GBO X( ) FU N C T I O N BU T T O N S
Trang 9Table 3.12 defines the list of icons that you can add to the MsgBox()pop-up dialog
You can use the MsgBox()function in your scripts like this:
MsgBox “Thanks for playing!”
You also can use the MsgBox()like this:
UserSelected = MsgBox(Would you like to play a game?)
The advantage to this last option is that you can interrogate the button that the user clicks
on and use it to drive the execution flow of your script like this:
UserSelected = MsgBox(“Would you like to play a game?”, 4, “Text Script”)
If UserSelected = 6 Then
MsgBox “OK, The rules of this game are as follows:!”
End If
Alternatively, you could rewrite the previous statements as follows:
UserSelected = MsgBox(“Would you like to play a game?”, 4, “Text Script”)
If UserSelected = vbYes Then
MsgBox “OK, let’s play!”
End If
Table 3.13 defines the list of return values associated with the various MsgBox()buttons
Constant Value Description
vbExclamation 48 Displays the exclamation mark icon
vbInformation 64 Displays the information icon
TA B L E 3 12 V B SC R I P T MS GBO X( ) FU N C T I O N IC O N S
Trang 10Back to the Math Game
The Math Game is played by displaying a math equation and asking the player to provide the solution If the player provides the correct answer, the game ends; however, if the player gets the answer wrong, then the script offers to show the player how to arrive at the correct answer This is achieved in a slide slow or movie-like fashion, in which the script first starts WordPad, then starts the Calculator application, and finally uses the applications to solve the equation while the player sits back and watches When the script is done with its pre-sentation, it ends by closing both the WordPad and the Calculator applications
A Quick Overview of the WshShell SendKeys() Method
Before I jump completely into the design of the Math Game, I need to give you one more piece of information The Math Game’s capability to interact with the WordPad and Calcu-lator application depends on the use of the WshShell object’s SendKeys() method This method is used to send keystrokes to the currently active Windows application
Because it sends keystrokes to the currently active Windows application, it is very important that, when the script is running, the player does not open any new windows (applications) If he or she does, the script will begin sending key-strokes to whatever applications the player opened, causing any of a number of unpredictable problems
T R A P
Constant Value Description
TA B L E 3 13 V B SC R I P T MS GBO X( ) FU N C T I O N RE T U R N VA L U E S