最近因为项目需要需要实现桌面图标和任务状态栏的隐藏功能,实现的方式很多,比如修改注册表值,调用windows API函数等。经过一番的查阅,这个功能暂时实现了,或许不是很好的方法,但是我预期的效果达到了,希望各位博友批评指正。^_^
好了,废话不多说~ 按步骤 GO!
Step1:通过VS建立一个winform项目,在代码界面添加引用
using System.Runtime.InteropServices;
这一步骤很重要,因为下面有很多函数和功能是封装在上面的类库中
Step2: 照着下图拖控件
Step3: 调用windows API 函数,也即在form2的代码界面添加如下代码:
[DllImport("User32.dll", EntryPoint = "FindWindow")]public extern static IntPtr FindWindow(string lpClassName, string lpWindowName);[DllImport("user32.dll", EntryPoint = "ShowWindow", SetLastError = true)]static extern bool ShowWindow(IntPtr hWnd, uint nCmdShow);
Step4: 定义如下两个函数,实现桌面图标和状态栏的显示和隐藏:
////// 隐藏任务栏和桌面图标 /// private void hideTaskbar() { IntPtr trayHwnd = FindWindow("Shell_TrayWnd", null); IntPtr hStar = FindWindow("Button", null); IntPtr desktopPtr = FindWindow("Progman", null); if (trayHwnd != IntPtr.Zero) { ShowWindow(desktopPtr, 0);//隐藏桌面图标 (0是隐藏,1是显示) ShowWindow(trayHwnd, 0);//隐藏任务栏 ShowWindow(hStar, 0);//隐藏windows 按钮 } } ////// 显示任务栏和桌面图标 /// private void showTaskbar() { IntPtr trayHwnd = FindWindow("Shell_TrayWnd", null); IntPtr hStar = FindWindow("Button", null); IntPtr desktopPtr = FindWindow("Progman", null); if (trayHwnd != IntPtr.Zero) { ShowWindow(desktopPtr, 1); ShowWindow(trayHwnd, 1); ShowWindow(hStar, 1); } }
Step5: 在button的click事件中添加上面函数的调用
////// 隐藏桌面。。。按钮 /// /// /// private void button1_Click(object sender, EventArgs e) { hideTaskbar(); } ////// 显示桌面 。。。按钮 /// /// /// private void button2_Click(object sender, EventArgs e) { showTaskbar(); }
启动调试。。。 嘿嘿 是不是实现了~!
Over!
到此这个功能算是实现了~! 最后,希望大家多多支持~,有啥问题欢迎给我留言哦~