private async Task ManageShown(HWND hWND) { await Task.Delay(500); DesktopWindow desktopWindow = new DesktopWindow(hWND); desktopWindow.GetInfo(); if (desktopWindow.IsRuntimePresent()) { SystrayContext.Logger.Information($"window created"); DesktopWindowsManager.AddWindow(desktopWindow); } }
public void GetWindows() { User32.EnumWindowsProc filterDesktopWindows = delegate(HWND windowHandle, IntPtr lparam) { DesktopWindow desktopWindow = new DesktopWindow(windowHandle); if (desktopWindow.IsRuntimePresent()) { User32.ShowWindow(windowHandle, ShowWindowCommand.SW_RESTORE); desktopWindow.GetInfo(); if (Windows.ContainsKey(desktopWindow.GetDesktopMonitor())) { if (!Windows[desktopWindow.GetDesktopMonitor()].Contains(desktopWindow)) { AddWindow(desktopWindow); } } else { Windows.Add( desktopWindow.GetDesktopMonitor(), new ObservableCollection <DesktopWindow>(new DesktopWindow[] { }) ); AddWindow(desktopWindow); } } return(true); }; User32.EnumWindows(filterDesktopWindows, IntPtr.Zero); foreach (var desktopMonitor in Windows) { Windows[desktopMonitor.Key].CollectionChanged += Windows_CollectionChanged; } }