Tải bản đầy đủ (.pdf) (10 trang)

Microsoft WSH and VBScript Programming for the Absolute Beginner Part 12 ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (188.91 KB, 10 trang )

90
Microsoft WSH and VBScript Programming for the Absolute Beginner, Second Edition
In the Real World
Because opening another window while the SendKeys() method is executing will divert the
keystrokes to the new window, you will want to find another way of integrating your scripts
with other applications whenever possible. Many applications, such as Excel and Word, provide
their own built-in core object model. WSH scripts can interact directly with these applications
by first instantiating references to the application’s objects and then accessing their methods
and properties. The only trick here is that you need to know the objects that make up the appli-
cation’s object model, as well as their associated methods and properties. You can often get this
information from the application vendor’s Web site or from searching the Internet. Of course, if
the application that you want to work with does not expose an object model for your scripts
to work with, you can always try using the SendKeys() method.
The syntax of the SendKeys() method is as follows:
SendKeys(string)
String
is a value representing the keystrokes that are to be sent to the target application.
You can send more keystrokes by simply typing them out, like this:
SendKeys “I am “
SendKeys 38
SendKeys “ years old.”
However, in many cases, you’ll want to send other types of keystrokes. For example, to send
an Enter key keystroke, you’ll need to send the following:
SendKeys “~”
Table 3.14 provides a list of SendKeys() keystrokes that you’re likely to want to use.
Key Corresponding SendKeys() Codes
BACKSPACE {BACKSPACE}, {BS}, or {BKSP}
BREAK {BREAK}
CAPS LOCK {CAPSLOCK}
DEL or DELETE {DELETE} or {DEL}
DOWN ARROW {DOWN}


TABLE 3.14 SENDK EYS() KEYSTROKES
91
Chapter 3 • VBScript Basics
Key Corresponding SendKeys() Codes
END {END}
ENTER {ENTER} or ~
ESC {ESC}
HELP {HELP}
HOME {HOME}
INS or INSERT {INSERT} or {INS}
LEFT ARROW {LEFT}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
RIGHT ARROW {RIGHT}
SCROLL LOCK {SCROLLLOCK}
TAB {TAB}
UP ARROW {UP}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}

F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}
TABLE 3.14 SENDK EYS() KEYSTROKES ( CONTINUED)
92
Microsoft WSH and VBScript Programming for the Absolute Beginner, Second Edition
Besides the keystrokes outlined in Table 3.14, Table 3.15 lists three additional keystroke com-
binations that can be used to send keystrokes that require a special key to be pressed in con-
junction with another key. For example, if you were working with an application that could
be closed by holding down the Alt key and pressing the F4 key, you could perform this oper-
ation as follows:
SendKeys “%{F4}”
Designing the Game
Okay, let’s start building the Math Game. This game will be assembled in five steps. The first
three steps create the logic that interacts with the user and plays the game. The last two
steps perform the game’s application demonstrations. These steps are as follows:
1. Add the standard documentation template and define any variables, constants, or
objects used by the script.
2. Present the player with the equation and then test the player’s response to determine
whether he or she provided an answer and whether that answer was numeric.
3. Test to see whether the player provided the correct answer. If not, then offer to show
the user how to arrive at the correct answer.
4. Add the statements required to start and control the WordPad application.
5. Add the statements required to start and control the Calculator application.
Beginning the Math Game
Let’s begin by adding the script template that I introduced earlier in this chapter. This
includes initializing variables and constants, and setting up object declaration statements.
Key Corresponding SendKeys() Codes

Shift +
Alt ^
Ctrl %
TABLE 3.15 SPECIAL S ENDK EYS() KEYSTROKES
‘*************************************************************************
‘Script Name: Mathgame.vbs
‘Author: Jerry Ford
‘Created: 02/28/02
‘Description: This script prompts the user to solve a mathematical
‘expression and demonstrates how to solve it in the event that the user
‘cannot
‘*************************************************************************
‘Initialization Section
Option Explicit
Dim WshShl, QuestionOne, ProveIt
‘Define the title bar message to be displayed in the script’s
‘pop-up dialog
Const cTitlebarMsg = “The Math Game”
‘Instantiate an instance of the WshShell object
Set WshShl = WScript.CreateObject(“WScript.Shell”)
Collect the Player’s Answer and Test for Errors
Next, display the equation and store the player’s answer in a variable called QuestionOne,
like this:
‘Present the player with the equation
QuestionOne = InputBox(“What is the sum of 1 + 5 * 9 / 3 ?”, cTitlebarMsg)
Now verify that the player actually typed in an answer instead of just clicking on OK or Cancel;
if the player has not typed in an answer, display an error message and end the game.
‘See if the player provided an answer
If Len(QuestionOne) = 0 Then
MsgBox “Sorry. You must enter a number to play this game.”

WScript.Quit
End If
93
Chapter 3 • VBScript Basics
94
Another good test to perform is to make sure that the player is, in fact, typing in a number
as opposed to a letter or other special character:
‘Make sure that the player typed a number
If IsNumeric(QuestionOne) <> True Then
MsgBox “Sorry. You must enter a number to play this game.”
WScript.Quit
End If
Check for the Correct Answer
Okay, now add a test to see if the player provided the correct answer. If the answer provided
is correct, then compliment the player’s math skills. Otherwise, offer to teach the player
how to solve the equation.
‘Check to see if the player provided the correct answer
If QuestionOne = 16 Then
MsgBox “Correct! You obviously know your math!”
Else
ProveIt = MsgBox(“Incorrect. Do you want to see me solve the “ & _
“equation?”, 36, cTitlebarMsg)
If ProveIt = 6 Then ‘Player wants to see the solution
.
.
.
End If
End If
As you can see, I left space in the previous statements. This space marks the spot where the
rest of the script’s statements will be written as you continue to develop the script.

Interacting with WordPad
For the script to work with the WordPad application, WordPad must first be started. This can
be done using the
WshShell object’s Run() method.
WshShl.Run “WordPad”
Microsoft WSH and VBScript Programming for the Absolute Beginner, Second Edition
It may take a moment or two for the application to finish starting, so pause the script’s exe-
cution for two seconds and wait using the
WScript object’s Sleep() method, like this:
WScript.Sleep 2000
Next add a series of statements that use the SendKeys() method to write text to WordPad. To
slow things down a bit and make the process run more like a slide show, add the
Sleep()
method after each write operation. Finally, pause for a couple seconds and then close WordPad.
WshShl.SendKeys “To answer this question you must follow the “ & _
“correct order of precedence when performing your calculations.”
WScript.Sleep 2000
WshShl.SendKeys “~~”
WshShl.SendKeys “1st, working from left to right multiply 5 * 9.”
WScript.Sleep 2000
WshShl.SendKeys “~~”
WshShl.SendKeys “2nd, divide the result by 3.”
WScript.Sleep 2000
WshShl.SendKeys “~~”
WshShl.SendKeys “3rd, add 1.”
WScript.Sleep 2000
WshShl.SendKeys “~~”
WshShl.SendKeys “The final answer is 16.”
WScript.Sleep 2000
WshShl.SendKeys “~~”

WshShl.SendKeys “~~”
WshShl.SendKeys “In case you question my math watch this!”
WScript.Sleep 2000
WshShl.SendKeys “%{F4}”
WshShl.SendKeys “%{N}”
Take notice of the last two statements. The first statement closed WordPad by sending the
F4 keystroke. As a new document was just opened, WordPad displays a dialog asking if you
want to save it. The last statement responds by sending the CTRL+N keystrokes indicating a
“no” response.
95
Chapter 3 • VBScript Basics
96
Interacting with the Calculator
The final piece of the game opens the Windows Calculator application and resolves the
equation, just in case the player has any doubts as to the answer you presented using Word-
Pad. The statements required to write this portion of the script are as follows:
‘Start the Calculator application
WshShl.Run “Calc”
‘Use the Calculator application to solve the equation
WScript.Sleep 2000
WshShl.SendKeys 5 & “{*}”
WScript.Sleep 2000
WshShl.SendKeys 9
WScript.Sleep 2000
WshShl.SendKeys “~”
WScript.Sleep 2000
WshShl.SendKeys “{/}” & 3
WScript.Sleep 2000
WshShl.SendKeys “~”
WScript.Sleep 2000

WshShl.SendKeys “{+}” & 1
WScript.Sleep 2000
WshShl.SendKeys “~”
WScript.Sleep 2000
WshShl.SendKeys “%{F4}”
As you can see, the same techniques have been used here to work with the Windows Calcu-
lator as were used to control WordPad.
The Final Result
Well, that’s it. Let’s assemble all the pieces of the script and see what it looks like:
‘*************************************************************************
‘Script Name: Mathgame.vbs
‘Author: Jerry Ford
‘Created: 02/28/02
‘Description: This script prompts the user to solve a mathematical
‘expression and demonstrates how to solve it in the event that the user
‘cannot
‘*************************************************************************
Microsoft WSH and VBScript Programming for the Absolute Beginner, Second Edition
‘Initialization Section
Option Explicit
Dim WshShl, QuestionOne, Proveit
‘Define the title bar message to be displayed in the script’s
‘pop-up dialog
Const cTitlebarMsg = “The Math Game”
‘Instantiate an instance of the WshShell object
Set WshShl = WScript.CreateObject(“WScript.Shell”)
‘Present the player with the equation
QuestionOne = InputBox(“What is the sum of 1 + 5 * 9 / 3 ?”, cTitlebarMsg)
‘See if the player provided an answer
If Len(QuestionOne) = 0 Then

MsgBox “Sorry. You must enter a number to play this game.”
WScript.Quit
End If
‘Make sure that the player typed a number
If IsNumeric(QuestionOne) <> True Then
MsgBox “Sorry. You must enter a number to play this game.”
WScript.Quit
End If
‘Check to see if the player provided the correct answer
If QuestionOne = 16 Then
MsgBox “Correct! You obviously know your math!”
Else
ProveIt = MsgBox(“Incorrect. Do you want to see me solve the “ & _
“equation?”, 36, cTitlebarMsg)
If ProveIt = 6 Then ‘Player wants to see the solution
97
Chapter 3 • VBScript Basics
98
‘Start the WordPad application
WshShl.Run “WordPad”
‘Pause script execution to give Windows enough time to load WordPad
WScript.Sleep 2000
‘Use WordPad to show the player how to solve the equation
WshShl.SendKeys “To answer this question you must follow the “ & _
“correct order of precedence when performing your calculations.”
WScript.Sleep 2000
WshShl.SendKeys “~~”
WshShl.SendKeys “1st, working from left to right multiply 5 * 9.”
WScript.Sleep 2000
WshShl.SendKeys “~~”

WshShl.SendKeys “2nd, divide the result by 3.”
WScript.Sleep 2000
WshShl.SendKeys “~~”
WshShl.SendKeys “3rd, add 1.”
WScript.Sleep 2000
WshShl.SendKeys “~~”
WshShl.SendKeys “The final answer is 16.”
WScript.Sleep 2000
WshShl.SendKeys “~~”
WshShl.SendKeys “~~”
WshShl.SendKeys “In case you question my math watch this!”
WScript.Sleep 2000
WshShl.SendKeys “%{F4}”
WshShl.SendKeys “%{N}”
‘Start the Calculator application
WshShl.Run “Calc”
‘Use the Calculator application to solve the equation
WScript.Sleep 2000
WshShl.SendKeys 5 & “{*}”
WScript.Sleep 2000
WshShl.SendKeys 9
Microsoft WSH and VBScript Programming for the Absolute Beginner, Second Edition
WScript.Sleep 2000
WshShl.SendKeys “~”
WScript.Sleep 2000
WshShl.SendKeys “{/}” & 3
WScript.Sleep 2000
WshShl.SendKeys “~”
WScript.Sleep 2000
WshShl.SendKeys “{+}” & 1

WScript.Sleep 2000
WshShl.SendKeys “~”
WScript.Sleep 2000
WshShl.SendKeys “%{F4}”
End If
End If
I suggest that you run and test this script to make sure that it works as expected. For exam-
ple, try typing in a letter instead of a number for the answer. Then try typing nothing at all
and just click on OK or Cancel. Finally, try both a correct and then an incorrect answer and
see what happens. This is a fairly lengthy script, so the odds of typing it in correctly the first
time are slim. If you get errors when you run the script, read them carefully and see if the
error message tells you what’s wrong and then go fix it. Otherwise, you may need to double-
check your typing again.
As your scripts grow more complex, you’re going to run into more and more
errors while developing them. I recommend that you learn to develop your
scripts in a modular fashion, writing one section at a time and then testing it
before moving on to the next section. In Chapter 9, “Handling Script Errors,” I’ll
demonstrate how to do this.
Summary
In this chapter, you learned about the core and run-time VBScript objects and their associ-
ated properties and methods, and were shown how to use them within your VBScripts. You
also learned about VBScript syntax, reserved words, and special characters. In addition, you
learned about and saw the power and convenience of VBScript functions. Finally, you learned
four different ways to display script output.
TRICK
99
Chapter 3 • VBScript Basics

×