运用API函数获取系统信息



< HTML >
    
< HEAD >
        
< title > SystemInfo </ title >
        
< meta  name ="GENERATOR"  Content ="Microsoft Visual Studio .NET 7.1" >
        
< meta  name ="CODE_LANGUAGE"  Content ="C#" >
        
< meta  name ="vs_defaultClientScript"  content ="JavaScript" >
        
< meta  name ="vs_targetSchema"  content ="http://schemas.microsoft.com/intellisense/ie5" >
    
</ HEAD >
    
< body  MS_POSITIONING ="GridLayout" >
        
< form  id ="Form1"  method ="post"  runat ="server" >
            
< colgroup >
                
< col  width ="50%" >
                
< col  width ="50%" >
            
</ colgroup >
            
< table  width ="100%" >
                
< tr >
                    
< td  bgcolor ="#99ccff" > Window及系统路径: </ td >
                    
< td  bgcolor ="#99ccff" > 系统日期信息: </ td >
                
</ tr >
                
< tr >
                    
< td >
                        
< asp:Label  id ="WindowsDirectory"  runat ="server" > WindowsDirectory </ asp:Label ></ td >
                    
< td >
                        
< asp:Label  id ="Date"  runat ="server" > Date </ asp:Label ></ td >
                
</ tr >
                
< tr >
                    
< td >
                        
< asp:Label  id ="SystemDirectory"  runat ="server" > SystemDirectoryLabel </ asp:Label ></ td >
                    
< td >
                        
< asp:Label  id ="Time"  runat ="server" > Time </ asp:Label ></ td >
                
</ tr >
                
< tr >
                    
< td  bgcolor ="#99ccff" > 内存信息: </ td >
                    
< td  bgcolor ="#99ccff" > CUP信息: </ td >
                
</ tr >
                
< tr >
                    
< td >
                        
< asp:Label  id ="MemoryLoad"  runat ="server" > MemoryLoad </ asp:Label ></ td >
                    
< td >
                        
< asp:Label  id ="NumberOfProcessors"  runat ="server" > NumberOfProcessorsLabel </ asp:Label ></ td >
                
</ tr >
                
< tr >
                    
< td >
                        
< asp:Label  id ="TotalPhys"  runat ="server" > TotalPhys </ asp:Label ></ td >
                    
< td >
                        
< asp:Label  id ="ProcessorType"  runat ="server" > ProcessorTypeLabel </ asp:Label ></ td >
                
</ tr >
                
< tr >
                    
< td >
                        
< asp:Label  id ="AvailPhys"  runat ="server" > AvailPhys </ asp:Label ></ td >
                    
< td >
                        
< asp:Label  id ="ProcessorLevel"  runat ="server" > ProcessorLevelLabel </ asp:Label ></ td >
                
</ tr >
                
< tr >
                    
< td >
                        
< asp:Label  id ="TotalPageFile"  runat ="server" > TotalPageFile </ asp:Label ></ td >
                    
< td >
                        
< asp:Label  id ="OemId"  runat ="server" > OemIdLabel </ asp:Label ></ td >
                
</ tr >
                
< tr >
                    
< td >
                        
< asp:Label  id ="AvailPageFile"  runat ="server" > AvailPageFile </ asp:Label ></ td >
                    
< td >
                        
< asp:Label  id ="PageSize"  runat ="server" > PageSize </ asp:Label ></ td >
                
</ tr >
                
< tr >
                    
< td >
                        
< asp:Label  id ="TotalVirtual"  runat ="server" > TotalVirtualLabel </ asp:Label ></ td >
                    
< td ></ td >
                
</ tr >
                
< tr >
                    
< td >
                        
< asp:Label  id ="AvailVirtual"  runat ="server" > AvailVirtualLabel </ asp:Label ></ td >
                    
< td ></ td >
                
</ tr >
            
</ table >
            
< asp:Button  id ="Button1"  style ="Z-INDEX: 101; LEFT: 752px; POSITION: absolute; TOP: 304px"  Runat ="server"  Text ="获取" ></ asp:Button >
        
</ form >
    
</ body >
</ HTML >

public   class  SystemInfo : System.Web.UI.Page
{
        
//要添加如下引用
        
//using System.Runtime.InteropServices;
        
//using System.Text;
        protected System.Web.UI.WebControls.Label WindowsDirectory;
        
protected System.Web.UI.WebControls.Label SystemDirectory;
        
protected System.Web.UI.WebControls.Label NumberOfProcessors;
        
protected System.Web.UI.WebControls.Label ProcessorType;
        
protected System.Web.UI.WebControls.Label ProcessorLevel;
        
protected System.Web.UI.WebControls.Label OemId;
        
protected System.Web.UI.WebControls.Label PageSize;
        
protected System.Web.UI.WebControls.Label MemoryLoad;
        
protected System.Web.UI.WebControls.Label TotalPhys;
        
protected System.Web.UI.WebControls.Label AvailPhys;
        
protected System.Web.UI.WebControls.Label TotalPageFile;
        
protected System.Web.UI.WebControls.Label AvailPageFile;
        
protected System.Web.UI.WebControls.Label TotalVirtual;
        
protected System.Web.UI.WebControls.Label AvailVirtual;
        
protected System.Web.UI.WebControls.Label Date;
        
protected System.Web.UI.WebControls.Label Time;
        
protected System.Web.UI.WebControls.Button Button1;

        
//在调用API之前,你必须先导入System.Runtime.InteropServices这个名称空间。
        
//其中,"DllImport"属性用来从不可控代码中调用一个方法,它指定了DLL的位置,该DLL中包含调用的外部方法;
        
//"kernel32"设定了类库名;"public"指明函数的访问类型为公有的;
        
//"static"修饰符声明一个静态元素,而该元素属于类型本身而不是指定的对象;
        
//"extern"表示该方法将在工程外部执行,同时使用DllImport导入的方法必须使用"extern"修饰符
        [DllImport("kernel32")] 
        
public static extern void GetWindowsDirectory(StringBuilder WinDir,int count);
        [DllImport(
"kernel32")] 
        
public static extern void GetSystemDirectory(StringBuilder SysDir,int count);
        [DllImport(
"kernel32")] 
        
public static extern void GetSystemInfo(ref CPU_INFO cpuinfo); 
        [DllImport(
"kernel32")] 
        
public static extern void GlobalMemoryStatus(ref MEMORY_INFO meminfo); 
        [DllImport(
"kernel32")] 
        
public static extern void GetSystemTime(ref SYSTEMTIME_INFO stinfo);

        
//定义CPU的信息结构
        [StructLayout(LayoutKind.Sequential)] 
        
public struct CPU_INFO 
        

            
public uint dwOemId; 
            
public uint dwPageSize; 
            
public uint lpMinimumApplicationAddress; 
            
public uint lpMaximumApplicationAddress; 
            
public uint dwActiveProcessorMask; 
            
public uint dwNumberOfProcessors; 
            
public uint dwProcessorType; 
            
public uint dwAllocationGranularity; 
            
public uint dwProcessorLevel; 
            
public uint dwProcessorRevision; 
        }

        
//定义内存的信息结构
        [StructLayout(LayoutKind.Sequential)] 
        
public struct MEMORY_INFO 
        
{
            
public uint dwLength;
            
public uint dwMemoryLoad; 
            
public uint dwTotalPhys; 
            
public uint dwAvailPhys; 
            
public uint dwTotalPageFile; 
            
public uint dwAvailPageFile; 
            
public uint dwTotalVirtual; 
            
public uint dwAvailVirtual; 
        }

        
//定义系统时间的信息结构
        [StructLayout(LayoutKind.Sequential)] 
        
public struct SYSTEMTIME_INFO 
        

            
public ushort wYear; 
            
public ushort wMonth; 
            
public ushort wDayOfWeek; 
            
public ushort wDay; 
            
public ushort wHour; 
            
public ushort wMinute; 
            
public ushort wSecond; 
            
public ushort wMilliseconds; 
        }



        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
// Put user code to initialize the page here
        }


        
Web Form Designer generated code

        
private void Button1_Click(object sender, System.EventArgs e)
        
{
            
//调用GetWindowsDirectory和GetSystemDirectory函数分别取得Windows路径和系统路径
            const int nChars = 128;
            StringBuilder Buff 
= new StringBuilder(nChars);
            GetWindowsDirectory(Buff,nChars);
            WindowsDirectory.Text 
= "Windows路径:"+Buff.ToString();
            GetSystemDirectory(Buff,nChars);
            SystemDirectory.Text 
= "系统路径:"+Buff.ToString();
            
//调用GetSystemInfo函数获取CPU的相关信息
            CPU_INFO CpuInfo;
            CpuInfo 
= new CPU_INFO();
            GetSystemInfo(
ref CpuInfo);
            NumberOfProcessors.Text 
= "本计算机中有"+CpuInfo.dwNumberOfProcessors.ToString()+"个CPU";
            ProcessorType.Text 
= "CPU的类型为"+CpuInfo.dwProcessorType.ToString();
            ProcessorLevel.Text 
= "CPU等级为"+CpuInfo.dwProcessorLevel.ToString();
            OemId.Text 
= "CPU的OEM ID为"+CpuInfo.dwOemId.ToString();
            PageSize.Text 
= "CPU中的页面大小为"+CpuInfo.dwPageSize.ToString();
            
//调用GlobalMemoryStatus函数获取内存的相关信息
            MEMORY_INFO MemInfo;
            MemInfo 
= new MEMORY_INFO();
            GlobalMemoryStatus(
ref MemInfo);
            MemoryLoad.Text 
= MemInfo.dwMemoryLoad.ToString()+"%的内存正在使用";
            TotalPhys.Text 
= "物理内存共有"+MemInfo.dwTotalPhys.ToString()+"字节";
            AvailPhys.Text 
= "可使用的物理内存有"+MemInfo.dwAvailPhys.ToString()+"字节";
            TotalPageFile.Text 
= "交换文件总大小为"+MemInfo.dwTotalPageFile.ToString()+"字节";
            AvailPageFile.Text 
= "尚可交换文件大小为"+MemInfo.dwAvailPageFile.ToString()+"字节";
            TotalVirtual.Text 
= "总虚拟内存有"+MemInfo.dwTotalVirtual.ToString()+"字节";
            AvailVirtual.Text 
= "未用虚拟内存有"+MemInfo.dwAvailVirtual.ToString()+"字节";
            
//调用GetSystemTime函数获取系统时间信息
            SYSTEMTIME_INFO StInfo;
            StInfo 
= new SYSTEMTIME_INFO();
            GetSystemTime(
ref StInfo);
            Date.Text 
= StInfo.wYear.ToString()+""+StInfo.wMonth.ToString()+""+StInfo.wDay.ToString()+"";
            Time.Text 
= (StInfo.wHour+8).ToString()+""+StInfo.wMinute.ToString()+""+StInfo.wSecond.ToString()+"";
        }

}

你可能感兴趣的:(api)