PRB: SendKeys May Return Illegal Function Call Error
ID: Q87773
|
The information in this article applies to:
-
Microsoft Visual Basic Standard and Professional Editions for Windows, versions 2.0, 3.0
-
Microsoft Visual Basic programming system for Windows, version 1.0
SUMMARYSYMPTOMS
The SendKeys statement reports the error "Illegal function call" when
its argument contains an incorrectly formatted string. This article
describes specific circumstances that cause this error, and contains
a code example that shows how to send any string with SendKeys.
CAUSE
The following characters have special meaning to the SendKeys statement:
+ ^ % ~ ( ) [ ] { }
The SendKeys statement reports an "Illegal function call" error if its
argument contains one of the following, not enclosed in braces:
- An unmatched parenthesis () or bracket {}
- A bracket []
- Braces containing an undefined character sequence, such as {abc}
RESOLUTION
To prevent the SendKeys statement from interpreting a character,
enclose the character in braces {}. For example, to send the string
The interest rate is 5% (annually).
Use the following SendKeys syntax:
SendKeys "The interest rate is 5{%} {(}annually{)}."
MORE INFORMATIONStep-by-Step Example
The following example demonstrates how to use the SendKeys statement to
send strings that would normally cause an "Illegal function call" error:
- Start Visual Basic or from the File menu, choose New Project (ALT, F, N)
if Visual Basic is already running. Form1 is created by default.
- Place a text box (Text1) on Form1.
- Place a command button (Command1) on Form1.
- Enter the following code:
Sub Command1_Click ()
Text1.SetFocus
SendKeys sendkeys_prepare("1+2^5% ")
SendKeys sendkeys_prepare("[] ")
SendKeys sendkeys_prepare("{abc}")
End Sub
' The following function puts braces {} around characters that
' are special to the SendKeys statement.
Function sendkeys_prepare (in As String) As String
For i% = 1 To Len(in)
' Get the next character into c$.
c$ = Mid$(in, i%, 1)
' If c$ is one of the special characters.
If InStr("+^%~()[]{}", c$) Then
out$ = out$ + "{" + c$ + "}"
Else
out$ = out$ + c$
End If
Next
sendkeys_prepare = out$
End Function
- Press F5 to run the program. Click Command1. Some example text
containing characters special to SendKeys appear in Text1.
REFERENCES
"Microsoft Visual Basic: Language Reference," version 1.0, pages 283-284
Additional query words:
2.00 3.00
Keywords :
Version :
Platform :
Issue type :
|