We help IT Professionals succeed at work.

Check out our new AWS podcast with Certified Expert, Phil Phillips! Listen to "How to Execute a Seamless AWS Migration" on EE or on your favorite podcast platform. Listen Now

x

SendKeys not working

Medium Priority
2,209 Views
Last Modified: 2012-05-07
Hi all,
I am using the following script to reboot my DSL router. It is working perfectly fine when a user account is signed in. But when the computer is locked(Windows + L key) the script fails. I have investigated and found that SendKeys will not work when the computer is locked. So what are my options? What should I use instead of "Sendkeys"?
Note: This script is run from a VB.NET application whenever internet stays disconnected for more than 2 minutes....
Can the script be eliminated and done form inside the VB.NET code?
OS: Windows XP SP3
VB.NET 2008
On Error Resume Next
strComputer = "."
 
Dim  WshShell, Windir, i, objWMIService,SeverName
 
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
 
Set WshShell = CreateObject("WScript.Shell")
WinDir = WshShell.ExpandEnvironmentStrings("%WinDir%")
ServerName = " 192.168.1.1"
 
 
        'Launch telnet session from the command line
        WshShell.Run "telnet " & ServerName
        'Wait until the application has loaded
        WScript.Sleep 300    
        Set ColProcesses = objWMIService.ExecQuery("Select * from Win32_Process",,48)
        For Each Process in ColProcesses
           If Process.Name = "telnet.exe"  Then
              WshShell.AppActivate Process.Name
           End If
        Next
            wscript.sleep 100
            WshShell.SendKeys "root"
            wscript.sleep 200
            WshShell.SendKeys "{ENTER}"
            wscript.sleep 200
            WshShell.SendKeys "admin"
            wscript.sleep 200
            WshShell.SendKeys "{ENTER}"
            wscript.sleep 200
            WshShell.SendKeys "reboot"
            wscript.sleep 200
            WshShell.SendKeys "{ENTER}"
            wscript.sleep 200
Set ColProcesses = objWMIService.ExecQuery("Select * from Win32_Process",,48)
        For Each Process in ColProcesses
           If Process.Name = "telnet.exe" Then
              Process.Terminate()
           End If
        Next

Open in new window

Comment
Watch Question

SendKeys is used to send the message that a keyboard's key has been pressed to a window. So, of course, somebody must be logged on the machine.
High School Computer Science, Computer Applications, Digital Design, and Mathematics Teacher
CERTIFIED EXPERT
Top Expert 2009
Commented:
Unlock this solution and get a sample of our free trial.
(No credit card required)
UNLOCK SOLUTION
Mike TomlinsonHigh School Computer Science, Computer Applications, Digital Design, and Mathematics Teacher
CERTIFIED EXPERT
Top Expert 2009

Commented:
I just did another simple test and was able to open a telnet window and send several commands while the computer was LOCKED.  =)
CERTIFIED EXPERT
Most Valuable Expert 2012
Top Expert 2014

Commented:

Author

Commented:
Thanks Idle_mind..... This was exactly what I was looking for....
Unlock the solution to this question.
Thanks for using Experts Exchange.

Please provide your email to receive a sample view!

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.