#region (系统检测部分)定义
//CPU频率 单位:hz
protected string CpuMHZ;
//总共的内存 单位:M
public string CpuInfo;
//总共的内存 单位:M
public string CpuInfo_user;
//硬盘
private delegate void dAddControl();
//声明赋值
private dAddControl myAddControl = null;
//全局实例窗体
frmCA frm;
#endregion
#region (系统监测部分)检测加载
#region 先行隐藏文字控件等待加载
this.lbl_neicun.Visible = false;
this.lbl_xitong.Visible = false;
this.lbl_chuliqi.Visible = false;
this.lbl_worldtopdf.Visible = false;
this.label_pdf.Visible = false;
this.label_ie.Visible = false;
this.label_flash.Visible = false;
this.label10.Visible = false;
this.label11.Visible = false;
this.label16.Visible = false;
this.label14.Visible = false;
this.label19.Visible = false;
this.label20.Visible = false;
this.label21.Visible = false;
#endregion
#region 页面所有滚动轮的加载启动
//页面圆圈滚动图
loadingCircle1.Active = true;
loadingCircle3.Active = true;
loadingCircle2.Active = true;
loadingCircle4.Active = true;
loadingCircle5.Active = true;
loadingCircle6.Active = true;
loadingCircle7.Active = true;
loadingCircle8.Active = true;
loadingCircle9.Active = true;
loadingCircle10.Active = true;
loadingCircle11.Active = true;
loadingCircle12.Active = true;
loadingCircle13.Active = true;
loadingCircle14.Active = true;
#endregion
//硬盘读取
myAddControl = new dAddControl(addControl);
Task.Factory.StartNew(diskInfo);
#region 文字控件赋值
#region 检测注册表是否安装转换PDF组件
Task.Factory.StartNew(() =>
{
//是否存在该组件 PDF注册表是否存在
if (IsRegeditExit("{3A85969E-7C6E-41CB-B7DC-812A0A0C5FD8}"))
{
// 赋值是
this.label_pdf.Text = "是";
this.loadingCircle4.Visible = false;
this.label_pdf.Visible = true;
}
else
{
//赋值否
this.label_pdf.Text = "否";
this.label_pdf.ForeColor = System.Drawing.Color.Maroon;
this.loadingCircle4.Visible = false;
this.label_pdf.Visible = true;
}
});
#endregion
#region IE版本号
// 检查IE版本号
string verIE = (new WebBrowser()).Version.ToString();
// 赋值
this.label_ie.Text = verIE;
this.loadingCircle5.Visible = false;
this.label_ie.Visible = true;
#endregion
#region 最大内存
//内存最大/内存使用的 集合类方法取值,得到根据指定的Key行到Value
Dictionary<string, string> myDictionary = GetMemoryInfo();
//内存最大
string memorySize = myDictionary["memorySize"];
//赋值
this.lbl_neicun.Text = Convert.ToInt32(memorySize) / 1000 + "(G)内存";
//总共的内存 单位:M
//隐藏和显示
this.loadingCircle1.Visible = false;
this.lbl_neicun.Visible = true;
#endregion
#region 获取系统信息
string systemName = Banbens();
//赋值
this.lbl_xitong.Text = systemName;
//系统版本信息
//隐藏和显示
this.loadingCircle2.Visible = false;
this.lbl_xitong.Visible = true;
#endregion
#region 处理器信息
//处理器信息
//CPU信息
CpuInfo = GetCpuInfo();
//赋值
this.lbl_chuliqi.Text = CpuInfo;
//隐藏和显示
this.loadingCircle3.Visible = false;
this.lbl_chuliqi.Visible = true;
#endregion
#region winform检测是否安装了flash
// winform检测是否安装了flash
RegistryKey keyroot = Registry.ClassesRoot;
// 安装了flash的注册表
string flashkey = @"CLSID\{D27CDB6E-AE6D-11cf-96B8-444553540000}";
RegistryKey rkFlash = keyroot.OpenSubKey(flashkey);
if (rkFlash == null)
{
//赋值
this.label_flash.Text = "未安装";
//隐藏和显示
this.loadingCircle6.Visible = false;
this.label_flash.Visible = true;
//System.Diagnostics.Process.Start(Application.StartupPath + "\\flash10.exe");
}
else
{
//赋值
this.label_flash.Text = "已安装";
//隐藏和显示
this.loadingCircle6.Visible = false;
this.label_flash.Visible = true;
}
#endregion
#endregion
//线程组
Task.Factory.StartNew(() =>
{
#region 图片压缩速度 5M测评速率为准
//打开文件
Bitmap Test_img = Properties.Resources.Test_zip;
MemoryStream stream = new MemoryStream();
//保存文件格式为文件流
Test_img.Save(stream, ImageFormat.Png);
//Stopwatch 方法监控耗时
Stopwatch sw = new Stopwatch();
//开始计时
sw.Start();
CompressImage(stream, ImageFormat.Png);
//停止计时
sw.Stop();
//时间毫秒
var ms = sw.ElapsedMilliseconds;
this.label16.Text = "压缩速度 5M最大耗时约" + Convert.ToString(ms) + "毫秒";
this.label14.Text = "压缩速度 10M最大耗时约" + Convert.ToString(ms * 2) + "毫秒";
this.label21.Text = "压缩速度 100M最大耗时约" + (ms * 20 / 1000).ToString("f2") + "秒";
this.label16.Visible = true;
this.loadingCircle9.Visible = false;
this.label14.Visible = true;
this.loadingCircle10.Visible = false;
this.label21.Visible = true;
this.loadingCircle13.Visible = false;
#endregion
#region 上传文件时间
//指定地点访问该地址
PingReply reply = GetSpeed("180.97.33.108");
this.label10.Text = "上传数据 ICMP 5M最大耗时约" + Convert.ToString(reply.RoundtripTime * 3413 / 2 / 1000) + "秒";
this.label11.Text = "上传数据 ICMP 10M最大耗时约" + Convert.ToString(reply.RoundtripTime * 6826 / 2 / 1000) + "秒";
this.label20.Text = "上传数据 ICMP 100M最大耗时约" + Convert.ToString(reply.RoundtripTime * 68260 / 2 / 1000 / 60) + "分钟";
this.label19.Text = "上传数据 ICMP 300M最大耗时约" + Convert.ToString(reply.RoundtripTime * 202780 / 2 / 1000 / 60) + "分钟";
this.label10.Visible = true;
this.loadingCircle7.Visible = false;
this.label11.Visible = true;
this.loadingCircle8.Visible = false;
this.label20.Visible = true;
this.loadingCircle12.Visible = false;
this.label19.Visible = true;
this.loadingCircle11.Visible = false;
#endregion
#region PDF打开速度 20M(5M*4次)测评速率为准
// 打开文件
byte[] FiveMworld = Properties.Resources.TextWord;
// Stopwatch 方法监控耗时
Stopwatch pdfTime = new Stopwatch();
// 开始计时
pdfTime.Start();
// Word转PDF
EB.Common.Tools.AsposeWordUtil.WordToPdf(FiveMworld);
//停止计时
pdfTime.Stop();
//时间毫秒
var pdfTimems = pdfTime.ElapsedMilliseconds;
if (this.IsHandleCreated)
{
// 委托
this.Invoke(new Action(() =>
{
this.lbl_worldtopdf.Text = "约为" + Convert.ToString(pdfTimems * 4 / 1000) + "秒";
this.lbl_worldtopdf.Visible = true;
this.loadingCircle14.Visible = false;
}));
}
#endregion
});
#endregion
#region (系统检测部分)检测方法
#region 硬盘使用情况
private void diskInfo()
{
try
{
//方法查询硬盘使用情况
gbDisks.Invoke(myAddControl);
}
catch
{
Thread.Sleep(2000);
}
}
#endregion
#region 硬盘使用情况自动增加控件
private void addControl()
{
try
{
DriveInfo[] driveInfos = DriveInfo.GetDrives();
int x = 9;
int y = 20;
foreach (DriveInfo driveInfo in driveInfos)
{
Label lb = new Label();
lb.Text = driveInfo.Name;
lb.Size = new Size(25, 15);
lb.Location = new Point(x, y);
Label txt = new Label();
//TextBox txt = new TextBox();
//硬盘使用情况自动增加
txt.Location = new Point(lb.Location.X + 30, lb.Location.Y - 6);
//大小
txt.Size = new Size(200, 30);
//内容
txt.Text = ((float)driveInfo.AvailableFreeSpace / 1024 / 1024 / 1024).ToString() + "G/" + ((float)driveInfo.TotalSize / 1024 / 1024 / 1024).ToString() + "G";
//样式
txt.TextAlign = System.Drawing.ContentAlignment.MiddleLeft;
gbDisks.Controls.Add(lb);
gbDisks.Controls.Add(txt);
//位置
y += 30;
gbDisks.Size = new Size(gbDisks.Size.Width, gbDisks.Size.Height + 5);
}
}
catch
{
}
}
#endregion
#region IP测速
/// <summary>
/// IP测速
/// </summary>
/// <param name="ip">IP地址</param>
/// <returns></returns>
public PingReply GetSpeed(string ip)
{
try
{
//指定文件传输
string Txt_speed = Properties.Resources.txt;
//byte[] b = ReadFile(Txt_speed);
Ping ping = new Ping();
PingOptions options = new PingOptions
{
DontFragment = true
};
//string data = "测试回执速度";
byte[] bites = Encoding.UTF8.GetBytes(Txt_speed);
PingReply reply = ping.Send(ip, 120, bites, options);
//reply.RoundtripTime往返回送请求并接收相应 ICMP 回送答复消息所用的毫秒数
return reply;
}
catch (Exception)
{
return null;
}
}
#endregion
#region 将filename文件转换成文件流
//读filename到byte[],将系统文件转换成文件流传输
private byte[] ReadFile(string fileName)
{
FileStream pFileStream = null;
byte[] pReadByte = new byte[0];
try
{
//打开文件进行读取
pFileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read);
BinaryReader r = new BinaryReader(pFileStream);
//将文件指针设置到文件开
r.BaseStream.Seek(0, SeekOrigin.Begin);
pReadByte = r.ReadBytes((int)r.BaseStream.Length);
//返回文件流
return pReadByte;
}
catch
{
return pReadByte;
}
finally
{
if (pFileStream != null)
pFileStream.Close();
}
}
#endregion
#region 获取磁盘写入读取信息
/// <summary>
/// 获取磁盘写入读取信息
/// </summary>
public Dictionary<string, string> GetDiskInfo()
{
// 读取磁盘
PerformanceCounter diskReadManage = new PerformanceCounter("PhysicalDisk", "Disk Read Bytes/sec", "_Total");
// 写入磁盘
PerformanceCounter diskWriteManage = new PerformanceCounter("PhysicalDisk", "Disk Write Bytes/sec", "_Total");
//上一次读取磁盘的值
float diskReadLoad = 0;
// 上一次写入磁盘的值
float diskWriteLoad = 0;
int count = 0;
while (count < 2)
{
// 读取磁盘的数率
diskReadLoad = diskReadManage.NextValue() / 1024 / 1024;
// 写入磁盘的数率
diskWriteLoad = diskWriteManage.NextValue() / 1024 / 1024;
Console.WriteLine("读取数率 = " + diskReadLoad.ToString("f2") + "M/S");
Console.WriteLine("写入数率 = " + diskWriteLoad.ToString("f2") + "M/S");
Thread.Sleep(1000);
count++;
}
Dictionary<string, string> dic = new Dictionary<string, string>();
dic.Add("diskReadLoad", diskReadLoad.ToString("f2"));
dic.Add("diskWriteLoad", diskWriteLoad.ToString("f2"));
return dic;
}
#endregion
#region 获取CPU的编号
/// <summary>
/// 获取CPU的编号
/// </summary>
/// <returns></returns>
public static string GetCpuID()
{
try
{
//获取CPU序列号代码
string cpuInfo = " ";
//cpu序列号
ManagementClass mc = new ManagementClass("Win32_Processor");
//查询CPU
ManagementObjectCollection moc = mc.GetInstances();
foreach (ManagementObject mo in moc)
{
//查询结果
cpuInfo = mo.Properties["ProcessorId"].Value.ToString();
}
moc = null;
mc = null;
//返回值
return cpuInfo;
}
catch (Exception)
{
return "unknow ";
}
finally
{
}
}
#endregion
#region CPU频率
/// <summary>
/// CPU频率 单位:hz
/// </summary>
/// <returns></returns>
public static string[] GetCpuMHZ()
{
//查询CPU信息
ManagementClass mc = new ManagementClass("Win32_Processor");
//引用方法
ManagementObjectCollection cpus = mc.GetInstances();
//CPU使用情况
string[] mHz = new string[cpus.Count];
int c = 0;
//查询CPU的频率
ManagementObjectSearcher mySearch = new ManagementObjectSearcher("select * from Win32_Processor");
//循环结果
foreach (ManagementObject mo in mySearch.Get())
{
mHz[c] = mo.Properties["CurrentClockSpeed"].Value.ToString();
c++;
}
mc.Dispose();
mySearch.Dispose();
//返回值
return mHz;
}
#endregion
#region 查询注册列表
/// <summary>
/// 查询注册列表
/// </summary>
/// <param name="name"></param>
/// <returns></returns>
private bool IsRegeditExit(string name)
{
// Registry类
// Registry.ClassesRoot 对应于 HKEY_CLASSES_ROOT主键
// Registry.CurrentUser 对应于HKEY_CURRENT_USER主键
// Registry.LocalMachine 对应于 HKEY_LOCAL_MACHINE主键
// Registry.User 对应于 HKEY_USER主键
// Registry.CurrentConfig 对应于HEKY_CURRENT_CONFIG主键
// Registry.DynDa 对应于HKEY_DYN_DATA主键
// Registry.PerformanceData 对应于HKEY_PERFORMANCE_DATA主键
bool _exit = false;
string[] subkeyNames;
//对应于 HKEY_CLASSES_ROOT主键
RegistryKey hkml = Registry.ClassesRoot;
//对应于 HKEY_CLASSES_ROOT目录下面的TypeLib类
RegistryKey software = hkml.OpenSubKey("TypeLib", true);
//RegistryKey aimdir = software.OpenSubKey("XXX", true);
subkeyNames = software.GetSubKeyNames();
foreach (string keyName in subkeyNames)
{
if (keyName == name)
{ _exit = true; return _exit; }
}
return _exit;
}
#endregion
#region 获取内存信息
/// <summary>
/// 获取内存信息
/// </summary>
public Dictionary<string, string> GetMemoryInfo()
{
// 总内存
long capacity = 0;
// 可用内存
int available = 0;
// 内存使用率
float memoryUsageRates = 0;
//内部查询语句
ManagementObjectSearcher capacitySearcher =
new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_PhysicalMemory");
foreach (ManagementObject obj in capacitySearcher.Get())
{
capacity += Convert.ToInt64(obj["Capacity"]);
}
//查询物理内存
capacity = capacity / 1024 / 1024;
Console.WriteLine("总物理内存:{0} MB", capacity);
//内部查询语句
ManagementObjectSearcher availableSearcher = new ManagementObjectSearcher("root\\CIMV2",
"SELECT * FROM Win32_PerfFormattedData_PerfOS_Memory");
//查询值
foreach (ManagementObject obj in availableSearcher.Get())
{
available += Convert.ToInt32(obj.Properties["AvailableMBytes"].Value);
}
//可用内存
Console.WriteLine("总可用内存:{0} MB;", available);
// 内存使用率
memoryUsageRates = (float)available / capacity * 100;
Dictionary<string, string> memoryDic = new Dictionary<string, string>();
// 总内存
memoryDic.Add("memorySize", capacity.ToString());
可用内存
//memoryDic.Add("memoryUsage", available.ToString());
内存使用率
//memoryDic.Add("memoryUsageRates", Math.Round(memoryUsageRates, 2).ToString());
//方法memoryDic返回集合
return memoryDic;
}
#endregion
#region 获取CPU信息
/// <summary>
/// 获取CPU信息
/// </summary>
/// <returns></returns>
public static string GetCpuInfo()
{
//内部查询语句
ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\CIMV2", "SELECT * FROM Win32_Processor");
//循环查询结果
foreach (ManagementObject obj2 in searcher.Get())
{
try
{
return (obj2.GetPropertyValue("Name").ToString() + "," + obj2.GetPropertyValue("CurrentClockSpeed").ToString() + " Mhz," + Environment.ProcessorCount.ToString() + " 个处理器");
}
catch
{
continue;
}
}
//返回值
return "未知";
}
#endregion
#region 图片压缩
/// <summary>
/// 图片压缩
/// </summary>
/// <param name="stream"></param>
/// <param name="imageFormat"></param>
/// <returns></returns>
public static Stream CompressImage(Stream stream, ImageFormat imageFormat)
{
Stream s = new MemoryStream();
// 画图对象
Image img;
Bitmap bmp;
Graphics grap;
// 图片的宽高
int width, height;
try
{
// 从流中获取图片
img = Image.FromStream(stream);
//设置图片宽高
double oldWidth = img.Width;
double oldHeight = img.Height;
// 设置象素宽高
if (oldWidth <= 800.0 || imageFormat == ImageFormat.Emf)
{
//条件成立返回结果
width = (int)oldWidth;
height = (int)oldHeight;
}
else
{
//条件不成立返回结果
width = 800;
height = (int)(oldHeight / oldWidth * 800);
}
// 新建图像
bmp = new Bitmap(width, height);
// 重新绘图
grap = Graphics.FromImage(bmp);
grap.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
grap.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
// 重新绘图结果
grap.DrawImage(img, new Rectangle(0, 0, width, height));
if (imageFormat == ImageFormat.Emf)
// 将图片保存到内存流
bmp.Save(s, ImageFormat.Png);
else
bmp.Save(s, imageFormat);
// 释放画图对象
bmp.Dispose();
img.Dispose();
grap.Dispose();
s.Seek(0, SeekOrigin.Begin);
//返回结果
return s;
}
//报错返回结果
catch (Exception) { throw; }
}
#endregion
#region 获取当前系统
/// <summary>
/// 当前系统
/// </summary>
/// <returns></returns>
public static string Banbens()
{
//内部查询信息
var name = (from x in new ManagementObjectSearcher("SELECT Caption FROM Win32_OperatingSystem").Get().Cast<ManagementObject>()
select x.GetPropertyValue("Caption")).FirstOrDefault();
//返回结果
return name != null ? name.ToString() : "Unknown";
}
#endregion
#region 点击按钮打开新窗口
/// <summary>
/// 按钮点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void button1_Click(object sender, EventArgs e)
{
try
{
//方法调用前传值
ElectronicSignatureUtility esUtil = new ElectronicSignatureUtility();
if (esUtil.IsErr)
//错误弹出提示
MessageUtil.ShowError(esUtil.ErrMessage);
else
{
var sealinfoList = esUtil.GetBindedElectronicSignature();
if (!esUtil.IsErr)
{
// 打开新窗体
frm = new frmCA(sealinfoList);
frm.Show();
}
else
MessageUtil.ShowTips(esUtil.ErrMessage);
}
}
catch (Exception)
{
//错误返回结果
throw;
}
}
#endregion
#endregion