If you need the coordinates here’s a way to do it on mac. When the pushbutton is clicked a new window is made that is fully transparent, fills the screen and on top of most everything. Mousing on this window draws a rect and on mouse up the coordinates are sent back to Window1 for display. Press esc to cancel.
Once you have the coordinates run a Shell for the screenshot 
[code]Window1
//Label1 (sized wide enough for results)
//PushButton1
Sub Action()
dim w As new Window2 //start a new transparent window that will call back
End Sub
Sub userSelectedRect(x As integer, y As integer, w As integer, h As integer)
beep
Label1.Text = Str(x) + ", " + Str(y) + ", " + Str(w) + ", " + Str(h)
End Sub
Window2
Properties: downX, downY, dragX, dragY As Integer
Sub Open()
const cocoa = “Cocoa.framework”
const kCGMaximumWindowLevelKey = 14
declare function NSClassFromString lib cocoa (aClassName as CFStringRef) as Ptr
declare sub setOpaque lib cocoa selector “setOpaque:” (id As integer, b As boolean)
declare function clearColor lib cocoa selector “clearColor” (NSColorClass As Ptr) As Ptr
declare sub setBackgroundColor lib cocoa selector “setBackgroundColor:” _
(NSWindow As integer, backgroundColor As Ptr)
declare sub setIgnoreMouse lib cocoa selector “setIgnoresMouseEvents:” _
(id As integer, ignore As boolean)
declare sub setStyle lib cocoa selector “setStyleMask:” (id As integer, mask As UInt32)
declare sub setLevel lib “Cocoa” selector “setLevel:” (id As integer, newLevel As integer)
declare function CGWindowLevelForKey lib “Cocoa” (key as integer) as integer
dim w As integer = self.Handle
setOpaque(w, false) //set window fully transparent
setBackgroundColor(w, clearColor(NSClassFromString(“NSColor”)))
setIgnoreMouse(w, false) //don’t let mouse fall through
setStyle(w, 0) //hide title bar (maybe unnecessary)
setLevel(w, CGWindowLevelForKey(kCGMaximumWindowLevelKey)) //put above others
Bounds = new REALbasic.Rect(0, 0, Screen(0).Width, Screen(0).Height) //set bounds to fill screen
MouseCursor = System.Cursors.ArrowAllDirections //change cursor
End Sub
Function MouseDown(X As Integer, Y As Integer) As Boolean
downX = X
downY = Y
return true
End Function
Sub MouseDrag(X As Integer, Y As Integer)
dragX = X
dragY = Y
me.Invalidate
End Sub
Sub MouseUp(X As Integer, Y As Integer)
dim x0, y0, x1, y1 As integer
x0 = Min(downX, X)
x1 = Max(downX, X)
y0 = Min(downY, Y)
y1 = Max(downY, Y)
Window1.userSelectedRect(x0, y0, x1 - x0, y1 - y0)
Close
End Sub
Sub Paint(g As Graphics, areas() As REALbasic.Rect)
dim x0, y0, x1, y1 As integer
x0 = Min(downX, dragX)
x1 = Max(downX, dragX)
y0 = Min(downY, dragY)
y1 = Max(downY, dragY)
g.ForeColor = &c000000CC
g.FillRect x0, y0, x1 - x0, y1 - y0
g.ForeColor = &cFFFFFF
g.DrawRect x0, y0, x1 - x0, y1 - y0
End Sub
Function KeyDown(Key As String) As Boolean
if Asc(Key) = 27 then Close
End Function[/code]