C#實(shí)現(xiàn)獲取電腦硬件顯卡核心代號信息
背景
在上一篇文章已經(jīng)通過C#獲取到電腦顯卡信息,在獲取顯卡核心代號信息時(shí)是空值,
因此此篇文章通過另外一種方式獲取到核心代號信息。
第三方工具
GPU-Z 是一種常用的免費(fèi)工具,用于獲取和顯示計(jì)算機(jī)中顯卡(圖形處理單元,GPU)的詳細(xì)信息。它可以提供有關(guān)顯卡型號、驅(qū)動(dòng)版本、顯存大小、傳感器數(shù)據(jù)(如溫度、風(fēng)扇轉(zhuǎn)速等)以及其他相關(guān)硬件信息的實(shí)時(shí)讀數(shù)。
顯卡信息
GPU-Z 顯示有關(guān)顯卡的詳細(xì)信息,包括顯卡制造商、型號、顯存類型和大小、時(shí)鐘速度等。
傳感器監(jiān)控
它可以讀取和顯示顯卡的各種傳感器數(shù)據(jù),如溫度、負(fù)載、風(fēng)扇速度、功耗等。這些數(shù)據(jù)有助于你了解顯卡的性能和狀態(tài)。
即時(shí)讀取和更新
GPU-Z 可以實(shí)時(shí)讀取硬件信息,并在顯卡或驅(qū)動(dòng)程序更改時(shí)自動(dòng)更新。
導(dǎo)出和共享
你可以將 GPU-Z 的輸出導(dǎo)出為文本文件,方便與他人共享或保存以供后續(xù)分析。
支持多款顯卡
GPU-Z 可以識別和顯示各種顯卡品牌和型號的信息,包括 NVIDIA、AMD 和 Intel 等生產(chǎn)商的顯卡。
實(shí)現(xiàn)代碼
核心代號的獲取可能因顯卡廠商和驅(qū)動(dòng)程序的不同而有所差異。
以下是一種獲取核心代號的備選方法,它使用了GPU-Z工具的命令行版本:
1.首先,下載并安裝GPU-Z工具的命令行版本(GPU-Z CLI)。你可以從GPU-Z官方網(wǎng)站(https://www.techpowerup.com/gpuz/)上找到該工具,并確保將其路徑添加到系統(tǒng)環(huán)境變量中。
2.在C#代碼中,使用System.Diagnostics.Process類來執(zhí)行GPU-Z命令并捕獲輸出。
using System; using System.Diagnostics; class Program { static void Main() { // 執(zhí)行GPU-Z命令行,并捕獲輸出結(jié)果 Process process = new Process(); ProcessStartInfo startInfo = new ProcessStartInfo() { FileName = "GPU-Z.exe", // GPU-Z命令行的路徑 Arguments = "-dump=nogpu -txt=gpuz.txt", // 指定輸出格式為文本文件 RedirectStandardOutput = true, UseShellExecute = false, CreateNoWindow = true }; process.StartInfo = startInfo; process.Start(); process.WaitForExit(); // 讀取輸出文件中的核心代號 string outputFilePath = "gpuz.txt"; // 指定輸出文件的路徑 string[] lines = System.IO.File.ReadAllLines(outputFilePath); string coreName = ""; foreach (string line in lines) { if (line.StartsWith("GPU")) { // 核心代號所在行的格式為:GPU: [核心代號] coreName = line.Split(':')[1].Trim(); break; } } Console.WriteLine("核心代號: " + coreName); } }
知識補(bǔ)充
除了上文的方法,小編還為大家整理了C#獲取計(jì)算機(jī)硬件的參數(shù)信息的相關(guān)方法,希望對大家有所幫助
下面是讀取硬件參數(shù)的代碼:
public class OSInformation { public string OSName { get; set; } public string OSType { get; set; } public string OSSerialNumber { get; set; } public string ComputerName { get; set; } public string LogonUserName { get; set; } } public class HInformaiton { public string MainboardName { get; set; } public string MemorySize { get; set; } public string HarddiskSize { get; set; } public string VideocardName { get; set; } public string SoundcardName { get; set; } public string NetworkcardName { get; set; } public string ManufacturerName { get; set; } public string ManufactureDate { get; set; } } public class SInformation { public string VRV { get; set; } public string QAX { get; set; } public string WPS { get; set; } } public class WInformation { public string IP { get; set; } public string Subnetmask { get; set; } public string Gateway { get; set; } } class HardwareInformation { public static string GetJsonStr() { string ReturnStrJson = ""; var HInfor = new HInformaiton { MainboardName ="未知", MemorySize = "未知", HarddiskSize = "未知", VideocardName = "未知", SoundcardName = "未知", NetworkcardName = "未知",ManufacturerName= "未知", ManufactureDate= "未知" }; //主板信息 try { ManagementObjectSearcher myMainboard = new ManagementObjectSearcher("SELECT * FROM Win32_BaseBoard"); foreach (ManagementObject board in myMainboard.Get()) { HInfor.MainboardName = board["Product"].ToString(); //break; } } catch (Exception ex) { HInfor.MainboardName = "未知"; } //內(nèi)存信息 try { ManagementObjectSearcher myMemory = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMemory"); //定義內(nèi)存總大小變量 double MemorySize = 0; foreach (ManagementObject obj in myMemory.Get()) { //將內(nèi)存大小換算成G單位 MemorySize += Convert.ToDouble(obj["Capacity"]) / 1024 / 1024 / 1024; } HInfor.MemorySize = MemorySize.ToString()+"G"; } catch (ManagementException e) { HInfor.MemorySize = "未知"; } //硬盤信息 try { //獲取本機(jī)所有硬盤信息 ManagementObjectSearcher myHarddisk = new ManagementObjectSearcher("select * from Win32_DiskDrive"); foreach (ManagementObject drive in myHarddisk.Get()) { //獲取硬盤容量 var capacity = (Convert.ToDouble(drive["Size"]) / 1024 / 1024 / 1024).ToString("0.00") + "G"; //獲取硬盤類型 var mediaType = drive["MediaType"]; HInfor.HarddiskSize = capacity.ToString() + "|" + mediaType.ToString(); } } catch (Exception ex) { HInfor.HarddiskSize = "未知"; } //顯卡信息 try { ManagementObjectSearcher myVideoObject = new ManagementObjectSearcher("select * from Win32_VideoController"); foreach (ManagementObject obj in myVideoObject.Get()) { HInfor.VideocardName = obj["Name"].ToString(); } } catch (ManagementException e) { //e.Message HInfor.VideocardName = "未知"; } //聲卡信息 try { // 創(chuàng)建WMI搜索對象 ManagementObjectSearcher mySoundcard = new ManagementObjectSearcher("root\\CIMV2", "SELECT * FROM Win32_SoundDevice"); // 遍歷搜索結(jié)果 foreach (ManagementObject mo in mySoundcard.Get()) { // 獲取聲卡名稱 HInfor.SoundcardName = mo.GetPropertyValue("Name").ToString(); } } catch (ManagementException e) { HInfor.SoundcardName = "未知"; } //網(wǎng)卡信息(Mac地址) try { // 獲取本地網(wǎng)絡(luò)接口信息 NetworkInterface[] nics = NetworkInterface.GetAllNetworkInterfaces(); foreach (NetworkInterface adapter in nics) { // 如果是RJ45網(wǎng)卡 if (adapter.NetworkInterfaceType == NetworkInterfaceType.Ethernet) { string S1 = (string)adapter.Description; if (S1.Contains("PCI")){ HInfor.NetworkcardName = S1; } } } } catch (ManagementException e) { HInfor.NetworkcardName = "未知"; } //獲取生產(chǎn)商和生產(chǎn)日期 try { //獲取生產(chǎn)商 ManagementObjectSearcher ManufacturerInfo = new ManagementObjectSearcher("select * from Win32_ComputerSystem"); foreach (ManagementObject obj in ManufacturerInfo.Get()) { HInfor.ManufacturerName = obj["Manufacturer"].ToString(); } //獲取生產(chǎn)日期 ConnectionOptions options = new ConnectionOptions(); ManagementScope scope = new ManagementScope("\\\\.\\root\\cimv2", options); ObjectQuery query = new ObjectQuery("SELECT * FROM Win32_BIOS"); ManagementObjectSearcher BoisInfo = new ManagementObjectSearcher(scope, query); foreach (ManagementObject mo in BoisInfo.Get()) { string StrManufactureDate = mo["ReleaseDate"].ToString().Substring(0, 8); DateTime DT = DateTime.ParseExact(StrManufactureDate, "yyyyMMdd", System.Globalization.CultureInfo.CurrentCulture); HInfor.ManufactureDate = String.Format("{0:d}", DT); } } catch (Exception e) { } ReturnStrJson = JsonSerializer.Serialize(HInfor); return ReturnStrJson; } }
需要添加引用:
using Microsoft.Win32; using System.Management; using System.Text.Json; using System.Net.NetworkInformation;
調(diào)用比較簡單:
string JsonStr; //硬件信息 JsonStr = HardwareInformation.GetJsonStr(); var ObjHardware = JsonSerializer.Deserialize<Dictionary<string, object>>(JsonStr); ListBox listbox1 = tabControl1.TabPages[0].Controls["listbox1"] as ListBox; listbox1.Items.Add("主板:"+ ObjHardware["MainboardName"]); listbox1.Items.Add("內(nèi)存:" + ObjHardware["MemorySize"]); listbox1.Items.Add("硬盤:" + ObjHardware["HarddiskSize"]); listbox1.Items.Add("顯卡:" + ObjHardware["VideocardName"]); listbox1.Items.Add("聲卡:" + ObjHardware["SoundcardName"]); listbox1.Items.Add("網(wǎng)卡:" + ObjHardware["NetworkcardName"]); listbox1.Items.Add("計(jì)算機(jī)生產(chǎn)商:" + ObjHardware["ManufacturerName"]); listbox1.Items.Add("計(jì)算機(jī)生產(chǎn)日期:" + ObjHardware["ManufactureDate"]);
到此這篇關(guān)于C#實(shí)現(xiàn)獲取電腦硬件顯卡核心代號信息的文章就介紹到這了,更多相關(guān)C#獲取電腦顯卡信息內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C#實(shí)現(xiàn)拆分合并Word表格中的單元格
我們在使用Word制作表格時(shí),由于表格較為復(fù)雜,只是簡單的插入行、列并不能滿足我們的需要。要做一個(gè)完整的表格,很多時(shí)候需要將單元格進(jìn)行拆分或者合并。本文將詳細(xì)為您介紹在Word表格中拆分或合并單元格的思路及方法,希望對大家有所幫助2022-12-12漢字轉(zhuǎn)拼音軟件制件示例(漢字轉(zhuǎn)字母)
這篇文章主要介紹了c#漢字轉(zhuǎn)拼音的方法,但不能判斷多音字,大家可以參考修改使用2014-01-01BootStrap mvcpager分頁樣式(get請求,刷新頁面)
這篇文章主要介紹了BootStrap mvcpager分頁樣式(get請求,刷新頁面)的相關(guān)資料,通過引入相關(guān)文件,實(shí)現(xiàn)此功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08c#之利用API函數(shù)實(shí)現(xiàn)動(dòng)畫窗體的方法詳解
本篇文章是對c#中利用API函數(shù)實(shí)現(xiàn)動(dòng)畫窗體的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06字符串替換Replace僅替換第一個(gè)字符串匹配項(xiàng)
C#里面的String.Replace(string,string)方法替換的時(shí)候是替換所有的匹配項(xiàng),我們需要只替換第一個(gè)匹配項(xiàng),寫一個(gè)方法來實(shí)現(xiàn)這個(gè)功能2013-12-12