You can probably do this by loading the shapefile using the IDLffShape object, and parsing through the entities in the file to see what the data range is, and then subset your images accordingly. For more documentation on that check out this page:
http://www.exelisvis.com/docs/IDLffShape.html
Alternatively, if you have an ENVI+IDL license, you can use the ENVI api to get this information more quickly. For example:
e = envi()
file = filepath('states.shp', subdir=['examples', 'data'])
vector = e.openvector(file)
print, vector.DATA_RANGE
This will give you the data range of the shapefile, which you could then use to subset. In the case of states.shp, the data are in lat-lon coordinates.
Does this help, is this what you are looking for?
-Josh
ExelisVIS