Что нового

Отображение в трее кликабельное содержимое папки

Feirman

Новичок
Сообщения
5
Репутация
0
С треем уже работал. делал разветвлённую структуру.
Задача: во втором вложении списка вызываемого из трея показывать содержимое папки(жестко закреплена). и чтобы можно было по нажатию вызвать файл из папки.
Содержимое папки может меняться и список из трея тоже должен меняться. (возможно построение списка в момент запуска программы).
Вообще не представляю в какую сторону смотреть
 

Andrey_A

Продвинутый
Сообщения
325
Репутация
68
1. Запускается программа - она создаёт в трее то что нужно
2. Постоянно мониторится папка на изменение...
3. Как только что-то изменилось программа перезапускается и заново создаёт (т.е. запускает саму себя же и Exit)
Если нужно сохранить какие-то данные, то можно их записать в ini или куда ещё - новая копия программы их прочитает
 
Автор
F

Feirman

Новичок
Сообщения
5
Репутация
0
1. Запускается программа - она создаёт в трее то что нужно
2. Постоянно мониторится папка на изменение...
3. Как только что-то изменилось программа перезапускается и заново создаёт (т.е. запускает саму себя же и Exit)
Если нужно сохранить какие-то данные, то можно их записать в ini или куда ещё - новая копия программы их прочитает
каким кодом построить список кликабельный?
 

Andrey_A

Продвинутый
Сообщения
325
Репутация
68
1. Производите поиск файлов в папке, к примеру функцией _FO_FileSearch - у вас будет массив путей $aFile
2. Функцией controlID=TrayCreateItem в цикле создаёте пункты (взяв имена из путей)
3. Каждый этот controlID контрол записываете в другой массив $aControlID[N]=TrayCreateItem('имя от $aFile[N]',-1,...)
т.е каждый $aControlID[N] будет соответствовать $aFile[N]
Код:
While 1
  $Msg=TrayGetMsg()
    Switch $Msg
      Case $aControlID[0] To $aControlID[N]
        N=$Msg-$aControlID[0] ; тут надо поэкспериментировать, чтобы получить точный индекс
        $aFile[N] ; тут запуск файла Run(), ShellExecute()...
    EndSwitch
WEnd

----------
Если вам просто надо запускать файлы в ассоциируемых программах, то можно гораздо проще это сделать через сам Windows создав "Новую панель инструментов" указав нужный каталог. Имя этого каталога появится рядом с треем и все подпапки и файлы будут там отображаться
treywin.png
 
Последнее редактирование:
Автор
F

Feirman

Новичок
Сообщения
5
Репутация
0
1. Производите поиск файлов в папке, к примеру функцией _FO_FileSearch - у вас будет массив путей $aFile
2. Функцией controlID=TrayCreateItem в цикле создаёте пункты (взяв имена из путей)
3. Каждый этот controlID контрол записываете в другой массив $aControlID[N]=TrayCreateItem('имя от $aFile[N]',-1,...)
т.е каждый $aControlID[N] будет соответствовать $aFile[N]
Код:
While 1
  $Msg=TrayGetMsg()
    Switch $Msg
      Case $aControlID[0] To $aControlID[N]
        N=$Msg-$aControlID[0] ; тут надо поэкспериментировать, чтобы получить точный индекс
        $aFile[N] ; тут запуск файла Run(), ShellExecute()...
    EndSwitch
WEnd

----------
Если вам просто надо запускать файлы в ассоциируемых программах, то можно гораздо проще это сделать через сам Windows создав "Новую панель инструментов" указав нужный каталог. Имя этого каталога появится рядом с треем и все подпапки и файлы будут там отображаться
Посмотреть вложение 5651
спасибо. завтра буду экспериментировать.
"Новую панель инструментов" сложновато создать на 200+ пользователей. а так в автозагрузку подложил и работает.
 
Верх