public WindowInformation[] FindWindows(WindowFilterCriteria filterCriteria) { ArgumentUtility.CheckNotNull("filterCriteria", filterCriteria); var context = CreateWindowFinderEnumWindowsProcContext(filterCriteria); if (!_nativeMethods.EnumWindows(EnumWindowsCallback, context)) { throw CreateWin32ExceptionForError(_nativeMethods.GetLastWin32Error(), "Error executing 'EnumWindows'."); } return(context.Windows.ToArray()); }
private WindowFinderEnumWindowsProcContext CreateWindowFinderEnumWindowsProcContext(WindowFilterCriteria filterCriteria) { return(new WindowFinderEnumWindowsProcContext( _nativeMethods, filterCriteria.ExcludeOwnProcess ? _currentProcessID : (int?)null, filterCriteria.ProcessID, filterCriteria.ClassName, filterCriteria.WindowTitle, filterCriteria.IncludeChildWindows )); }