`
foible
  • 浏览: 44778 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

在.Net中用C#调用Windows系统信息的代码

 
阅读更多

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace WinShutdown
{
public partial class WinInfo : Form
{
//定义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 ;
}

[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);

public WinInfo()
{
InitializeComponent();
tmrTime.Start();
}
private void tmrTime_Tick(object sender, 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);
lblDate.Text = StInfo.wYear.ToString() + "年" + StInfo.wMonth.ToString() + "月" + StInfo.wDay.ToString() + "日";
lblTime.Text = (StInfo.wHour + 8).ToString() + "点" + StInfo.wMinute.ToString() + "分" + StInfo.wSecond.ToString() + "秒";
}


}
}

PS:
.Text = 前面的变量我都是用Lable的控件来代替.用于显示在From里...注意:在From里最好用个trimer控件来监听这些Lable控件, 所以我有了trimer控件中的唯一一个事件Tick...

希望对.Net学习的朋友提供一帮助!当然,这些资料都是从网上下载的,我只做了归纳而已...

分享到:
评论

相关推荐

    ASP.net 中用C#调用Java web service 图解教程

    ASP.NET 中使用 C# 调用 Java Web Service ...在 ASP.NET 中使用 C# 调用 Java Web Service 需要了解 Web Service 的基本概念、使用 C# 调用 Java Web Service 和在 ASP.NET 中实现 Web Service 的客户端和服务器端。

    在ASP.NET中用C#代码实现对数据表的插入操作[归纳].pdf

    本文将详细介绍如何在ASP.NET中利用C#代码实现对数据库表的插入操作。此过程包括创建数据库助手类、编写插入SQL语句以及在网页上触发插入操作等步骤。通过本教程,读者将能够理解整个流程,并能够根据自己的需求进行...

    C#转换成vb.net工具

    1. 类型系统:C#和VB.NET都支持强类型,但它们在声明变量、常量以及类型别名方面有不同的语法。 2. 控制结构:如if语句、for循环、while循环和switch语句在两种语言中有所不同,需要进行适当的转换。 3. 函数和方法...

    ASP.NET(C#)__PayPal国际支付接口实现源码

    ASP.NET与C#结合实现的PayPal国际支付接口是一个关键的技术点,在电子商务网站开发中扮演着重要角色。PayPal作为全球领先的在线支付平台,为商家提供了便捷、安全的支付解决方案。下面将详细介绍如何通过C#编程语言...

    asp.net中用web chart做各类统计图

    在 ASP.NET 中,Web Chart 是一种强大的工具,用于创建交互式、丰富的图表,它能够帮助开发者将复杂的数据可视化,便于用户理解和分析。Web Chart 不仅适用于简单的柱状图、饼图,还支持线形图、散点图等多种复杂的...

    C#调用VC++.net 2005动态链接库

    在.NET框架中,C#是一种常用的编程语言,而VC++.net 2005是Microsoft ...以上就是C#调用VC++.net 2005动态链接库的基本步骤和注意事项。正确处理类型映射和内存管理是关键,确保不会出现内存泄漏或其他运行时错误。

    asp.net c# 在类中使用session的方法

    在Web应用程序开发中,特别是在ASP.NET C#应用中,正确且有效地在类中使用Session是非常重要的,这能帮助我们实现用户个性化体验、购物车管理、登录状态维护等功能。 ### 一、理解ASP.NET中的Session Session对象...

    c#在odb.net下实现数据库从mysql->oracle迁移

    描述中提到的“在.net2008中用c#绘制windowsform”,意味着我们需要利用C#来创建一个图形用户界面(GUI),通过Windows Forms展示给用户。这个界面可能包含按钮、文本框等控件,允许用户设置迁移参数或者触发迁移...

    数据库的通用访问代码 asp.net(C#语言)

    /// 此类为抽象类,不允许实例化,在应用时直接调用即可 /// public abstract class SqlHelper { //获取数据库连接字符串,其属于静态变量且只读,项目中所有文档可以直接使用,但不能修改 public static ...

    C# 调用C++ 生成的dll 源代码

    P/Invoke允许.NET应用程序直接调用Windows API和其他原生DLL中的函数。在C#代码中,我们需要定义一个对应的托管方法,并用`DllImport`特性进行标记,指定DLL的路径和要调用的函数名。 2. **结构和数据类型匹配** ...

    c# 调用带参数的存储过程

    综上所述,这段代码展示了如何在C#中通过`SqlConnection`、`SqlCommand`和`SqlDataAdapter`等对象调用SQL Server中的存储过程,并将结果封装到`DataSet`对象中。这种方法非常适合需要频繁与数据库交互的应用场景,...

    C#调用openAI的APi接口实现窗口聊天功能

    .netframework6.0 使用Betalgo.OpenAI.GPT3库 实现从textBox1输入问题,点击发送按钮,提出的问题和结果显示到listBox1窗口 需要注意的是需要自己注册获得openAI的密钥,以及代理地址,否则无法访问获得结果

    学习vb.net中用到的一些电子书2

    在VB.NET中,可以创建和调用存储过程,提高性能并减少网络流量。 9. **LINQ to SQL**: 这是.NET Framework提供的一种更高级的数据库查询方式,允许你使用C#或VB.NET的语法直接查询数据库。虽然不是VB.NET数据库编程...

    C#中用三种方法打印PDF文档

    在C#中,我们可以借助Ghostscript .NET库来调用Ghostscript服务。首先,确保安装了Ghostscript及其.NET接口。然后,在代码中创建`GhostscriptProcessor`对象,设置参数并启动打印: ```csharp using Ghostscript...

    在Windows中用C#开发USB的接口库

    完全的通用USB开发库,不需要要任何的驱动(Windows自带),本人开发USB上位机软件包时,发现都是非托管的C++调用库,C#调用库非常少。所以收集了这个,供用.NET方式开发USB的朋友使用。(也包含VC++调用案例)

    C#.net编写的向XP或NT系统当前黙认打印机添加自定义纸张DLL

    本文将深入探讨如何使用C#.NET编写DLL(动态链接库)来实现这一功能,特别是在Windows XP和NT系统上向默认打印机添加自定义纸张的过程。 首先,我们需要了解C#.NET编程基础。C#.NET是一种面向对象的编程语言,它...

    Microsoft .NET Framework概述-C#学习(1)

    - ADO.NET是.NET Framework中用于数据库访问的组件,它提供了DataSet、DataTable、DataAdapter等对象,支持离线数据操作和关系数据与XML的转换。 16. **属性** - 属性是C#中一种特殊的方法,用来封装对象的成员...

    C# ashx接口实现 实例

    通过`JieKou`和`JieFaSong`文件夹中的代码,我们可以学习如何创建和调用这样的接口,理解HTTP请求的基本流程,以及在C#中处理HTTP请求和响应的方法。这对于构建分布式系统和API接口具有重要的实践意义。

Global site tag (gtag.js) - Google Analytics