Possible to change the new "Show Desktop"?


  1. Posts : 23
    Windows 7 Ultimate 64 bit
       #1

    Possible to change the new "Show Desktop"?


    I recently added rocketdock/rainmeter to my desktop, and I am liking their features. There's a small problem though - I often use the show desktop feature in windows 7. This hides rocketdock/rainmeter until i open another window, which is a bit annoying. During my internet searching for a fix on this, I came across a post stating just how the show desktop feature works.


    Ok, this sounds like a question for a programmer. When you press the "Show Desktop" button in Windows, something dumb happens. The first thing that is done is that any non-topmost windows are minimized. Then, Windows creates a new window (without any borders) that contains a "live display" of your desktop that is for all practicaly purposes, your desktop that you can interact with. Windows then shows you this "live display" over top of your actual desktop until you click on something.

    Now, Rocket Dock can detect when it is being minimized and stop it from happening by using some standard code. What it cannot do is detect when Windows creates this special "live display" of your desktop and puts in on top of everything else that is not a topmost window. Rocket Dock is not actually minimized, it is just hidden by the "live display" window.

    By using Spy++ and other programming tools, I can see this special "live display" desktop window being created. It is a child window of "Explorer.exe" and does not distinguish itself from other windows otherwise. This makes it very hard to detect when this "live display" window is created. It's process ID and handle changes on every reboot. I have searched high and low and have tried myself to defeat the "Show Desktop" feature but I have not found a way to do it.

    For those widgets that stay on the desktop, they probably are hooked into the Explorer shell so that it can get drawn when ever the desktop is drawn. This is fine for widgets but is impractical for regular applications that use regular windows.
    However, in previous versions of windows the show desktop was just a shortcut with an icon, you could "create" your own and make it do whatever you wanted. Things such as "minimize all windows", something I'd think most people would prefer it do anyways. And there were tutorials for this, and this fix would be perfect...if I weren't using windows 7.

    It's now located in the corner of the taskbar, and I like it there, a lot. I am able to just throw my mouse into the corner and see my desktop. This was useful when I actually had icons on my desktop, but now everything that was located there is in rocketdock, and rocketdock won't show upon clicking the showdesktop button.


    The only fix I've really made for this, is to just use the "win+D" hotkey - and have autohotkey emulate a win+M key instead when pressing win+D. This is fine if I am to just use the hotkey, but it would be nice if it were possible to change the button itself too. Is there any type of registry edit that would allow this change?
      My Computer


  2. Posts : 4,282
    Windows 7 Ultimate Vista Ultimate x64
       #2

    Having the Rocket dock set to always on top will stop it from disappearing but you probably don't always want it on top, I have mine set to autohide and when you hit show desktop it still pops out afterward, maybe that would be a better work around for you, I didn't realize the problem existed until I read your post but at least for me I have never found it to be a problem.
      My Computer


  3. Posts : 23
    Windows 7 Ultimate 64 bit
    Thread Starter
       #3

    Mr GRiM said:
    Having the Rocket dock set to always on top will stop it from disappearing but you probably don't always want it on top, I have mine set to autohide and when you hit show desktop it still pops out afterward, maybe that would be a better work around for you, I didn't realize the problem existed until I read your post but at least for me I have never found it to be a problem.
    Thanks for the reply GRiM. Odd, but that doesn't actually work for me. Even with autohide on it will not show upon mouseover after clicking show desktop.

    While that would definitely be better than nothing, I'd like it much better if I could just get the stupid thing to minimize all windows.

    I tried poking around the registry a bit but I couldn't find anything that related to it.
      My Computer


  4. Posts : 4,282
    Windows 7 Ultimate Vista Ultimate x64
       #4

    Delfofthebla said:
    Thanks for the reply GRiM. Odd, but that doesn't actually work for me. Even with autohide on it will not show upon mouseover after clicking show desktop.

    While that would definitely be better than nothing, I'd like it much better if I could just get the stupid thing to minimize all windows.

    I tried poking around the registry a bit but I couldn't find anything that related to it.
    I'm sure that was working when I tried it last night but it doesn't seem to work now, maybe I had it set to always on top when I was trying it as I just managed to get it to work with that option enabled with the autohide feature, maybe that might be a usable solution for you, you could also increase the autohide delay so it doesn't pop out accidentally.
      My Computer


  5. Posts : 1
    Windows 7
       #5

    I'm also very interested in solving that problem and got as far as you did.

    The "show desktop"-button in the taskbar is a great idea, i'll keep you up to date if I find anything relevant to fixing that problem.
      My Computer


  6. Posts : 1
    win7
       #6

    solution

      My Computer


  7. Posts : 2
    Windows 7 Home Premium x64
       #7

    pc871226 said:
    You may copy the following code to a text editor and save it as "HDD:\Safe_path\***.vbs" then add/drag-n-drop this file into the RocketDock. Then you'll have a button that does "win+M" and "Shift+win+M" successively...
    Code:
    const IniFile = "ShowDesktopButton.ini"
    Set objShell = wscript.CreateObject("Shell.Application")
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    if objFSO.fileexists(IniFile) then
      Set objFileToRead = objFSO.OpenTextFile(IniFile,1,true)
      strFileText = objFileToRead.ReadAll()
      objFileToRead.Close
      Set objFileToRead = Nothing
      Set objFileToWrite = objFSO.OpenTextFile(IniFile,2,false)
      if strFileText = 1 Then
          objFileToWrite.Write("0")
          objShell.MinimizeAll
      Else
          objFileToWrite.Write("1")
          objShell.UndoMinimizeAll
      endif
      objFileToWrite.Close
      Set objFileToWrite = Nothing
    Else
      Set objFileToWrite = objFSO.OpenTextFile(IniFile,2,true)
      objFileToWrite.Write("1")
      objFileToWrite.Close
      Set objFileToWrite = Nothing
    endif
    Set objFSO = Nothing
    Set objShell = Nothing
    Cheers,
    hacışakir
      My Computer


 

  Related Discussions
Our Sites
Site Links
About Us
Windows 7 Forums is an independent web site and has not been authorized, sponsored, or otherwise approved by Microsoft Corporation. "Windows 7" and related materials are trademarks of Microsoft Corp.

© Designer Media Ltd
All times are GMT -5. The time now is 14:41.
Find Us