桌面置顶显示服务器信息
前言
在手头上做的项目很多,管理的服务器也很多。
一个项目最少也得2+以上的服务器。
在各个项目部署的时候,要来回切换不同的服务器。
搞着搞着就不知道当前远程在哪台服务器了。
所以希望在电脑桌面上可以很快的知道当前远程连接到了哪台服务器
设置背景桌面
最开始的时候,我们在每台服务器的背景桌面图片。
在图片上把当前服务器信息都做到图片上,
然后把这个图片设置为服务器的背景图片。
这样一远程到服务器上,就可以知道当前是哪台服务器了
然而这种方式有很大的弊端。
就是当我把一些应用最大化之后,背景图片就已经完全看不到了。
而且只能显示一些静态信息。比如机器名,系统版本,IP
还有就是我们99%的时间是看不到背景图片的。
所以这种方式有用,但是也很鸡肋。
实现功能
所以在休息的时候,自己有些WinForm的知识。
打算开发一个应用,可以在电脑桌面的右下角
实时显示当前服务器的信息。
比如机器名,系统版本,登录用户,内存,CPU,磁盘,IP
当有应用最大化后,这些信息也在最顶层显示出来
效果图如下
关键代码
设置Form
this.BackColor = System.Drawing.Color.White;//设置背景
this.ClientSize = new System.Drawing.Size(1024, 768);//界面大小
this.ControlBox = false;//不显示标题栏
this.Controls.Add(this.panel1);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;//无边框
this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
this.MaximizeBox = false;
this.MinimizeBox = false;
this.Name = "Form1";
this.ShowIcon = false;
this.ShowInTaskbar = false;//不显示在任务栏
this.TopMost = true;//置顶
this.TransparencyKey = System.Drawing.Color.White;//透明
this.WindowState = System.Windows.Forms.FormWindowState.Maximized;//最大化显示
获取服务器信息
string strQuery = "select Caption,CSName,TotalVisibleMemorySize from win32_OperatingSystem";
SelectQuery queryOS = new SelectQuery(strQuery);
string Caption = "";
string CSName = "";
ulong TotalVisibleMemorySize = 0;
using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(queryOS))
{
using (var queryResult = searcher.Get())
{
foreach (var os in queryResult)
{
Caption = (string)os["Caption"];
CSName = (string)os["CSName"];
TotalVisibleMemorySize = (ulong)os["TotalVisibleMemorySize"];
}
}
}
return new OSInfoModel() { Caption = Caption, CSName = CSName, TotalVisibleMemorySize = TotalVisibleMemorySize };
获取更多服务器信息,请参考
https://docs.microsoft.com/en-us/previous-versions/aa394084(v=vs.85)
获取IP
var listIP = new List<String>();
foreach (NetworkInterface ni in NetworkInterface.GetAllNetworkInterfaces())
{
if (ni.NetworkInterfaceType == NetworkInterfaceType.Wireless80211 || ni.NetworkInterfaceType == NetworkInterfaceType.Ethernet)
{
foreach (UnicastIPAddressInformation ip in ni.GetIPProperties().UnicastAddresses)
{
if (ip.Address.AddressFamily == System.Net.Sockets.AddressFamily.InterNetwork)
{
var ipStr = ip.Address.ToString();
if (!(ipStr.StartsWith("169") || ipStr.EndsWith(".1") || ipStr.EndsWith(".255")))
listIP.Add(ipStr);
}
}
}
}
return String.Join(Environment.NewLine, listIP);
获取动态信息
//获取CPU使用率
this.CpuPC = new PerformanceCounter("Processor", "% Processor Time", "_Total");
this.CpuPC.NextValue()
//获取可用内存
this.RamPC = new PerformanceCounter("Memory", "Available KBytes");
this.RamPC.NextValue()
//获取磁盘性能
this.DiskPC = new PerformanceCounter("PhysicalDisk", "% Idle Time", "_Total");
this.DiskPC.NextValue()
关于获取更多服务器性能信息。可参考“性能监视器"
下载
都看完了,你确定不点个赞再走?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?