private void WMIPropsReceived(object sender, Common.Telnet.DataReceivedEventArgs e) { Dispatcher.Invoke(() => { WMIProperties.Clear(); WMIObjects.Clear(); data = e.Content.Data as WMIObjectCollection; if (data.Namespace != SelectedNamespace || data.Class != SelectedClass) { return; } foreach (WMIPropertyCollection props in data) { WMIObjects.Add(props.Name); } if (WMIObjects.Count > 0) { SelectedWMIObject = WMIObjects[0]; } RefreshGridViewColumns(lvw); }); }
private async Task <bool> CollectWMIClass() { if (string.IsNullOrEmpty(WMIClassName)) { MessageBox.Show("There is no selected WMI Class", "Warning", MessageBoxButton.OK, MessageBoxImage.Warning); return(false); } WMIProperties.Clear(); #region Preparation Cursor cursor = Main.Cursor; Main.Cursor = Cursors.Wait; Thread.Sleep(100); Main.WMIClassComboBox.Focus(); Main.WMIClassComboBox.IsDropDownOpen = false; ConnectionOptions options = new ConnectionOptions { Impersonation = System.Management.ImpersonationLevel.Impersonate }; ManagementScope scope = new ManagementScope("\\\\.\\root\\cimv2", options); scope.Connect(); //Query system for Operating System information ObjectQuery query = new ObjectQuery($"SELECT * FROM {WMIClassName}"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(scope, query); ManagementObjectCollection queryCollection = searcher.Get(); #endregion Preparation try { int collectionIndex = 0; foreach (ManagementObject managementObject in queryCollection) { int propertyIndex = 0; foreach (PropertyData propertyData in managementObject.Properties) { WMIProperties.Add(new WMIProperty(collectionIndex, propertyIndex, propertyData)); propertyIndex++; } collectionIndex++; } } catch (Exception ex) { MessageBox.Show($"Error: {ex.Message}", "Exception error", MessageBoxButton.OK, MessageBoxImage.Error); } finally { Main.Cursor = cursor; } //Main.WMIPropertiesDataGrid.ItemsSource = WMIProperties; return(true); }