Автор Тема: Удаление иконок закрытых приложений из трея  (Прочитано 1521 раз)

0 Пользователей и 1 Гость просматривают эту тему.

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

Оффлайн Tuxzer92 [?]

  • Новичок
  • *
  • Сообщений: 57
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Здравствуйте, возникла проблема. В системном трее кодеки и другие программы после работы оставляют свои иконки и при наведении на них они исчезают.
Можно ли как-то с помощью autoit сделать принудительное обновление трея, чтобы убрать эти иконки?

Спасибо!

Русское сообщество AutoIt

Удаление иконок закрытых приложений из трея
« Отправлен: Август 10, 2016, 15:47:09 »

Оффлайн InnI [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 4102
  • Репутация: 1089
    • Награды
  • Версия AutoIt: 3.3.14.0
Tuxzer92
Цитировать
обновление трея, чтобы убрать эти иконки
AutoIt3Wrapper, в случае принудительного завершения скрипта, для чистки трея использует следующую функцию
Код: AutoIt [Выделить]
Func _RefreshSystemTray($nDelay = 1000)
    ; Save Opt settings
    Local $oldMatchMode = Opt("WinTitleMatchMode", 4)
    Local $oldChildMode = Opt("WinSearchChildren", 1)
    Local $error = 0
    Do; Pseudo loop
        Local $HWindow = WinGetHandle("classname=TrayNotifyWnd")
        If @error Then
            $error = 1
            ExitLoop
        EndIf
        Local $hControl = ControlGetHandle($HWindow, "", "Button1")
        ; We're on XP and the Hide Inactive Icons button is there, so expand it
        If $hControl <> "" And ControlCommand($HWindow, "", $hControl, "IsVisible", "") Then
            ControlClick($HWindow, "", $hControl)
            Sleep($nDelay)
        EndIf
        Local $posStart = MouseGetPos()
        Local $posWin = WinGetPos($HWindow)
        Local $y = $posWin[1]
        While $y < $posWin[3] + $posWin[1]
            Local $x = $posWin[0]
            While $x < $posWin[2] + $posWin[0]
                DllCall("user32.dll", "int", "SetCursorPos", "int", $x, "int", $y)
                If @error Then
                    $error = 2
                    ExitLoop 3; Jump out of While/While/Do
                EndIf
                $x = $x + 8
            WEnd
            $y = $y + 8
        WEnd
        DllCall("user32.dll", "int", "SetCursorPos", "int", $posStart[0], "int", $posStart[1])
        ; We're on XP so we need to hide the inactive icons again.
        If $hControl <> "" And ControlCommand($HWindow, "", $hControl, "IsVisible", "") Then
            ControlClick($HWindow, "", $hControl)
        EndIf
    Until 1
    ; Restore Opt settings
    Opt("WinTitleMatchMode", $oldMatchMode)
    Opt("WinSearchChildren", $oldChildMode)
    SetError($error)
EndFunc   ;==>_RefreshSystemTray


Оффлайн Tuxzer92 [?]

  • Новичок
  • *
  • Сообщений: 57

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Запускаю TrueConf, убиваю его, в трее остается иконка, выполняю функцию, но иконка не пропадает.
ЧЯДНТ?

Русское сообщество AutoIt

Re: Удаление иконок закрытых приложений из трея
« Ответ #2 Отправлен: Август 11, 2016, 06:57:16 »

Помечен как лучший ответ пользователем Tuxzer92 Отправлен Август 11, 2016, 13:40:44

Alofa

  • Гость
... ЧЯДНТ?
Может быть вы не делаете вызов этой пользовательской функции?
Код: AutoIt [Выделить]
_RefreshSystemTray(100)
Func _RefreshSystemTray($nDelay = 1000)
    ; ...
EndFunc
 


Русское сообщество AutoIt

Re: Удаление иконок закрытых приложений из трея
« Ответ #3 Отправлен: Август 11, 2016, 12:52:20 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
3 Ответов
4314 Просмотров
Последний ответ Февраль 27, 2010, 17:33:19
от Guezt Gutsy
1 Ответов
7122 Просмотров
Последний ответ Апрель 06, 2010, 16:43:07
от McSkull
13 Ответов
6366 Просмотров
Последний ответ Март 25, 2012, 20:53:34
от Matisse
1 Ответов
2931 Просмотров
Последний ответ Август 07, 2012, 02:20:06
от Afonichev
2 Ответов
2255 Просмотров
Последний ответ Ноябрь 06, 2013, 01:26:03
от Andrey_A
0 Ответов
1620 Просмотров
Последний ответ Февраль 15, 2014, 21:55:38
от bytek76
0 Ответов
776 Просмотров
Последний ответ Январь 17, 2015, 15:50:20
от adkomissarov
13 Ответов
3022 Просмотров
Последний ответ Июль 09, 2015, 10:38:59
от alex33
1 Ответов
1022 Просмотров
Последний ответ Июнь 22, 2017, 11:45:45
от InnI
0 Ответов
418 Просмотров
Последний ответ Август 22, 2017, 07:52:05
от Danzo