Phil,
My point about the requirement for .NET 2.0 was my own "doh!" moment; I did see it in your original code posting as a requirement, and I did have it installed on my development machine. I built a quick test app to run on the target computer, which had XP SP2 but was (initially) missing .NET 2.0.
Why APC's installer chooses to disable the generic Windows functionality is a mystery to me. I'm fully in agreement with you that the user app should get its info from the OS, and not be dependent on a hardware manufacturer. But after restoring the MS driver, everything works, including APC's stuff.
The APC PowerChute s/w seems to work OK for me so far. It was pretty straightforward to install its components. The remote console can manage multiple UPSes, and allows you to determine battery health, state of charge, percent of rated load, etc., plus gives you 24 hours' graph of incoming line voltage. I'm fairly impressed by its functionality. Of course, if your UPS-protected system is off-network, none of this info is available.
Thanks for posting the code which shows how to register for the .NET event. I don't know about others' experiences, but I find the hierarchy of available methods/properties/events exposed by the OS through .NET to be difficult to browse. I know how to set up the nodes, etc., but how do I quickly find what I need? It's hit-or-miss for me when I go looking for solutions through MSDN. Though I suppose I used to feel that way when I first started to use CLNs with the Win32 API.
Dave
David Boyd
Sr. Test Engineer
Abbott Labs
(lapsed) Certified LabVIEW Developer