c# GPU-Z数据读取比较
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Threading;
using System.IO;
using System.Data;
using System.ComponentModel;
using System.Drawing;
using System.Collections;
using System.Web;
namespace CheckGpuInfo
{
class Program
{
//List<string> ConfigValues = new List<string>();
static string[] ConfigValues = { "RunProgram", "RunFile", "cardname", "biosversion", "memsize", "clockgpu", "clockmem" };
static string[] InfoValues = { "cardname", "biosversion", "memsize", "clockgpu", "clockmem" };
static int Main(string[] args)
{
if (ReadCfg("config.ini") == false)//读取配置信息
{
string str = string.Empty;
str = "config.ini" + "Config Open Read Error!!";
FailInfo(str);
return 1;
}
if (CallBath(ConfigValues[0]) == false)//执行ReadGpu.BAT
{
string str = string.Empty;
str = @"Run Batch File:" + ConfigValues[0] + " Error";
FailInfo(str);
return 1;
}
if (ReadGpuInfoKeyValues(ConfigValues[1])==false)//执行配置读取
{
string str = string.Empty;
str="Read Gpu Info: "+ConfigValues[1]+" Error";
FailInfo(str);
return 1;
}
if (FccGpuValues()==false)//数据比较
{
string str = string.Empty;
str = "Fcc Gpu Number Values Error";
FailInfo(str);
return 1;
}
//foreach (string n in InfoValues)
//{
// Console.ForegroundColor = ConsoleColor.Yellow;
// Console.BackgroundColor = ConsoleColor.Red;
// Console.WriteLine(n);
//}
if (WriteKeyValues() == false)
{
return 1;
}
Console.ResetColor();
return 0;
}
static bool WriteKeyValues()
{
bool Flag = false;
string[] sstr = { @"c:\RECORD\cardname.DAT", @"c:\RECORD\biosversion.DAT", @"c:\RECORD\memsize.DAT", @"c:\RECORD\clockgpu.DAT", @"c:\RECORD\clockmem.DAT" };
int n = 0;
foreach(string nn in sstr)
{
if (WriteValues(nn,InfoValues[n])==false)
{
string str = string.Empty;
str = "Write "+nn+" Err";
FailInfo(str);
Flag = false;
return Flag;
}
n++;
}
Flag = true;
return Flag;
}
static bool WriteValues(string FileName,string str)
{
bool Flag = false;
try
{
FileStream fs = new FileStream(FileName,FileMode.Create,FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(str);
sw.Close();
fs.Close();
Flag = true;
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
Flag = false;
return Flag;
}
return Flag;
}
static bool FccGpuValues()//比较数值
{
bool Flag = false;
string []sstring ={"cardname", "biosversion", "memsize", "clockgpu", "clockmem"};
for (int i = 0, n = 2; i < InfoValues.Length;i++,n++)
{
if(i>=2)
{
if((Convert.ToInt32(InfoValues[i]))>=(Convert.ToInt32(ConfigValues[n])))
{
string str = string.Empty;
str = sstring[i] + ":" + ConfigValues[n] + @" Pass";
ShowTestResult(0, str);
}
else
{
string str = string.Empty;
str = sstring[i] + ":" + ConfigValues[n] + @" Fail";
ShowTestResult(1, str);
Flag = false;
return Flag;
}
}
else
{
if(ConfigValues[n]==InfoValues[i])
{
string str=string.Empty;
str = sstring[i] + ":" + ConfigValues[n] + @" Pass";
ShowTestResult(0,str);
}
else
{
string str = string.Empty;
str = sstring[i] + ":" + ConfigValues[n] + @" Fail";
ShowTestResult(1, str);
Flag = false;
return Flag;
}
}
}
Flag = true;
return Flag;
}
static void ShowTestResult(int n,string str)
{
if(n==0)
{
Console.ForegroundColor = ConsoleColor.Green;//设置字体颜色为绿色
}
else
{
Console.ForegroundColor = ConsoleColor.Red;//设置字体颜色为红色
}
Console.WriteLine(str);
Console.ResetColor();
}
static bool ReadGpuInfoKeyValues(string InfoFileName)//读取配置数据
{
bool Flag = false;
string[] str = { "cardname", "biosversion", "memsize", "clockgpu", "clockmem" };
try
{
FileStream fs = new FileStream(InfoFileName,FileMode.Open,FileAccess.Read);
StreamReader sr = new StreamReader(fs,Encoding.Default);
string Temp = string.Empty;
while((Temp=sr.ReadLine())!=null)
{
string[] Array = Temp.Split(new string[]{ "<",">"},StringSplitOptions.RemoveEmptyEntries);
if(Array.Length>2)
{
int n = 0;
foreach (string i in str)
{
if (Array[1].Trim() == i)
{
InfoValues[n] = Array[2];
break;
}
n++;
}
}
}
fs.Close();
sr.Close();
Flag = true;
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
Flag = false;
return Flag;
}
return Flag;
}
static void FailInfo(string ShowInfo)
{
Console.ForegroundColor = ConsoleColor.Red;//设置字体颜色为红色
Console.WriteLine(ShowInfo);
Console.ResetColor();
}
static bool CallBath(string RunFileName)//调用批处理
{
string targetDir = string.Empty;
bool Flag = false;
targetDir = System.IO.Directory.GetCurrentDirectory() + @"\";
Process proc = null;
try
{
proc = new Process();
proc.StartInfo.WorkingDirectory = targetDir;
proc.StartInfo.FileName = RunFileName;
proc.Start();
proc.WaitForExit();
Flag = true;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Flag = false;
return Flag;
}
foreach (string s in ConfigValues)
{
string[] KeyValues = { "RunProgram", "cardname", "biosversion", "memsize", "clockgpu", "clockmem" };
foreach (string s1 in KeyValues)
{
if (s1 == s)
{
string str = "Read Config.ini File " + s1 + " Key Values Err!!";
FailInfo(str);
Flag = false;
}
}
}
return Flag;
}
static bool ReadCfg(string CfgFileName)//读取配置信息
{
bool Flag = false;
string[] KeyWord={"RunProgram", "RunFile","cardname","biosversion","memsize","clockgpu","clockmem"};
FileStream fs;
StreamReader sr;
try
{
fs = new FileStream(CfgFileName, FileMode.Open, FileAccess.Read);
sr = new StreamReader(fs, Encoding.Default);
string Temp = string.Empty;
while((Temp=sr.ReadLine())!=null)
{
string[] Array=Temp.Split(new string[] {"="},StringSplitOptions.RemoveEmptyEntries);//截取字符串
int v= 0;
foreach(string K in KeyWord)
{
if (Array[0].Trim() == KeyWord[v]) ConfigValues[v] = Array[1].Trim();
v++;
}
}
Flag = true;
sr.Close();
fs.Close();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
Flag = false;
return Flag;
}
//finally
//{
// sr.Close();
// fs.Close();
//}
return Flag;
}
}
}
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.Threading;
using System.IO;
using System.Data;
using System.ComponentModel;
using System.Drawing;
using System.Collections;
using System.Web;
namespace CheckGpuInfo
{
class Program
{
//List<string> ConfigValues = new List<string>();
static string[] ConfigValues = { "RunProgram", "RunFile", "cardname", "biosversion", "memsize", "clockgpu", "clockmem" };
static string[] InfoValues = { "cardname", "biosversion", "memsize", "clockgpu", "clockmem" };
static int Main(string[] args)
{
if (ReadCfg("config.ini") == false)//读取配置信息
{
string str = string.Empty;
str = "config.ini" + "Config Open Read Error!!";
FailInfo(str);
return 1;
}
if (CallBath(ConfigValues[0]) == false)//执行ReadGpu.BAT
{
string str = string.Empty;
str = @"Run Batch File:" + ConfigValues[0] + " Error";
FailInfo(str);
return 1;
}
if (ReadGpuInfoKeyValues(ConfigValues[1])==false)//执行配置读取
{
string str = string.Empty;
str="Read Gpu Info: "+ConfigValues[1]+" Error";
FailInfo(str);
return 1;
}
if (FccGpuValues()==false)//数据比较
{
string str = string.Empty;
str = "Fcc Gpu Number Values Error";
FailInfo(str);
return 1;
}
//foreach (string n in InfoValues)
//{
// Console.ForegroundColor = ConsoleColor.Yellow;
// Console.BackgroundColor = ConsoleColor.Red;
// Console.WriteLine(n);
//}
if (WriteKeyValues() == false)
{
return 1;
}
Console.ResetColor();
return 0;
}
static bool WriteKeyValues()
{
bool Flag = false;
string[] sstr = { @"c:\RECORD\cardname.DAT", @"c:\RECORD\biosversion.DAT", @"c:\RECORD\memsize.DAT", @"c:\RECORD\clockgpu.DAT", @"c:\RECORD\clockmem.DAT" };
int n = 0;
foreach(string nn in sstr)
{
if (WriteValues(nn,InfoValues[n])==false)
{
string str = string.Empty;
str = "Write "+nn+" Err";
FailInfo(str);
Flag = false;
return Flag;
}
n++;
}
Flag = true;
return Flag;
}
static bool WriteValues(string FileName,string str)
{
bool Flag = false;
try
{
FileStream fs = new FileStream(FileName,FileMode.Create,FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(str);
sw.Close();
fs.Close();
Flag = true;
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
Flag = false;
return Flag;
}
return Flag;
}
static bool FccGpuValues()//比较数值
{
bool Flag = false;
string []sstring ={"cardname", "biosversion", "memsize", "clockgpu", "clockmem"};
for (int i = 0, n = 2; i < InfoValues.Length;i++,n++)
{
if(i>=2)
{
if((Convert.ToInt32(InfoValues[i]))>=(Convert.ToInt32(ConfigValues[n])))
{
string str = string.Empty;
str = sstring[i] + ":" + ConfigValues[n] + @" Pass";
ShowTestResult(0, str);
}
else
{
string str = string.Empty;
str = sstring[i] + ":" + ConfigValues[n] + @" Fail";
ShowTestResult(1, str);
Flag = false;
return Flag;
}
}
else
{
if(ConfigValues[n]==InfoValues[i])
{
string str=string.Empty;
str = sstring[i] + ":" + ConfigValues[n] + @" Pass";
ShowTestResult(0,str);
}
else
{
string str = string.Empty;
str = sstring[i] + ":" + ConfigValues[n] + @" Fail";
ShowTestResult(1, str);
Flag = false;
return Flag;
}
}
}
Flag = true;
return Flag;
}
static void ShowTestResult(int n,string str)
{
if(n==0)
{
Console.ForegroundColor = ConsoleColor.Green;//设置字体颜色为绿色
}
else
{
Console.ForegroundColor = ConsoleColor.Red;//设置字体颜色为红色
}
Console.WriteLine(str);
Console.ResetColor();
}
static bool ReadGpuInfoKeyValues(string InfoFileName)//读取配置数据
{
bool Flag = false;
string[] str = { "cardname", "biosversion", "memsize", "clockgpu", "clockmem" };
try
{
FileStream fs = new FileStream(InfoFileName,FileMode.Open,FileAccess.Read);
StreamReader sr = new StreamReader(fs,Encoding.Default);
string Temp = string.Empty;
while((Temp=sr.ReadLine())!=null)
{
string[] Array = Temp.Split(new string[]{ "<",">"},StringSplitOptions.RemoveEmptyEntries);
if(Array.Length>2)
{
int n = 0;
foreach (string i in str)
{
if (Array[1].Trim() == i)
{
InfoValues[n] = Array[2];
break;
}
n++;
}
}
}
fs.Close();
sr.Close();
Flag = true;
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
Flag = false;
return Flag;
}
return Flag;
}
static void FailInfo(string ShowInfo)
{
Console.ForegroundColor = ConsoleColor.Red;//设置字体颜色为红色
Console.WriteLine(ShowInfo);
Console.ResetColor();
}
static bool CallBath(string RunFileName)//调用批处理
{
string targetDir = string.Empty;
bool Flag = false;
targetDir = System.IO.Directory.GetCurrentDirectory() + @"\";
Process proc = null;
try
{
proc = new Process();
proc.StartInfo.WorkingDirectory = targetDir;
proc.StartInfo.FileName = RunFileName;
proc.Start();
proc.WaitForExit();
Flag = true;
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Flag = false;
return Flag;
}
foreach (string s in ConfigValues)
{
string[] KeyValues = { "RunProgram", "cardname", "biosversion", "memsize", "clockgpu", "clockmem" };
foreach (string s1 in KeyValues)
{
if (s1 == s)
{
string str = "Read Config.ini File " + s1 + " Key Values Err!!";
FailInfo(str);
Flag = false;
}
}
}
return Flag;
}
static bool ReadCfg(string CfgFileName)//读取配置信息
{
bool Flag = false;
string[] KeyWord={"RunProgram", "RunFile","cardname","biosversion","memsize","clockgpu","clockmem"};
FileStream fs;
StreamReader sr;
try
{
fs = new FileStream(CfgFileName, FileMode.Open, FileAccess.Read);
sr = new StreamReader(fs, Encoding.Default);
string Temp = string.Empty;
while((Temp=sr.ReadLine())!=null)
{
string[] Array=Temp.Split(new string[] {"="},StringSplitOptions.RemoveEmptyEntries);//截取字符串
int v= 0;
foreach(string K in KeyWord)
{
if (Array[0].Trim() == KeyWord[v]) ConfigValues[v] = Array[1].Trim();
v++;
}
}
Flag = true;
sr.Close();
fs.Close();
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
Flag = false;
return Flag;
}
//finally
//{
// sr.Close();
// fs.Close();
//}
return Flag;
}
}
}