AutoHotkey Community

It is currently May 27th, 2012, 2:07 am

All times are UTC [ DST ]




Post new topic Reply to topic  [ 8 posts ] 
Author Message
PostPosted: February 2nd, 2010, 5:56 am 
Offline
User avatar

Joined: December 30th, 2009, 10:30 pm
Posts: 160
Location: Worcester, Massachusetts
Hello Community,
I really like the "Minimize to tray" code that is included in the autohotkey help file. (I'll include it here:)

Code:
; CHANGES:
; July 22, 2005 (changes provided by egilmour):
; - Added new hotkey to unhide the last hidden window (Win+U)
;
; November 3, 2004 (changes provided by trogdor):
; - Program manager is prevented from being hidden.
; - If there is no active window, the minimize-to-tray hotkey will have
;   no effect rather than waiting indefinitely.
;
; October 23, 2004:
; - The taskbar is prevented from being hidden.
; - Some possible problems with long window titles have been fixed.
; - Windows without a title can be hidden without causing problems.
; - If the script is running under AHK v1.0.22 or greater, the
;   maximum length of each menu item is increased from 100 to 260.

; CONFIGURATION SECTION: Change the below values as desired.

; This is the maximum number of windows to allow to be hidden (having a
; limit helps performance):
mwt_MaxWindows = 50

; This is the hotkey used to hide the active window:
mwt_Hotkey = #h  ; Win+H

; This is the hotkey used to unhide the last hidden window:
mwt_UnHotkey = #u  ; Win+U

; If you prefer to have the tray menu empty of all the standard items,
; such as Help and Pause, use N.  Otherwise, use Y:
mwt_StandardMenu = N

; These next few performance settings help to keep the action within the
; #HotkeyModifierTimeout period, and thus avoid the need to release and
; press down the hotkey's modifier if you want to hide more than one
; window in a row.  These settings are not needed you choose to have the
; script use the keyboard hook via #InstallKeybdHook or other means:
#HotkeyModifierTimeout 100
SetWinDelay 10
SetKeyDelay 0

#SingleInstance  ; Allow only one instance of this script to be running.

; END OF CONFIGURATION SECTION (do not make changes below this point
; unless you want to change the basic functionality of the script).

Hotkey, %mwt_Hotkey%, mwt_Minimize
Hotkey, %mwt_UnHotkey%, mwt_UnMinimize

; If the user terminates the script by any means, unhide all the
; windows first:
OnExit, mwt_RestoreAllThenExit

if mwt_StandardMenu = Y
    Menu, Tray, Add
else
{
    Menu, Tray, NoStandard
    Menu, Tray, Add, E&xit and Unhide All, mwt_RestoreAllThenExit
}
Menu, Tray, Add, &Unhide All Hidden Windows, mwt_RestoreAll
Menu, Tray, Add  ; Another separator line to make the above more special.

if a_AhkVersion =   ; Since it's blank, version is older than 1.0.22.
    mwt_MaxLength = 100
else
    mwt_MaxLength = 260  ; Reduce this to restrict the width of the menu.

return  ; End of auto-execute section.


mwt_Minimize:
if mwt_WindowCount >= %mwt_MaxWindows%
{
    MsgBox No more than %mwt_MaxWindows% may be hidden simultaneously.
    return
}

; Set the "last found window" to simplify and help performance.
; Since in certain cases it is possible for there to be no active window,
; a timeout has been added:
WinWait, A,, 2
if ErrorLevel <> 0  ; It timed out, so do nothing.
    return

; Otherwise, the "last found window" has been set and can now be used:
WinGet, mwt_ActiveID, ID
WinGetTitle, mwt_ActiveTitle
WinGetClass, mwt_ActiveClass
if mwt_ActiveClass in Shell_TrayWnd,Progman
{
    MsgBox The desktop and taskbar cannot be hidden.
    return
}
; Because hiding the window won't deactivate it, activate the window
; beneath this one (if any). I tried other ways, but they wound up
; activating the task bar.  This way sends the active window (which is
; about to be hidden) to the back of the stack, which seems best:
Send, !{esc}
; Hide it only now that WinGetTitle/WinGetClass above have been run (since
; by default, those commands cannot detect hidden windows):
WinHide

; If the title is blank, use the class instead.  This serves two purposes:
; 1) A more meaningful name is used as the menu name.
; 2) Allows the menu item to be created (otherwise, blank items wouldn't
;    be handled correctly by the various routines below).
if mwt_ActiveTitle =
    mwt_ActiveTitle = ahk_class %mwt_ActiveClass%
; Ensure the title is short enough to fit. mwt_ActiveTitle also serves to
; uniquely identify this particular menu item.
StringLeft, mwt_ActiveTitle, mwt_ActiveTitle, %mwt_MaxLength%

; In addition to the tray menu requiring that each menu item name be
; unique, it must also be unique so that we can reliably look it up in
; the array when the window is later unhidden.  So make it unique if it
; isn't already:
Loop, %mwt_MaxWindows%
{
    if mwt_WindowTitle%a_index% = %mwt_ActiveTitle%
    {
        ; Match found, so it's not unique.
        ; First remove the 0x from the hex number to conserve menu space:
        StringTrimLeft, mwt_ActiveIDShort, mwt_ActiveID, 2
        StringLen, mwt_ActiveIDShortLength, mwt_ActiveIDShort
        StringLen, mwt_ActiveTitleLength, mwt_ActiveTitle
        mwt_ActiveTitleLength += %mwt_ActiveIDShortLength%
        mwt_ActiveTitleLength += 1 ; +1 the 1 space between title & ID.
        if mwt_ActiveTitleLength > %mwt_MaxLength%
        {
            ; Since menu item names are limted in length, trim the title
            ; down to allow just enough room for the Window's Short ID at
            ; the end of its name:
            TrimCount = %mwt_ActiveTitleLength%
            TrimCount -= %mwt_MaxLength%
            StringTrimRight, mwt_ActiveTitle, mwt_ActiveTitle, %TrimCount%
        }
        ; Build unique title:
        mwt_ActiveTitle = %mwt_ActiveTitle% %mwt_ActiveIDShort%
        break
    }
}

; First, ensure that this ID doesn't already exist in the list, which can
; happen if a particular window was externally unhidden (or its app unhid
; it) and now it's about to be re-hidden:
mwt_AlreadyExists = n
Loop, %mwt_MaxWindows%
{
    if mwt_WindowID%a_index% = %mwt_ActiveID%
    {
        mwt_AlreadyExists = y
        break
    }
}

; Add the item to the array and to the menu:
if mwt_AlreadyExists = n
{
    Menu, Tray, add, %mwt_ActiveTitle%, RestoreFromTrayMenu
    mwt_WindowCount += 1
    Loop, %mwt_MaxWindows%  ; Search for a free slot.
    {
        ; It should always find a free slot if things are designed right.
        if mwt_WindowID%a_index% =  ; An empty slot was found.
        {
            mwt_WindowID%a_index% = %mwt_ActiveID%
            mwt_WindowTitle%a_index% = %mwt_ActiveTitle%
            break
        }
    }
}
return


RestoreFromTrayMenu:
Menu, Tray, delete, %A_ThisMenuItem%
; Find window based on its unique title stored as the menu item name:
Loop, %mwt_MaxWindows%
{
    if mwt_WindowTitle%a_index% = %A_ThisMenuItem%  ; Match found.
    {
        StringTrimRight, IDToRestore, mwt_WindowID%a_index%, 0
        WinShow, ahk_id %IDToRestore%
        WinActivate ahk_id %IDToRestore%  ; Sometimes needed.
        mwt_WindowID%a_index% =  ; Make it blank to free up a slot.
        mwt_WindowTitle%a_index% =
        mwt_WindowCount -= 1
        break
    }
}
return


;; This will pop the last minimized window off the stack and unhide it.
mwt_UnMinimize:
;; Make sure there's something to unhide.
if mwt_WindowCount > 0
{
    ;; Get the id of the last window minimized and unhide it
    StringTrimRight, IDToRestore, mwt_WindowID%mwt_WindowCount%, 0
    WinShow, ahk_id %IDToRestore%
    WinActivate ahk_id %IDToRestore%
   
    ;; Get the menu name of the last window minimized and remove it
    StringTrimRight, MenuToRemove, mwt_WindowTitle%mwt_WindowCount%, 0
    Menu, Tray, delete, %MenuToRemove%
   
    ;; clean up our 'arrays' and decrement the window count
    mwt_WindowID%mwt_WindowCount% =
    mwt_WindowTitle%mwt_WindowCount% =
    mwt_WindowCount -= 1
}
return


mwt_RestoreAllThenExit:
Gosub, mwt_RestoreAll
ExitApp  ; Do a true exit.


mwt_RestoreAll:
Loop, %mwt_MaxWindows%
{
    if mwt_WindowID%a_index% <>
    {
        StringTrimRight, IDToRestore, mwt_WindowID%a_index%, 0
        WinShow, ahk_id %IDToRestore%
        WinActivate ahk_id %IDToRestore%  ; Sometimes needed.
        ; Do it this way vs. DeleteAll so that the sep. line and first
        ; item are retained:
        StringTrimRight, MenuToRemove, mwt_WindowTitle%a_index%, 0
        Menu, Tray, delete, %MenuToRemove%
        mwt_WindowID%a_index% =  ; Make it blank to free up a slot.
        mwt_WindowTitle%a_index% =
        mwt_WindowCount -= 1
    }
    if mwt_WindowCount = 0
        break
}
return


The only thing is, I tend to use it for when I have a window I'm not really using and just want to kind of have it hanging around on the off chance that I need it again. Therefore I would prefer that when the app exited it would kill all the windows contained within instead of releasing them back onto the desktop. This way I can clean my junk windows with a simple click. To accomplish this, I tried replacing the mwt_RestoreAll call in the mwt_RestoreAllThenExit section with the code from mwt_RestoreAll, with the addition of Winclose, ahk_id %IDToRestore%. This prevents the windows from appearing. However, the processes aren't dead - they're still running in the background. Obviously this is useless - help??? Thanks!!

Here's my attempt. (Clearly I don't understand what I'm doing)

Code:
mwt_MaxWindows = 50
mwt_Hotkey = #g  ; Win+H
mwt_UnHotkey = +#g  ; Win+U
mwt_StandardMenu = N
#HotkeyModifierTimeout 100
SetWinDelay 10
SetKeyDelay 0
#SingleInstance Force ; Allow only one instance of this script to be running.
Hotkey, %mwt_Hotkey%, mwt_Minimize
Hotkey, %mwt_UnHotkey%, mwt_UnMinimize
OnExit, mwt_RestoreAllThenExit
if mwt_StandardMenu = Y
   Menu, Tray, Add
else
{
   Menu, Tray, NoStandard
   Menu, Tray, Add, E&xit and Unhide All, mwt_RestoreAllThenExit
}
Menu, Tray, Add, &Unhide All Hidden Windows, mwt_RestoreAll
Menu, Tray, Add  ; Another separator line to make the above more special.

if a_AhkVersion =   ; Since it's blank, version is older than 1.0.22.
   mwt_MaxLength = 100
else
   mwt_MaxLength = 260  ; Reduce this to restrict the width of the menu.
return  ; End of auto-execute section.
mwt_Minimize:
if mwt_WindowCount >= %mwt_MaxWindows%
{
   MsgBox No more than %mwt_MaxWindows% may be hidden simultaneously.
   return
}
WinWait, A,, 2
if ErrorLevel <> 0  ; It timed out, so do nothing.
   return
WinGet, mwt_ActiveID, ID
WinGetTitle, mwt_ActiveTitle
WinGetClass, mwt_ActiveClass
if mwt_ActiveClass in Shell_TrayWnd,Progman
{
   MsgBox The desktop and taskbar cannot be hidden.
   return
}
;Send, !{esc}
WinHide
if mwt_ActiveTitle =
   mwt_ActiveTitle = ahk_class %mwt_ActiveClass%
StringLeft, mwt_ActiveTitle, mwt_ActiveTitle, %mwt_MaxLength%
Loop, %mwt_MaxWindows%
{
   if mwt_WindowTitle%a_index% = %mwt_ActiveTitle%
   {
      StringTrimLeft, mwt_ActiveIDShort, mwt_ActiveID, 2
      StringLen, mwt_ActiveIDShortLength, mwt_ActiveIDShort
      StringLen, mwt_ActiveTitleLength, mwt_ActiveTitle
      mwt_ActiveTitleLength += %mwt_ActiveIDShortLength%
      mwt_ActiveTitleLength += 1 ; +1 the 1 space between title & ID.
      if mwt_ActiveTitleLength > %mwt_MaxLength%
      {
         TrimCount = %mwt_ActiveTitleLength%
         TrimCount -= %mwt_MaxLength%
         StringTrimRight, mwt_ActiveTitle, mwt_ActiveTitle, %TrimCount%
      }
      mwt_ActiveTitle = %mwt_ActiveTitle% %mwt_ActiveIDShort%
      break
   }
}
mwt_AlreadyExists = n
Loop, %mwt_MaxWindows%
{
   if mwt_WindowID%a_index% = %mwt_ActiveID%
   {
      mwt_AlreadyExists = y
      break
   }
}
if mwt_AlreadyExists = n
{
   Menu, Tray, add, %mwt_ActiveTitle%, RestoreFromTrayMenu
   mwt_WindowCount += 1
   Loop, %mwt_MaxWindows%  ; Search for a free slot.
   {
      if mwt_WindowID%a_index% =  ; An empty slot was found.
      {
         mwt_WindowID%a_index% = %mwt_ActiveID%
         mwt_WindowTitle%a_index% = %mwt_ActiveTitle%
         break
      }
   }
}
return
RestoreFromTrayMenu:
Menu, Tray, delete, %A_ThisMenuItem%
Loop, %mwt_MaxWindows%
{
   if mwt_WindowTitle%a_index% = %A_ThisMenuItem%  ; Match found.
   {
      StringTrimRight, IDToRestore, mwt_WindowID%a_index%, 0
      WinShow, ahk_id %IDToRestore%
      WinActivate ahk_id %IDToRestore%  ; Sometimes needed.
      mwt_WindowID%a_index% =  ; Make it blank to free up a slot.
      mwt_WindowTitle%a_index% =
      mwt_WindowCount -= 1
      break
   }
}
return
mwt_UnMinimize:
if mwt_WindowCount > 0
{
   StringTrimRight, IDToRestore, mwt_WindowID%mwt_WindowCount%, 0
   WinShow, ahk_id %IDToRestore%
   WinActivate ahk_id %IDToRestore%
   StringTrimRight, MenuToRemove, mwt_WindowTitle%mwt_WindowCount%, 0
   Menu, Tray, delete, %MenuToRemove%   
   mwt_WindowID%mwt_WindowCount% =
   mwt_WindowTitle%mwt_WindowCount% =
   mwt_WindowCount -= 1
}
return
mwt_RestoreAllThenExit:
Loop, %mwt_MaxWindows%
{
   if mwt_WindowID%a_index% <>
   {
      StringTrimRight, IDToRestore, mwt_WindowID%a_index%, 0
      Winclose, ahk_id %IDToRestore% ; This is my addition
      StringTrimRight, MenuToRemove, mwt_WindowTitle%a_index%, 0
      Menu, Tray, delete, %MenuToRemove%
      mwt_WindowID%a_index% =  ; Make it blank to free up a slot.
      mwt_WindowTitle%a_index% =
      mwt_WindowCount -= 1
   }
   if mwt_WindowCount = 0
      break
}
ExitApp  ; Do a true exit.
mwt_RestoreAll:
Loop, %mwt_MaxWindows%
{
   if mwt_WindowID%a_index% <>
   {
      StringTrimRight, IDToRestore, mwt_WindowID%a_index%, 0
      WinShow, ahk_id %IDToRestore%
      WinActivate ahk_id %IDToRestore%  ; Sometimes needed.
      StringTrimRight, MenuToRemove, mwt_WindowTitle%a_index%, 0
      Menu, Tray, delete, %MenuToRemove%
      mwt_WindowID%a_index% =  ; Make it blank to free up a slot.
      mwt_WindowTitle%a_index% =
      mwt_WindowCount -= 1
   }
   if mwt_WindowCount = 0
      break
}
return

_________________
★★★ Email me at berban at aim full stop com ★★★


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: February 2nd, 2010, 9:09 am 
Offline

Joined: April 30th, 2006, 6:23 pm
Posts: 358
Location: Shigle Springs
nice code. try send message, it works better sometimes.

_________________
CPULOCK.com
virusSWAT.com
Computer Repair Computer Service.com
911PCFIX.com


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: February 2nd, 2010, 7:25 pm 
Offline
User avatar

Joined: December 30th, 2009, 10:30 pm
Posts: 160
Location: Worcester, Massachusetts
Huh?

_________________
★★★ Email me at berban at aim full stop com ★★★


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: February 4th, 2010, 5:58 am 
Offline
User avatar

Joined: December 30th, 2009, 10:30 pm
Posts: 160
Location: Worcester, Massachusetts
any suggestions?

_________________
★★★ Email me at berban at aim full stop com ★★★


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: February 12th, 2010, 7:34 pm 
Offline
User avatar

Joined: December 30th, 2009, 10:30 pm
Posts: 160
Location: Worcester, Massachusetts
Hey I hate to do this but does anyone have any ideas how to do this? I swear, it should be really easy! I'll reciprocate the favor, if I can... ty!

_________________
★★★ Email me at berban at aim full stop com ★★★


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 18th, 2010, 3:09 am 
Offline
User avatar

Joined: December 30th, 2009, 10:30 pm
Posts: 160
Location: Worcester, Massachusetts
Hey, sorry to bump this back to the top, but thought I'd finish the thread: solved through self help. The solution simple, as I expected - one line: Add DetectHiddenWindows, On to the top.

Here's my code - not groundbreaking but in it goes. To clarify, the difference between this and what you get in the help file is that 1) it kills your windows on exit instead of unkiding them, and 2) the icon is changed (so you can differentiate between this and other .ahk processes) and changes again when there are windows hidden, so you can know by looking at it.

(also the hotkey is Win+G and Win+SHIFT+G cause that's what I was in the mood for)

Code:
DetectHiddenWindows, on
Menu, Tray, Icon, Shell32.dll, 5
menu, tray, tip, Minimize To Tray
mwt_MaxWindows = 50
mwt_Hotkey = #g  ; Win+H
mwt_UnHotkey = +#g  ; Win+U
mwt_StandardMenu = N
#HotkeyModifierTimeout 100
#SingleInstance Force
SetWinDelay 10
SetKeyDelay 0
Hotkey, %mwt_Hotkey%, mwt_Minimize
Hotkey, %mwt_UnHotkey%, mwt_UnMinimize
OnExit, mwt_RestoreAllThenExit
if mwt_StandardMenu = Y
   Menu, Tray, Add
else
{
   Menu, Tray, NoStandard
   Menu, Tray, Add, E&xit and Unhide All, mwt_RestoreAllThenExit
}
Menu, Tray, Add, &Unhide All Hidden Windows, mwt_RestoreAll
Menu, Tray, Add  ; Another separator line to make the above more special.

if a_AhkVersion =   ; Since it's blank, version is older than 1.0.22.
   mwt_MaxLength = 100
else
   mwt_MaxLength = 260  ; Reduce this to restrict the width of the menu.
return  ; End of auto-execute section.
mwt_Minimize:
if mwt_WindowCount >= %mwt_MaxWindows%
{
   MsgBox No more than %mwt_MaxWindows% may be hidden simultaneously.
   return
}
WinWait, A,, 2
if ErrorLevel <> 0  ; It timed out, so do nothing.
   return
WinGet, mwt_ActiveID, ID
WinGetTitle, mwt_ActiveTitle
WinGetClass, mwt_ActiveClass
if mwt_ActiveClass in Shell_TrayWnd,Progman
{
   MsgBox The desktop and taskbar cannot be hidden.
   return
}
;Send, !{esc}
WinHide
if mwt_ActiveTitle =
mwt_ActiveTitle = ahk_class%mwt_ActiveClass%
StringLeft, mwt_ActiveTitle, mwt_ActiveTitle, %mwt_MaxLength%
Loop, %mwt_MaxWindows%
{
   if mwt_WindowTitle%a_index% = %mwt_ActiveTitle%
   {
      StringTrimLeft, mwt_ActiveIDShort, mwt_ActiveID, 2
      StringLen, mwt_ActiveIDShortLength, mwt_ActiveIDShort
      StringLen, mwt_ActiveTitleLength, mwt_ActiveTitle
      mwt_ActiveTitleLength += %mwt_ActiveIDShortLength%
      mwt_ActiveTitleLength += 1 ; +1 the 1 space between title & ID.
      if mwt_ActiveTitleLength > %mwt_MaxLength%
      {
         TrimCount = %mwt_ActiveTitleLength%
         TrimCount -= %mwt_MaxLength%
         StringTrimRight, mwt_ActiveTitle, mwt_ActiveTitle, %TrimCount%
      }
      mwt_ActiveTitle = %mwt_ActiveTitle% %mwt_ActiveIDShort%
      break
   }
}
mwt_AlreadyExists = n
Loop, %mwt_MaxWindows%
{
   if mwt_WindowID%a_index% = %mwt_ActiveID%
   {
      mwt_AlreadyExists = y
      break
   }
}
if mwt_AlreadyExists = n
{
   Menu, Tray, add, %mwt_ActiveTitle%, RestoreFromTrayMenu
   mwt_WindowCount += 1
   Loop, %mwt_MaxWindows%  ; Search for a free slot.
   {
      if mwt_WindowID%a_index% =  ; An empty slot was found.
      {
         mwt_WindowID%a_index% = %mwt_ActiveID%
         mwt_WindowTitle%a_index% = %mwt_ActiveTitle%
         break
      }
   }
}
if mwt_WindowCount = 1
Menu, Tray, Icon, Shell32.dll, 46
return
RestoreFromTrayMenu:
Menu, Tray, delete, %A_ThisMenuItem%
Loop, %mwt_MaxWindows%
{
   if mwt_WindowTitle%a_index% = %A_ThisMenuItem%  ; Match found.
   {
      StringTrimRight, IDToRestore, mwt_WindowID%a_index%, 0
      WinShow, ahk_id %IDToRestore%
      WinActivate ahk_id %IDToRestore%  ; Sometimes needed.
      mwt_WindowID%a_index% =  ; Make it blank to free up a slot.
      mwt_WindowTitle%a_index% =
      mwt_WindowCount -= 1
      break
   }
}
return
mwt_UnMinimize:
if mwt_WindowCount > 0
{
   StringTrimRight, IDToRestore, mwt_WindowID%mwt_WindowCount%, 0
   WinShow, ahk_id %IDToRestore%
   WinActivate ahk_id %IDToRestore%
   StringTrimRight, MenuToRemove, mwt_WindowTitle%mwt_WindowCount%, 0
   Menu, Tray, delete, %MenuToRemove%   
   mwt_WindowID%mwt_WindowCount% =
   mwt_WindowTitle%mwt_WindowCount% =
   mwt_WindowCount -= 1
}
if mwt_WindowCount = 0
Menu, Tray, Icon, Shell32.dll, 5
return
mwt_RestoreAllThenExit:
Loop, %mwt_MaxWindows%
{
   if mwt_WindowID%a_index% <>
   {
      StringTrimRight, IDToRestore, mwt_WindowID%a_index%, 0
      Winclose, ahk_id %IDToRestore%
      StringTrimRight, MenuToRemove, mwt_WindowTitle%a_index%, 0
      Menu, Tray, delete, %MenuToRemove%
      mwt_WindowID%a_index% =  ; Make it blank to free up a slot.
      mwt_WindowTitle%a_index% =
      mwt_WindowCount -= 1
   }
   if mwt_WindowCount = 0
      break
}
ExitApp  ; Do a true exit.
mwt_RestoreAll:
Loop, %mwt_MaxWindows%
{
   if mwt_WindowID%a_index% <>
   {
      StringTrimRight, IDToRestore, mwt_WindowID%a_index%, 0
      WinShow, ahk_id %IDToRestore%
      WinActivate ahk_id %IDToRestore%  ; Sometimes needed.
      StringTrimRight, MenuToRemove, mwt_WindowTitle%a_index%, 0
      Menu, Tray, delete, %MenuToRemove%
      mwt_WindowID%a_index% =  ; Make it blank to free up a slot
                mwt_WindowTitle%a_index% =
                mwt_WindowCount -= 1
    }
    if mwt_WindowCount = 0
        break
}
return

_________________
★★★ Email me at berban at aim full stop com ★★★


Report this post
Top
 Profile  
Reply with quote  
 Post subject:
PostPosted: March 19th, 2010, 8:19 pm 
Offline

Joined: July 12th, 2007, 4:23 pm
Posts: 8
This is great! Thanks for your efforts. I was looking for a solution like this that would work with Windows 7 and this does the trick.


Report this post
Top
 Profile  
Reply with quote  
PostPosted: December 19th, 2011, 2:12 am 
Offline

Joined: December 3rd, 2011, 9:07 pm
Posts: 176
Is it possible to add icon of minimized apps?

Is it possible to add the apps' icons in the list?

If there are many apps it's hard to read the complete list.


Report this post
Top
 Profile  
Reply with quote  
Display posts from previous:  Sort by  
Post new topic Reply to topic  [ 8 posts ] 

All times are UTC [ DST ]


Who is online

Users browsing this forum: engunneer, nimda, poserpro, rbrtryn, sjc1000 and 13 guests


You can post new topics in this forum
You can reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Powered by phpBB® Forum Software © phpBB Group