NsScreenshot plug-in

From NSIS Wiki
Jump to navigationJump to search
Author: lzandman (talk, contrib)


Links

NsScreenshot.zip (52 KB)

Description

nsScreenshot is a NSIS-plugin created by Leon Zandman that can create a screenshot and save it to a Windows bitmap (BMP) file.

Usage

It supports two types of screenshots:

  • Full-screen capture
  • Capture of a specific window (identified by its window handle)

To capture the full screen and save it to 'c:\fullscreen.bmp' use the following script:

; Put filename of screenshot onto stack
Push "c:\fullscreen.bmp"
 
; Capture full screen
nsScreenshot::Grab_FullScreen

Pop $1
; $1 contains "ok" if the screenshot was taken
; $1 contains "error" if something went wrong
 
StrCmp $1 "ok" ok1 0
DetailPrint "nsScreenshot error"
Goto next1
ok1:
; Get image dimensions from stack (only available when "ok")
Pop $R1
Pop $R2
DetailPrint "nsScreenshot OK"
DetailPrint "Dimensions:  ($R1x$R2)"
next1:

For capturing a specific window and saving it to 'c:\screenshot.bmp' use the following script:

; Put window handle of window to be captured
; onto stack. You can use FindWindow for this.
; We'll use the NSIS window in this example
Push $HWNDPARENT
 
; Put filename of screenshot onto stack
Push "c:\screenshot.bmp"
 
; Capture window
nsScreenshot::Grab

Pop $1
; $1 contains "ok" if the screenshot was taken
; $1 contains "error" if something went wrong
 
StrCmp $1 "ok" ok1 0
DetailPrint "nsScreenshot error"
Goto next1
ok1:
; Get image dimensions from stack (only available when "ok")
Pop $R1
Pop $R2
DetailPrint "nsScreenshot OK"
DetailPrint "Dimensions:  ($R1x$R2)"
next1:

The distribution includes an example NSIS-script file that should be easy to understand.

Important Notes

! nsScreenshot always captures the full screen.

For capturing a specific window it will determine the rectangle occupied by that window and crop it out of the full screen picture, thus resulting in a screenshot of only that specific window. This means that the window to be captured has to be visible and on top when capturing!

! nsScreenshot was created after some discussion in this forum thread.

! nsScreenshot is not currently compatible with Microsoft Windows NT 6.x platform Operating Systems. See this SO Question for more details: http://stackoverflow.com/questions/11259775/nsis-plugin-nsscreenshot-not-working-in-windows-nt-6-x