程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> 關於C語言 >> 用C#獲取CPU編號、硬盤編號等系統有關環境、屬性(1)

用C#獲取CPU編號、硬盤編號等系統有關環境、屬性(1)

編輯:關於C語言

如果利用C#獲取系統有關環境和屬性,這個也是在網上問得比較多的問題,不過大部分只有提問沒有回答,最近正好想做有關方面的東西,整理了一下,提供給大家,希望能給大家提供參考意見:

首先需要定義幾個結構(struct) ,便於DllImport作為返回參數調用。以下是代碼:

CpuInfo.cs

using System;
using System.Configuration;
using System.Runtime.InteropServices;

/**//**
* LayoutKind.Automatic:為了提高效率允許運行態對類型成員重新排序
* 注意:永遠不要使用這個選項來調用不受管轄的動態鏈接庫函數。
* LayoutKind.Explicit:對每個域按照FIEldOffset屬性對類型成員排序
* LayoutKind.Sequential:對出現在受管轄類型定義地方的不受管轄內存中的類型成員進行排序。
*/
/**//// <summary>
/// 定義CPU的信息結構
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct CpuInfo
...{
/**//// <summary>
/// OEM ID
/// </summary>
public uint dwOemId;
/**//// <summary>
/// 頁面大小
/// </summary>
public uint dwPageSize;
public uint lpMinimumApplicationAddress;
public uint lpMaximumApplicationAddress;
public uint dwActiveProcessorMask;
/**//// <summary>
/// CPU個數
/// </summary>
public uint dwNumberOfProcessors;
/**//// <summary>
/// CPU類型
/// </summary>
public uint dwProcessorType;
public uint dwAllocationGranularity;
/**//// <summary>
/// CPU等級
/// </summary>
public uint dwProcessorLevel;
public uint dwProcessorRevision;
}
MemoryInfo.cs
using System;
using System.Configuration;
using System.Runtime.InteropServices;

/**//**
* LayoutKind.Automatic:為了提高效率允許運行態對類型成員重新排序
* 注意:永遠不要使用這個選項來調用不受管轄的動態鏈接庫函數。
* LayoutKind.Explicit:對每個域按照FIEldOffset屬性對類型成員排序
* LayoutKind.Sequential:對出現在受管轄類型定義地方的不受管轄內存中的類型成員進行排序。
*/
/**//// <summary>
/// 定義內存的信息結構
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct MemoryInfo
...{
/**//// <summary>
///
/// </summary>
public uint dwLength;
/**//// <summary>
/// 已經使用的內存
/// </summary>
public uint dwMemoryLoad;
/**//// <summary>
/// 總物理內存大小
/// </summary>
public uint dwTotalPhys;
/**//// <summary>
/// 可用物理內存大小
/// </summary>
public uint dwAvailPhys;
/**//// <summary>
/// 交換文件總大小
/// </summary>
public uint dwTotalPageFile;
/**//// <summary>
/// 可用交換文件大小
/// </summary>
public uint dwAvailPageFile;
/**//// <summary>
/// 總虛擬內存大小
/// </summary>
public uint dwTotalVirtual;
/**//// <summary>
/// 可用虛擬內存大小
/// </summary>
public uint dwAvailVirtual;
}
SystemTimeInfo.cs
using System;
using System.Configuration;
using System.Runtime.InteropServices;

/**//**
* LayoutKind.Automatic:為了提高效率允許運行態對類型成員重新排序
* 注意:永遠不要使用這個選項來調用不受管轄的動態鏈接庫函數。
* LayoutKind.Explicit:對每個域按照FIEldOffset屬性對類型成員排序
* LayoutKind.Sequential:對出現在受管轄類型定義地方的不受管轄內存中的類型成員進行排序。
*/
/**//// <summary>
/// 定義系統時間的信息結構
/// </summary>
[StructLayout(LayoutKind.Sequential)]
public struct SystemTimeInfo
...{
/**//// <summary>
/// 年
/// </summary>
public ushort wYear;
/**//// <summary>
/// 月
/// </summary>
public ushort wMonth;
/**//// <summary>
/// 星期
/// </summary>
public ushort wDayOfWeek;
/**//// <summary>
/// 天
/// </summary>
public ushort wDay;
/**//// <summary>
/// 小時
/// </summary>
public ushort wHour;
/**//// <summary>
/// 分鐘
/// </summary>
public ushort wMinute;
/**//// <summary>
/// 秒
/// </summary>
public ushort wSecond;
/**//// <summary>
/// 毫秒
/// </summary>
public ushort wMilliseconds;
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved