* Captures the entire contents of almost any visible window in the system DECLARE INTEGER scdll__capture_window IN sc.dll ; INTEGER nHwnd, ; && Such as a function that retrieves any Windows HWnd STRING cFilename, ; && Such as "c:\path\to\myscreen.bmp" INTEGER nX, ; && Upper-left X coordinate, or -1 to use all INTEGER nY, ; && Upper-left Y coordinate, or -1 to use all INTEGER nWidth, ; && Width, or -1 to use all INTEGER nHeight && Height, or -1 to use all * Captures the entire form DECLARE INTEGER scdll__capture_form IN sc.dll ; INTEGER nHwnd, ; && Such as thisForm.HWnd STRING cFilename, ; && Such as "c:\path\to\myscreen.bmp" INTEGER nX, ; && Upper-left X coordinate, or -1 to use all INTEGER nY, ; && Upper-left Y coordinate, or -1 to use all INTEGER nWidth, ; && Width, or -1 to use all INTEGER nHeight && Height, or -1 to use all * Captures the entire desktop window DECLARE INTEGER scdll__capture_screen IN sc.dll ; STRING cFilename && Such as "c:\path\to\myscreen.bmp" * Usage: scdll__capture_window(_screen.HWnd, "c:\temp\window.bmp", -1, -1, -1, -1) scdll__capture_form(thisForm.HWnd, "c:\temp\form.bmp", -1, -1, -1, -1) scdll__capture_screen("c:\temp\screen.bmp") * To capture a single object, or an area of a form defined by an object: scdll__capture_form(thisForm.HWnd, "c:\temp\object.bmp", obj.Left, obj.Top, obj.Width, obj.Height)Tamar's solution will capture scrollable parts. This will just capture the visible portion of the form. You can programmatically inject keystrokes or operations to cause it to scroll through all portions of the form if you like, and then capture each part ... but I don't use scrollable forms so it's not an issue for me / this code's needs.