Following up on this, I wound up sticking with Java and going with the JNA library specifically for getting the locations and sizes of other windows on-screen. I did what I wanted to, plus more. I wound up going further and made a way for someone to not only record their screen (or portions of it, being able to specify windows, monitors, or everything), but also let someone stream their selected area to someone else.
I learned a lot from doing this too. To send the "video" which wound up just being a steady feed of Buffered Images, you have to make sure your code is efficient and your threads don't mess up anything. Otherwise, the video your friend/client receives will appear choppy, slow, or out of order. Granted, recording two 1920 x 1080 monitors at 60fps destroyed my CPU by using 70%+, but that is pretty close to 4k so I was somewhat satisfied with that. I probably won't be able to do much better than that with Java using the Robot screen capture.
I am going to try it in Python next to see if I can make it more efficient and get access to other windows in a less roundabout way.