* getting desktop path
loShell = CREATEOBJECT ('WScript.Shell')
lcDesktop = loShell.SpecialFolders('desktop')
* select file
lcXLS = GETFILE('XLSx')
IF EMPTY(lcXLS)
* user has cancelled
RETURN
ENDIF
LOCAL oForm
oForm = CREATEOBJECT("Form")
WITH oForm
.HEIGHT = 550
.WIDTH = 360
.AUTOCENTER=.T.
.CAPTION=[Dashboard]
.MINBUTTON=.F.
.MAXBUTTON=.F.
.ALWAYSONTOP=.T.
.NEWOBJECT("ExcelObject","oleExcelObject") && Add OLE object
WITH .ExcelObject
.LEFT = 5
.TOP = 5
.WIDTH = .PARENT.WIDTH - 10
.HEIGHT = .PARENT.HEIGHT - 10
.VISIBLE = .T.
ENDWITH
.NEWOBJECT("Timer1","oTimer")
oForm.SHOW(1) && form is modal, so no need for READ EVENTS
ENDWITH
DEFINE CLASS oleExcelObject AS OLECONTROL
OLECLASS ="Excel.Sheet" && Server name
OLETYPEALLOWED = 0 && Linked
DOCUMENTFILE = lcXLS && This file should exist
ENDDEFINE
DEFINE CLASS oTimer AS TIMER && timer
INTERVAL=5000
PROCEDURE TIMER
THIS.ENABLED = .F.
DO ScreenShot(THIS.PARENT)
THIS.ENABLED = .T.
ENDDEFINE
PROCEDURE ScreenShot
PARAMETER oFORM
PRIVATE oFORM
#INCLUDE gpImage.h
IF NOT "gpImage" $ SET("Procedure")
SET PROCEDURE TO gpImage ADDITIVE
ENDIF
GDIP = CREATEOBJECT("gpInit")
img = CREATEOBJECT("gpImage")
img.Capture(oFORM.HWND)
LOCAL lnTitleHeight, lnLeftBorder, lnTopBorder
lnTitleHeight = SYSMETRIC(9)
lnLeftBorder = SYSMETRIC(3)
lnTopBorder = SYSMETRIC(4)
img.Crop(lnLeftBorder, lnTitleHeight + lnTopBorder, ;
img.ImageWidth - (lnLeftBorder * 2), ;
img.ImageHeight - (lnTitleHeight + (lnTopBorder * 2)))
img.SaveasBMP(lcDesktop+'\'+"Dash")
img = NULL
GDIP = NULL
RELEASE oFORM
ENDFUNC