最近因为项目需要需要实现桌面图标和任务状态栏的隐藏功能,实现的方式很多,比如修改注册表值,调用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: 定义如下两个函数,实现桌面图标和状态栏的显示和隐藏:
/// <summary>/// 隐藏任务栏和桌面图标/// </summary>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 按钮 }}/// <summary>/// 显示任务栏和桌面图标 /// </summary>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事件中添加上面函数的调用
/// <summary>/// 隐藏桌面。。。按钮/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button1_Click(object sender, EventArgs e){hideTaskbar();}/// <summary>/// 显示桌面 。。。按钮/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void button2_Click(object sender, EventArgs e){showTaskbar();}
启动调试。。。 嘿嘿 是不是实现了~!
Over!
到此这个功能算是实现了~! 最后,希望大家多多支持~,有啥问题欢迎给我留言哦~