I came upon your question while trying to solve a similar situation. I wanted to take the "shadows" from an image of a barn to use as an overlay on text to give the impression of the text being painted on the side of the barn. I'm not sure if my solution was the "best" way, but seemed to be fairly simple and give a lot of control to the effect I was going for. I'll explain my specific application, but hopefully anyone could use this for similar situations. So, here's what I did:
First, I "Saved As" a separate file, so I wasn't affecting my original image. I had only the barn image visible and a separate empty background layer behind it. Since this was a print project, I was working in CMYK mode. Clicking on the "Channels" tab, I duplicated the "Black" channel, then deleted the CMYK channels, leaving only my newly created duplicate (which had now pulled the black pixels from the barn, since that was my only visible layer). This also removed all layers except the background with the image from the "Black" channel showing. I changed this from CMYK to Grayscale and then placed this layer in my original image. I then used this as a clipping mask over my text (which was not active text; I had moved this in as a smart object from Illustrator) and changed the blending mode to multiply.
I'm sure the Select > Color Range could work, but I think this gives a "truer" selection than that approach and with out any futzing around with selection settings.