Specifically, it can access screen content, but not window content. As in, passing in the desktop hwnd gets you a picture, passing in a different hwnd gets you a bunch of black. At least as of when I tried it a few months ago on Windows 10.
All of the windows visible on screen. For my use case, I was taking a screenshot of my app (for automated testing), so I ended up taking a full desktop screenshot and cropping it to the window.
Exactly. I'm writing a (low-frequency) arbitrage program in Clojure for fun, but the long confirmation time for BTC and the inability to move non-BTC currencies between exchanges greatly limits this in practicality.
Sorry for slow response. I sure wish HN would mail me when people comment.
Sure, the updater can break itself. But in practice, you rarely update the updater because the majority of the features you might want to update are in the app, not the updater.
So you update the updater very rarely and cautiously, and you update the app quickly and fearlessly. It's not 100% foolproof, but it's a lot better than the alternative: Any crash bug anywhere in the application having the capacity to disable updates.