在快速启动里,有一个按钮"显示桌面",点第一次,会隐藏所有窗口,再点一次,会显示所有窗口.如何在C#里,调用函数,实现这样的功能.(主要是因为在"显示桌面"的情况下,应用程序弹出的窗口,都无法看到.只有点击任务栏里的窗口,才可以看到.)

解决方案 »

  1.   

    C:\Documents and Settings\Administrator\Application Data\Microsoft\Internet Explorer\Quick Launch\显示桌面
      

  2.   


    我的问题和这个类似:http://community.csdn.net/Expert/topic/3971/3971928.xml?temp=.5399286
    请问,"显示桌面"这个操作,Windows是怎么处理的?应该不是对窗口最小化,也不是Hide().如何在程序里恢复"显示桌面".调用Show(),还是不显示,必须手工点击任务里的窗口条.
      

  3.   

    用win+D组合键可以实现显示桌面,所以你在程序中写两个键组合就可以实现了.
      

  4.   


    用SendKey.Send,好象没有"WIN"对应的键值哦.怎么在程序里模拟"WIND+D"?
      

  5.   

    看看这个
    http://blogs.msdn.com/robgruen/archive/2004/02/24/79294.aspx// Create an instance of the shell class            Shell32.ShellClass objShel = new Shell32.ShellClass();                             // Show the desktop            ((Shell32.IShellDispatch4) objShel).ToggleDesktop();                                   // Do some operations here             // Restore the desktop            ((Shell32.IShellDispatch4) objShel).ToggleDesktop();
      

  6.   


    谢谢 Jim3(Jim) ,但我如何判断当前状态,用户是不是按下了"显示桌面"按钮呢?我有一个操作,必须在用户没有按下显示桌面的情况下执行.所以,需要:if (用户按下了显示桌面)
    {
      恢复桌面
    }
      

  7.   


    而且,我按上面的方法,加入shell32.dll引用
    再调用((Shell32.IShellDispatch4) objShel).ToggleDesktop();提示:
    类型或命名空间名称“IShellDispatch4”在类或命名空间“Shell32”中不存在
      

  8.   

    不要通过《是不是按下了"显示桌面"按钮》这个去判断因为用户也可以通过系统的显示桌面按钮来显示或者隐藏桌面你可以用别的条件,比如是否激活等另外shell32.dll的版本问题,5.0的没有IShellDispatch4的定义,6.0的才有
      

  9.   


     Jim3(Jim) 能讲详细点吗?如何判断是否激活?
      

  10.   

    你可以根据Form.Focused判断if (!this.Focused)
    {
      //恢复桌面并使自己获得焦点
      
    }主要是因为不能确切得到当前桌面的状态,才使用辅助的方法:显示桌面时
    this.Focused为false上述方法虽有缺陷,但希望能满足你的程序的要求
      

  11.   


    没用.在用户点了显示桌面按钮后,this.Show();
    this.Activate();
    this.Focus();都不能把窗口弹出来显示,虽然获得了焦点.
      

  12.   

    显示桌面的文件包含的代码如下[Shell]
    Command=2
    IconFile=explorer.exe,3
    [Taskbar]
    Command=ToggleDesktop思路就是创建一个Windows的Shell对象
    然后,调用 ToggleDesktop