It is easy to do a screen capture of the entire desktop. This method uses the API call GetDCEx from user32.dll. API functions from gdi32.dll are used to complete the task.
' nomainwin savefile$="" 'save file name WindowWidth=600:WindowHeight=500 menu #1, "&File", "&Save As...",[saveAs],"E&xit",[quit] open "Desktop Screen Capture" for graphics as #1 #1 "trapclose [quit]" calldll #user32, "GetDCEx",_ 'extended from GetDC 0 as ulong,_ 'handle of window, 0 = desktop 0 as ulong,_ 'clipping region, no used here _DCX_PARENTCLIP as long,_ 'flags hDCx as ulong 'Device Context handle calldll #gdi32, "CreateCompatibleDC",hDCx as ulong, hDst as ulong calldll #gdi32, "CreateCompatibleBitmap", _ hDCx as ulong, DisplayWidth as long, DisplayHeight as long,_ hBitmap as ulong calldll #gdi32, "SelectObject", _ hDst as ulong, hBitmap as ulong, oldObj as ulong calldll #gdi32, "BitBlt", hDst as ulong,0 as long, 0 as long,_ DisplayWidth as long, DisplayHeight as long, hDCx as long, 0 as long, 0 as long,_ _SRCCOPY as long, re as long 'select original bmp into hDst DC calldll #gdi32, "SelectObject", hDst as ulong, oldObj as ulong, re as ulong 'the screen capture is displayed for demonstration purposes loadbmp "capture",hBitmap #1 "down; cls; drawbmp capture 0 0;flush" wait [quit] if hBitmap<>0 then calldll #gdi32,"DeleteObject",hBitmap as ulong, re as long unloadbmp ("capture") end if calldll #gdi32, "DeleteDC", hDst as ulong,result as long calldll #user32, "ReleaseDC",0 as ulong, hDC as ulong, r as long close #1:end [saveAs] filedialog "Save As... ","*.bmp",savefile$ if savefile$="" or hBitmap=0 then notice "Not able to save." wait end if b$=".bmp" if lower$(right$(savefile$,4))<>b$ then savefile$=savefile$+b$ bmpsave "capture",savefile$ wait