Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Send special character with SendKeys

I am using textboxes to send text via SendKeys, but when I insert special characters in the textbox, my application crashes. For example, when I put in a '+' in the textbox, I get this error: SendKeys string '+' is not valid.

I need a solution to send special characters with SendKeys, this is a part of my code:

SendKeys.Send(dropDownEffectsLeft1.SelectedItem.ToString() + dropDownEffectsRight1.SelectedItem.ToString() + txt1.Text);

It's all about the textbox called txt1

I think I need something like a Regex to check if my txt contains any special characters, and that I will do with:

Regex specialChar = new Regex(@"^[[email protected]]*$");

I really appreciate your help.

like image 932
Swag Avatar asked Aug 18 '13 12:08

Swag


People also ask

Why can't I send special characters in sendkeys?

" Special characters (~ {}+^%) are not supported in SendKeys if an interval value is provided. Separate calls can be used to send control characters." The SAP System will accept the Parentheses in the field if entered manually. This is only an issue in Blue Prism and the Global Send Keys.

How to use the shift key in sendkeys method?

In the SendKeys method, the character for using the SHIFT key is “+” (Plus sign), so enter the “+” sign-in code. Now plus sign works as a SHIFT key, the next key along with SHIFT we use is the F2 key.

How do you handle special characters and global send keys?

Handling Special Characters and Global Send Keys We have a process that enters A bank account Name into an SAP System. At times these Names may contain Parentheses as Customers are creating these names. ex "Bob's (Vacation) Checking" When we enter the data as we find it via "Global Send Keys" Action in a Navigation block.

What is sendkeys in VBA language?

SendKeys in VBA language is a method used to send keystrokes to the active window so that we can work manually after that. Whenever we use alphabets as the keys all the alphabets need to be in lowercase characters. It is a complex method and recommended to use only if necessary and when you are out of options


1 Answers

From MSDN SendKeys:

The plus sign (+), caret (^), percent sign (%), tilde (~), and parentheses () have special meanings to SendKeys. To specify one of these characters, enclose it within braces ({}). For example, to specify the plus sign, use "{+}". To specify brace characters, use "{{}" and "{}}". Brackets ([ ]) have no special meaning to SendKeys, but you must enclose them in braces. In other applications, brackets do have a special meaning that might be significant when dynamic data exchange (DDE) occurs.

Code

So you just need a regex to replace those characters:

string txt = Regex.Replace(txt1.Text, "[+^%~()]", "{$0}");
SendKeys.Send(txt);

Test

I tested the code and I have an online test you can check out for the regex [+^%~()]

  • Input: Plus + Caret ^ Percent % Tilde ~ Parenthis ( )
  • Output Plus {+} Caret {^} Percent {%} Tilde {~} Parenthis {(} {)}
like image 87
Daniel Gimenez Avatar answered Oct 05 '22 16:10

Daniel Gimenez