Reputation: 249
I want to take a screen shot of application when error occurs & save it in a specific folder. Below code works but it doesnt take a screen shot of application, it takes a screen shot of QTP Code screen.
Function CaptureImage()
Dim Date_Time
Dim Myfile
Date_Time=Now()
Myfile= Date_Time&".png"
Myfile = Replace(Myfile,"/","-")
Myfile = Replace(Myfile,":","-")
Myfile= "C:\"&Myfile
Desktop.CaptureBitmap Myfile, True
End Function
Upvotes: 2
Views: 22287
Reputation: 420
Dim ScreenName
On Error Resume Next
ScreenName = " "
CurrentTime = "_Test_Case"&"_"& Day(Now)&"_"& Month(Now)&"_"& Year(Now)&"_"&
Hour(Now)&"_"& Minute(Now)&"_"& Second(Now)
ScreenShotName = "Name_of_the_Screen" & CurrentTime & ".png"
ScreenName ="Path where the Screenshot needs to be stored"&"\"&ScreenShotName
Desktop.CaptureBitmap ScreenName,True
This should work.
Upvotes: 4
Reputation: 15889
Your code is doing exactly what you are asking it to do - taking a screenshot of the desktop. If you want to take a screenshot of a specific application then just make sure the application is visible/top-most on the desktop.
If you need to do that in code you can try the Activate
method on various top-level objects. For example:
Window("Notepad").Activate
If you have a Browser you need to activate, you could try something like:
hwnd = Browser("...").GetROProperty("hwnd")
Window("hwnd:=" & hwnd).Activate
...and then take a screenshot. Really though the application under test should already be in the foreground and active if QTP opened it and has been performing actions on it.
Upvotes: 1