public OpenedWindow GetActive() { var activeHwnd = LowLevel.GetForegroundWindow(); var buffer = new StringBuilder(255); LowLevel.GetWindowText(activeHwnd, buffer, buffer.Capacity + 1); var title = buffer.ToString(); return(new OpenedWindow { Hwnd = activeHwnd, Title = title == string.Empty ? "EMPTY" : title }); }
public IEnumerable <OpenedWindow> GetOpenedWindows() { var openedWindows = new List <OpenedWindow>(); var filter = new EnumerateFunc((hwnd, param) => { var buffer = new StringBuilder(255); LowLevel.GetWindowText(hwnd, buffer, buffer.Capacity + 1); var title = buffer.ToString(); if (!LowLevel.IsWindowVisible(hwnd) || string.IsNullOrEmpty(title) || hwnd == (IntPtr)0x0) { return(true); } LowLevel.GetWindowThreadProcessId(hwnd, out var processId); var executablePath = LowLevelHelper.GetUwpApplicationName(hwnd, processId); if (executablePath == null) { return(true); } if (_excludedProcesses.Any(x => executablePath.Contains(x) || title.Contains(x))) { return(true); } openedWindows.Add(new OpenedWindow { Hwnd = hwnd, Title = title, ExecutablePath = executablePath, Uid = _hashProvider.Create(hwnd.ToString()) }); return(true); }); LowLevel.EnumDesktopWindows(IntPtr.Zero, filter, IntPtr.Zero); return(openedWindows); }