// ReSharper restore RedundantAssignment /// <summary> /// Locates Windows system windows, like TaskBar and locates Power8 MainButton inside it. /// Starts location update thread. Subscribes to Settings Manager events and registers HotKey. /// </summary> private void WindowLoaded(object sender, RoutedEventArgs e) { _taskBar = API.FindWindow(API.WndIds.TRAY_WND_CLASS, null); CheckWnd(_taskBar, API.WndIds.TRAY_WND_CLASS); SystemScale = 1f / 96; using (var g = Graphics.FromHwnd(_taskBar)) { SystemScale *= g.DpiX; } if (Util.OsIs.SevenOrMore && !Util.OsIs.TenOrMore) //7 --> 8.1 { _midPanel = API.FindWindowEx(_taskBar, IntPtr.Zero, API.WndIds.TRAY_REBAR_WND_CLASS, null); CheckWnd(_midPanel, API.WndIds.TRAY_REBAR_WND_CLASS); if (Util.OsIs.EightBlueOrMore) { _startBtn = API.FindWindowEx(_taskBar, IntPtr.Zero, API.WndIds.SH_W8_1_START_CLASS, null); CheckWnd(_startBtn, API.WndIds.SH_W8_1_START_CLASS); } _showDesktopBtn = API.FindWindowEx(_taskBar, IntPtr.Zero, API.WndIds.TRAY_NTF_WND_CLASS, null); CheckWnd(_showDesktopBtn, API.WndIds.TRAY_NTF_WND_CLASS); _showDesktopBtn = API.FindWindowEx(_showDesktopBtn, IntPtr.Zero, API.WndIds.SH_DSKTP_WND_CLASS, null); CheckWnd(_showDesktopBtn, API.WndIds.SH_DSKTP_WND_CLASS); } else //XP, 10 { var hostClass = Util.OsIs.TenOrMore ? API.WndIds.SH_W8_1_START_CLASS : API.WndIds.SH_DSKTP_START_CLASS; _showDesktopBtn = API.FindWindowEx(_taskBar, IntPtr.Zero, hostClass, null); CheckWnd(_showDesktopBtn, hostClass); } Left = 0; Top = 0; SetParent(this.MakeGlassWpfWindow()); Util.ForkStart(WatchDesktopBtn, "ShowDesktop button watcher"); //Register as a HWND that will be used as device notification processor proxy by DriveManager DriveManager.SetReporter(this.GetHandle()); SettingsManager.WarnMayHaveChanged += SettingsManagerOnWarnMayHaveChanged; SettingsManager.ImageChanged += SettingsManagerOnImageChanged; SettingsManager.PicStretchChanged += SettingsManagerOnImageStretchChanged; SettingsManager.BgrThreadLock.Set(); API.RegisterHotKey(this.GetHandle(), 0, API.fsModifiers.MOD_ALT, Keys.Z); this.RegisterHook(WndProc); }