2008-12-04 82 views

回答

3

System.Management Namespace 提供訪問一組豐富的有關係統,設備和儀表的Windows管理規範(WMI)基礎設施應用的管理信息和管理事件。

Win32 Processor WMI類表示可以解釋運行在Windows操作系統上的計算機上的指令序列的設備。在多處理器計算機上,每個處理器都存在一個Win32_Processor類的實例。該類包括一個Processor family type字段,編碼諸如AMD Opteron處理器系列之類的東西。

C# issuing WMI query的一個例子是在頁面的末尾。

11

請注意,這是從VS2003:

using(ManagementObjectSearcher win32Proc = new ManagementObjectSearcher("select * from Win32_Processor"),   
    win32CompSys = new ManagementObjectSearcher("select * from Win32_ComputerSystem"), 
     win32Memory = new ManagementObjectSearcher("select * from Win32_PhysicalMemory")) 
      { 
       foreach (ManagementObject obj in win32Proc.Get()) 
       { 
        clockSpeed = obj["CurrentClockSpeed"].ToString(); 
        procName = obj["Name"].ToString(); 
        manufacturer = obj["Manufacturer"].ToString(); 
        version = obj["Version"].ToString(); 
       } 
+3

注意,「CurrentClockSpeed」是不是你應該尋找確定MHz的財產(Windows在低利用率時可以降低大多數現代處理器的功耗,從而節省能源)。 相反,您應該看看「MaxClockSpeed」 - 這是Windows可以爲處理器提供時鐘的最大時鐘速度。 – BrainSlugs83 2013-05-30 01:21:32

0

此代碼將獲得CPU性能

Imports System.Management 



    Private Sub InsertInfo() 
       lstView.Items.Clear() 

       Dim searcher As New ManagementObjectSearcher("select * from Win32_Processor") 

       Try 
        For Each share As ManagementObject In searcher.Get() 

         Dim grp As ListViewGroup 
         Try 
          grp = lstView.Groups.Add(share("Name").ToString(), share("Name").ToString()) 
         Catch 
          grp = lstView.Groups.Add(share.ToString(), share.ToString()) 
         End Try 

         If share.Properties.Count <= 0 Then 
          MessageBox.Show("No Information Available", "No Info", MessageBoxButtons.OK, MessageBoxIcon.Information) 
          Return 
         End If 


         For Each PC As PropertyData In share.Properties 

          Dim item As New ListViewItem(grp) 
          If lstView.Items.Count Mod 2 <> 0 Then 
           item.BackColor = Color.White 
          Else 
           item.BackColor = Color.WhiteSmoke 
          End If 

          item.Text = PC.Name 

          If PC.Value IsNot Nothing AndAlso PC.Value.ToString().Length > 0 Then 
           Select Case PC.Value.GetType().ToString() 
            Case "System.String[]" 
             Dim str As String() = DirectCast(PC.Value, String()) 

             Dim str2 As String = "" 
             For Each st As String In str 
              str2 += st & " " 
             Next 

             item.SubItems.Add(str2) 

             Exit Select 
            Case "System.UInt16[]" 
             Dim shortData As UShort() = DirectCast(PC.Value, UShort()) 


             Dim tstr2 As String = "" 
             For Each st As UShort In shortData 
              tstr2 += st.ToString() & " " 
             Next 

             item.SubItems.Add(tstr2) 

             Exit Select 
            Case Else 

             item.SubItems.Add(PC.Value.ToString()) 
             Exit Select 
           End Select 
          Else 
           Continue For 
          End If 
          lstView.Items.Add(item) 
         Next 
        Next 


       Catch exp As Exception 
        MessageBox.Show("can't get data because of the followeing error " & vbLf & exp.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Information) 
       End Try 


       End Sub