Screenshots on VM with QTP
I am sure a lot of you have noticed that taking screenshots on a VM will result in a blank screen :)
The solution is that the machine should not be locked while running your scripts , similar to a solution provided in my earlier posts.If you missed that out here is the code:
Content of vbs File (keykaker):
' Keyboard activity faker
Set shell = WScript.CreateObject("WScript.Shell")
Set args = WScript.Arguments
interval = 180
key = "+"
output = True
' If running under WScript were not in a console so disable any output
If InStr(LCase(WScript.FullName), "wscript") > 0 Then output = False
' Handle the arguments
If args.Count > 0 Then
temp = args.Item(0)
If Not IsNumeric(temp) Then
WScript.Echo "Interval must be numeric"
ElseIf temp < 1 Then
WScript.Echo "Interval must be greater or equal to 1"
interval = temp
If args.Count = 2 Then
key = args.Item(1)
' Output some blurb so the user knows what's happening
key_desc = key
If key = "+" Then key_desc = "Shift Key"
If key = "^" Then key_desc = "Ctrl Key"
If key = "%" Then key_desc = "Alt Key"
If output Then WScript.Echo "Key press faker started: Interval = "&interval&" seconds, Key = '"&key_desc&"'"
' Main loop, easy init?
If output Then WScript.Echo "Faking keypress at " & Time
WScript.Sleep interval * 1000
TIP: As per the suggestion in the below link, instead of directly closing the remote session, executing the command “tscon.exe 0 /dest:console” on the remote machine to close the session, ensures that the remote console is still active, which will allow QTP to capture screenshot.