Что нового

Поиск иконки в трее по ID или имени процесса

Norbery

Новичок
Сообщения
4
Репутация
0
Привет!

Нашел работающий пример по работе со скрытыми иконками в трее, но никак не могу добиться поиска иконки по имени или ID процесса, её создавшего. Привязка к тексту не вариант - он меняется. Можете помочь?

Пример кода, где поиск иконки выполняется по её тексту:

Код:
#include <GuiToolbar.au3>

$search = "OneDrive: вход не выполнен" ; текст всплывающей подсказки иконки

$tray = ControlGetHandle("[class:Shell_TrayWnd]", "", "ToolbarWindow322")
If FindDel($search) Then Exit

ControlClick("[class:Shell_TrayWnd]", "", "Button4")
$tray = ControlGetHandle("[class:NotifyIconOverflowWindow]", "", "ToolbarWindow321")
If Not FindDel($search) Then MsgBox(0, "", "Кнопка с текстом '" & $search & "' не найдена", 7)
WinSetState("[class:NotifyIconOverflowWindow]", "", @SW_HIDE)

Func FindDel($text)
  For $i = 0 To _GUICtrlToolbar_ButtonCount($tray) - 1
    If StringInStr(_GUICtrlToolbar_GetButtonText($tray, _GUICtrlToolbar_IndexToCommand($tray, $i)), $text) > 0 Then
      _GUICtrlToolbar_DeleteButton($tray, _GUICtrlToolbar_IndexToCommand($tray, $i))
      Return 1
    EndIf
  Next
  Return 0
EndFunc
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Norbery
поиска иконки по имени или ID процесса
https://www.autoitscript.com/forum/topic/103871-_systray-udf

Код:
_SysTrayIconIndex("skype.exe")       ; видимая
_SysTrayIconIndex("skype.exe", 0, 2) ; скрытая (Win7)
 
Автор
Norbery

Norbery

Новичок
Сообщения
4
Репутация
0
InnI сказал(а):
Norbery
Код:
_SysTrayIconIndex("skype.exe")       ; видимая
_SysTrayIconIndex("skype.exe", 0, 2) ; скрытая (Win7)

Спасибо, но как прикрутить id, возвращаемый _SysTrayIconIndex, в качестве аргумента _GUICtrlToolbar_DeleteButton? У них же разные форматы?
Или есть способ _SysTrayIconRemove использовать для удаления скрытой иконки?
 
Верх