Try this way:
1. Use SHChangeNotifyRegister() to register a self-defined message
2. In main message loop, monitor this message; once the message delivers, use SHGetPathFromIDList() to analyse the shell file operations
3. Use SHChangeNotifyDeregister() to unregister the message when quitting
Please notice, if the system is very busy for a mass of file operations, not each file operation would be sent a message