For suspend/resume, listen to sysevents with an event mask of 0x00FFFF00, you'll figure it out when you see the events :) (0x400X for suspend, 0x1000X for resume, iirc)
There's a simple sample in the SDK for this, just remove the dispatches and register it to listen to the system event mask (0x00ffff00). This would be the only *neat* way not to use callbacks for this, in my opinion.
For other events than standby/resume, well... I guess you need to fiddle around ;)