Is it possible to detect when a laptop's lid is open or closed? From what I've read, this isn't possible, but SO has helped me with the impossible before.
The only thing I've found that might be in the right direction is an MSDN blog post about IOCTLs needed to report power buttons. Is it possible to "sniff" these as the OS calls them?
I'm using VB.NET, but will take suggestions in any language. Thank you for your time and advice.
Edit: My software will be (eventually) overriding the actions (based on user preference) that occur when the lid is closed, so listening for suspend and other actions that typically occur when the lid is closed isn't an option.
Complete working C# code for WPF application that shows how to listen to lid open/close events:
Keep in mind that most laptops, when the lid closes, it depresses a button. This button is usually just a sleep button. The WMI classes expose the ACPI and you would ideally want to use the PowerManagement Class. Unfortunately, the class does not raise an event when the operating system is set to "do nothing". The only way around this would be to use the DDK (Driver Development Kit) to create a filter that intercepts the IOCTL_GET_SYS_BUTTON_EVENT event. Here are two links to help you get started:
http://blogs.msdn.com/b/doronh/archive/2006/09/08/746834.aspx
and
http://support.microsoft.com/kb/302092
Use WM_POWERBROADCAST. Here's a link that can help you: Lid Close Action change notification
Power Managment
I hope it give u some direction :)