- No notification available. Devara Gudda is right. You request info from the Pasteboard to check for changes (changeCount should be an indicator).
You should keep in mind that system pasteboard is a shared container, that stores only info about data it contains. All applications can access it at any time to get the data. And that's it. No additional info.
And now this is where you have to make some tricks to connect pasteboard data with some environment state you need.
Yes, I have managed to get the source-application for the pasteboard data. I am tracking currently active application all the time my app is running. And when pasteboard changes it's contents I can see what application was active at this time. Now this is not an ideal solution - there are cases that cannot be covered by this method. But still it works in 99% cases.
I don't know how you can get the info you need for questions #2 and #3. But I hope you can apply this knowledge and invent some tricky way :)
Good luck!