C#隐藏桌面图标和任务栏

最近因为项目需要需要实现桌面图标和任务状态栏的隐藏功能,实现的方式很多,比如修改注册表值,调用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!

到此这个功能算是实现了~! 最后,希望大家多多支持~,有啥问题欢迎给我留言哦~

posted @ 2016-01-20 15:12  天黑不熄灯  阅读(3250)  评论(0编辑  收藏  举报