Question

I tried to execute the bellow perl script and locked the user session...

$n=15;
while($n>0)
{
  print "$n,";
  $n--;
  sleep(1);
}

It worked as usual without any extra code..., There was no output when i locked the session, as i locked the session before the next second. The output seen when I unlocked the session:

C:\Pradeep>perl test.pl
15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,
C:\Pradeep>

When i run the script bellow which I use to connect to a server using Win32::GuiTest functions like SetForegroundWindow($_); SendKeys("Password01"); etc... it connected without any issues and the server login was successful. But, when i lock my session in the middle of my execution and unlocked the session, the execution of script was completed, but the server login was not done.

use Win32::GuiTest qw(FindWindowLike GetWindowText SetForegroundWindow SendKeys);
system('"start %windir%\system32\mstsc.exe"');    
$Win32::GuiTest::debug = 0;    
$max_Sleep_time=3;
$Cur_Sleep_time=0;
do
{
  sleep(1);    
  @windows = FindWindowLike(0, "Remote Desktop Connection");
 $number_of_windows_opend = scalar(@windows);        
  $Cur_Sleep_time++;
}while ($number_of_windows_opend==0&&$Cur_Sleep_time!=$max_Sleep_time);
for (@windows) {
  SetForegroundWindow($_);         
  SendKeys("server_name");    
  SendKeys("{ENTER}"); 
  sleep(10);
  @windows_seq = FindWindowLike(0, "Windows Security");
     for (@windows_seq)    {
      SetForegroundWindow($_);
          SendKeys("Password01");
          SendKeys("{ENTER}");
    }
@windows={};
exit;
  }

According to me I used the active windows for doing my functionality. So it is not working. is there any other way i can successfully do the above functionality if the user session is locked in the middle of the execution process. or do i have to make changes in my code?

Was it helpful?

Solution

Instead of using send keys use WMSetText(); function. It takes the window/control HWND and text as input and sets the text to the specified object.

Note: Using WMSetText(); you can just set the text, you can't send keys like {ENTER},{F1} etc...

OTHER TIPS

You've already been told the answer several times:

  1. http://perlmonks.org/?node_id=1073507
  2. http://perlmonks.org/?node_id=1073302
  3. http://perlmonks.org/?node_id=1073530

This is explained in the documentation of Win32::GuiTest. For obvious security reasons you can't send keys to applications when the screen is locked, you can't send keys to appications which aren't active.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top