3

В Windows XP и Vista можно было сразу узнать количество сгруппированных экземпляров панели задач / открытых окон для каждого приложения:

1
2
3 4

По какой-то причине эта функция была удалена в Windows 7. Есть ли способ как-нибудь его активировать, даже если для этого требуется стороннее программное обеспечение?

2 ответа2

4

Это можно сделать сейчас с помощью 7+ Taskbar Numberer (разработанного RaMMicHaeL, который также стоит за блестящим 7+ Taskbar Tweaker).

Если вы запустите программу с параметром командной строки -v4 , она покажет количество сгруппированных окон / кнопок панели задач для каждого приложения, пока программа работает:

1

Если вы запустите программу с параметром командной строки -v5 , она покажет количество сгруппированных окон / кнопок панели задач для каждого приложения, пока программа работает, и Выиграть не нажимается. Если Выиграть вместо этого будет отображаться номер позиции каждой группы кнопок панели задач, так что Выиграть+Цифра может быть использована для активации каждой группы:

2

0

После ответа Карана я думаю, что теперь это немного бесполезно, но, потратив некоторое время на это, я решил все же поделиться им.

Как было сказано выше, лучший способ удовлетворить потребности - это приложение, которое "расширяет" панель задач Windows 7 таким образом, чтобы количество сгруппированных окон отображалось только внутри соответствующего значка, но ничего подобного уже не существовало, поэтому я подумал о создании одного сам. Ну, я думаю, что языком, который нужно использовать в этом случае, должен быть MS C++ .NET (даже C # не может быть подходящим для цели, я думаю ...), и, поскольку я определенно недостаточно квалифицирован, чтобы достичь этого сейчас (и я не думаю, что у меня будет время стать в любом случае) то, что я сделал, чтобы получить своего рода "приемлемое" решение для своих нужд, было изменить этот скрипт AHK следующим образом:

;;WARNING NOTE 1: does't count grouped open folders
;;WARNING NOTE 2: opened Windows Media Player counts as 4 instances
;;WARNING NOTE 3: count fails in the remote hypothesis that, for example, a folder named ".pdf - Adobe Reader" is open 
;; based on http://www.autohotkey.com/board/topic/35867-winget-count-is-telling-me-i-have-6-windows-open-but/

#SingleInstance, force 

Gui, add, text, , Windows count (including not grouped ones) = 
Gui, add, text, x+5 vcount, XX 
Gui, add, edit, xm r20 vWList w400 -wrap +0x100000 +readonly 
Gui, Show
GoSub, checklist

SetTimer, checklist, 3000 
return 

checklist: 
  WinGet, count, count
  WinGet,current,List 
  nocount = 0
  last_app_name = %A_Space%- %A_Tab% ; something that surely can't be used for files/folders file... Tip: anyway "Start" should always be the first element of the list
  myArray := Object()
  log = grouped applications instances:
  loop, %current% { 
    WinGetTitle, tTitle, % "ahk_id " current%A_Index% 
    if tTitle is space
    {
      nocount += 1 
    }
    else if (tTitle == A_ScriptName || tTitle == "Start" || tTitle == "Program Manager" || tTitle == "Default IME" || tTitle == "HTA Test" || tTitle = "C:\Windows\system32\cmd.exe") ; note == for everything except = path as case may vary on different PCs
    {
      nocount += 1
    }
    else
    {
     temp_FoundP := InStr(tTitle, last_app_name, 0) 
     if ((temp_FoundP != 0 ) && (last_app_name == substr(tTitle, temp_FoundP) ))
     {
       myArray[last_app_name] += 1
     }
     else
     {
      temp_FoundP := InStr(tTitle, " - ", 0) 
      if (temp_FoundP != 0) {
        last_app_name := substr(tTitle, temp_FoundP)
      }
      else {
        last_app_name = %A_Space%- %A_Tab%
      }
      if myArray[last_app_name] {
        myArray[last_app_name] += 1
      }
      else { myArray[last_app_name] := 1
      }
     }
    } 
   } 
  remaindercount = 0
  For key, value in myArray
  {
;MsgBox %key% = %value% ; DELETE THIS LINE
    if (key == "-" || value == 1) {
      remaindercount += value
    }
    else {    
      log .= "`n" key " = " value 
    }
  }
  if remaindercount > 0
      log .= "`n(remaining = " remaindercount ")"
;  Sort, log, C   ; uncomment this to sort by name 
  count -= nocount
  GuiControl, , count, %count%
  GuiControl, , WList, %log% 
  return 

GuiClose: 
ExitApp

ЗАКЛЮЧИТЕЛЬНОЕ ЗАМЕЧАНИЕ: это был мой первый раз с AHK, и я всегда спешу, поэтому мое кодирование не может быть "оптимальным" при полном тестировании ... кроме того, есть некоторые ограничения (см. Примечания по предупреждению). В любом случае, как я уже сказал, я думаю, что после ответа Карана (который я принял в качестве решения) это уже бесполезно, но каждый может предложить более удобный способ / решение (другое подобное приложение или некоторое кодирование на "более серьезном" языке программирования, чем AHK например ... ну, ладно, может быть, это более важный вопрос, связанный с переполнением стека). Большое спасибо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .