public PowerNotificationService() { SystemEvents.PowerModeChanged += OnPowerModeChanged; RegisterClass(nameof(PowerNotificationService)); var msgWinHandel = WindowMessageApiImports.CreateWindowEx(0, nameof(PowerNotificationService), "", 0, 0, 0, 0, 0, HwinConstants.HWND_MESSAGE, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); DeviceNotificationHelper.RegisterPowerSettingNotification(msgWinHandel); }
public DeviceChangedNotificationService() { SystemEvents.DisplaySettingsChanged += (_, _) => Debug.WriteLine("@@@@@@@@@@@@@@@@ Settings Changed"); RegisterClass(nameof(DeviceChangedNotificationService)); var msgWinHandel = WindowMessageApiImports.CreateWindowEx(0, nameof(DeviceChangedNotificationService), "", 0, 0, 0, 0, 0, HwinConstants.HWND_MESSAGE, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero); DeviceNotificationHelper.RegisterMonitorDeviceNotification(msgWinHandel); }
protected void RegisterClass(string className) { _wndClass = WndClassEx.Build(); _wndClass.lpfnWndProc = WindowProc; _wndClass.lpszClassName = className; if (WindowMessageApiImports.RegisterClassEx(ref _wndClass) == 0) { Debug.WriteLine($"Failed to {nameof(RegisterClass)} '{className}': {Marshal.GetLastWin32Error()}"); } }
protected override IntPtr WindowProc(IntPtr hWnd, uint message, IntPtr wParam, IntPtr lParam) { Debug.Print($"Window Message: {(WindowMessages)message} params: 0x{wParam:X}"); switch ((WindowMessages)message) { case WindowMessages.POWERBROADCAST: HandlePowerBroadcastMsg(Marshal.PtrToStructure <PowerbroadcastSetting>(lParam)); return(new IntPtr(1)); default: return(WindowMessageApiImports.DefWindowProc(hWnd, message, wParam, lParam)); } }
protected override IntPtr WindowProc(IntPtr hWnd, uint message, IntPtr wParam, IntPtr lParam) { Debug.Print($"Window Message: {(WindowMessages)message} params: 0x{wParam:X}"); switch ((WindowMessages)message) { case WindowMessages.DEVICECHANGE: Debug.Print($"\t\tDeviceChange"); DeviceChangedMessage?.Invoke(this, EventArgs.Empty); return(new IntPtr(1)); default: return(WindowMessageApiImports.DefWindowProc(hWnd, message, wParam, lParam)); } }