正文

运用API函数获取系统信息2007-07-24 13:07:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/tiay/27822.html

分享到:

1.htm页面<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> 2.cs代码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()+"秒";        }    }

阅读(1970) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册