一个关于电脑部分信息的小程序
using System;using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Management;
using System.Diagnostics;
using System.Threading;
namespace Test_CPU_Info
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
Process[] MyProcesses;
Thread td;
Thread mey;
Thread bty;
private void myUser()
{
ManagementObjectSearcher searcher = new ManagementObjectSearcher("select * from Win32_Processor");
foreach (ManagementObject myobject in searcher.Get())
{
this.lb_1.Text = myobject["LoadPercentage"].ToString() + " %";//CPU使用率
}
}
private void myInfo()
{
ManagementClass cimobject = new ManagementClass("Win32_Processor");
ManagementObjectCollection moc = cimobject.GetInstances();
foreach (ManagementObject mo in moc)
{
this.lb_2.Text = mo.Properties["ProcessorId"].Value.ToString();//CPU序列号
}
ManagementClass cimobject1 = new ManagementClass("Win32_DiskDrive");
ManagementObjectCollection moc1 = cimobject1.GetInstances();
foreach (ManagementObject mo in moc1)
{
this.lb_6.Text = (string)mo.Properties["Model"].Value;//磁盘序列号
}
ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration");
ManagementObjectCollection moc2 = mc.GetInstances();
foreach(ManagementObject mo in moc2)
{
if((bool)mo["IPEnabled"] == true)
this.lb_7.Text = mo["MacAddress"].ToString();//MAC地址
}
ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_baseboard");
foreach (ManagementObject mo in mos.Get())
{
this.lb_8.Text = mo["SerialNumber"].ToString();//主板序列号
break;
}
}
private void Memory()
{
Microsoft.VisualBasic.Devices.Computer myInfo = new Microsoft.VisualBasic.Devices.Computer();
//获取物理内存总量
pbMemorySum.Maximum = Convert.ToInt32(myInfo.Info.TotalPhysicalMemory / 1024 / 1024);
pbMemorySum.Value = Convert.ToInt32(myInfo.Info.TotalPhysicalMemory / 1024 / 1024);
lblSum.Text = (myInfo.Info.TotalPhysicalMemory / 1024).ToString()+"KB";
//获取可用物理内存总量
pbMemoryUse.Maximum = Convert.ToInt32(myInfo.Info.TotalPhysicalMemory / 1024 / 1024);
pbMemoryUse.Value = Convert.ToInt32(myInfo.Info.AvailablePhysicalMemory / 1024 / 1024);
lblMuse.Text = (myInfo.Info.AvailablePhysicalMemory / 1024).ToString() + "KB";
//获取虚拟内存总量
pbVmemorysum.Maximum = Convert.ToInt32(myInfo.Info.TotalVirtualMemory / 1024 / 1024);
pbVmemorysum.Value = Convert.ToInt32(myInfo.Info.TotalVirtualMemory / 1024 / 1024);
lblVinfo.Text = (myInfo.Info.TotalVirtualMemory / 1024).ToString() + "KB";
//获取可用虚拟内存总量
pbVmemoryuse.Maximum = Convert.ToInt32(myInfo.Info.TotalVirtualMemory / 1024 / 1024);
pbVmemoryuse.Value = Convert.ToInt32(myInfo.Info.AvailableVirtualMemory / 1024 / 1024);
lblVuse.Text = (myInfo.Info.AvailableVirtualMemory / 1024).ToString() + "KB";
}
private void Battery()
{
ManagementClass mc = new ManagementClass("Win32_Battery");
ManagementObjectCollection moc = mc.GetInstances();
ManagementObjectCollection.ManagementObjectEnumerator mom = moc.GetEnumerator();
if (mom.MoveNext())
{
if (mom.Current.Properties["EstimatedChargeRemaining"].Value.ToString() == "100")
{
this.lb_12.Text = "使用交流电";
}
else
{
this.lb_12.Text = mom.Current.Properties["EstimatedChargeRemaining"].Value.ToString() + "%";//电池电量
}
}
}
private void Form1_Load(object sender, EventArgs e)
{
CheckForIllegalCrossThreadCalls = false;
MyProcesses = Process.GetProcesses();
this.lb_11.Text = MyProcesses.Length.ToString();
myInfo();
myUser();
Memory();
Battery();
}
private void timer1_Tick(object sender, EventArgs e)
{
MyProcesses = Process.GetProcesses();
this.lb_11.Text = MyProcesses.Length.ToString();//获取进程总数量
td = new Thread(new ThreadStart(myUser));
bty = new Thread(new ThreadStart(Battery));
mey = new Thread(new ThreadStart(Memory));
td.Start();//配合Timer控件进行刷新
mey.Start();//配合Timer控件进行刷新
bty.Start();//配合Timer控件进行刷新
}
}
}
環境:vss2010 .NET 4.0 vss --------------------编程问答--------------------
附圖一張~ --------------------编程问答-------------------- --------------------编程问答-------------------- 先顶一下 --------------------编程问答-------------------- 我可以很明白地告诉你,你得到的所谓cpu序列号和磁盘序列号,都是型号编码(非唯一)的。 --------------------编程问答-------------------- http://product.pconline.com.cn/notebook_hdd/hitachi/302027.html
这里有和你硬盘一样id的硬盘
http://www.cpu-world.com/cgi-bin/CPUID.pl?CPUID=5015&RAW_DATA=1
EDX: BFEBFBFF "...."
这是调用cpuid获取的第二部分的某一段。 --------------------编程问答-------------------- 那该如何获取唯一 --------------------编程问答--------------------
需要指出的是,只有Intel Pentium III才拥有可以辨识其唯一性的序列号,并且可以在bios中关闭。这一设计争议很大,所以Intel最终屈服了,并且之后的处理器再也没有这一特性。 --------------------编程问答-------------------- 除 --------------------编程问答--------------------
这样的呀,这个还真不知道,学习了~ --------------------编程问答--------------------
thanks~ --------------------编程问答--------------------
学习。多谢指教。
补充:.NET技术 , C#