运用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#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: This call is required by the ASP.NET Web Form Designer.
//
InitializeComponent();
base.OnInit(e);
}

/** <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
this.Button1.Click += new System.EventHandler(this.Button1_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion

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()+"秒";
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值