Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Declare Create_ini(ini$)
- If OpenWindow(0, 100, 150, 300, 100, "PureBasic - SysTray Example", #PB_Window_SystemMenu | #PB_Window_Invisible)
- ExtractIconEx_("shell32.dll",4,0,@hIco,1) ; извлекаем иконку из shell32.dll
- AddSysTrayIcon(1, WindowID(0),hIco) ; иконка в трее
- SysTrayIconToolTip(1, "SaveFolders") ; Название проги в подсказке
- CreatePopupImageMenu(0)
- ArrSize = 100
- Dim ArrPath.s(ArrSize)
- ; получаем путь к ини по имени программы
- ini$ = GetPathPart(ProgramFilename()) + GetFilePart(ProgramFilename(), #PB_FileSystem_NoExtension) + ".ini"
- ; Debug ini$
- If FileSize(ini$) = -1 And Not Create_ini(ini$)
- MessageRequester("Ошибка", "Не найден файл и не удаётся создать" + #CRLF$ + ini$)
- End
- EndIf
- ; заполнение массива
- OpenPreferences(ini$)
- i=0
- ExaminePreferenceGroups()
- While NextPreferenceGroup()
- tmp$ = PreferenceGroupName()
- OpenSubMenu(tmp$, hIco)
- ; Debug tmp$
- ExaminePreferenceKeys()
- While NextPreferenceKey()
- ; Param.s = PreferenceKeyValue()
- ; If Param<>""
- ; Param = " - параметры: "+Param
- ; EndIf
- tmp$ = PreferenceKeyName()
- If Not FileSize(tmp$) = -2 ; Если путь не является существующим каталогом, то игнор и следующий
- Continue
- EndIf
- i+1
- If i > ArrSize
- ArrSize + 100
- ReDim ArrPath(ArrSize)
- EndIf
- MenuItem(i, tmp$, hIco)
- ArrPath(i) = tmp$
- ; Debug tmp$
- Wend
- CloseSubMenu()
- Wend
- ClosePreferences()
- MenuBar()
- MenuItem(999, "Выход")
- ; MenuItem(998, "Инфа")
- ; Q = 0
- Repeat
- Event = WaitWindowEvent()
- If Event = #PB_Event_SysTray
- Select EventType()
- Case #PB_EventType_LeftClick, #PB_EventType_RightClick
- DisplayPopupMenu(0, WindowID(0)) ; показ вспывающего меню
- EndSelect
- EndIf
- If Event = #PB_Event_Menu
- em = EventMenu()
- If em >= 1 And em <= i
- RunProgram(ArrPath(em), "", "")
- ; ElseIf em = 998
- ; Debug ArrPath()
- ElseIf em = 999
- Break
- EndIf
- EndIf
- ForEver
- EndIf
- End
- Procedure Create_ini(ini$)
- Protected hfile, Text$, Disk$
- Disk$ = LSet(GetHomeDirectory(), 3)
- Text$ = "[Windows]" + #CRLF$ + GetHomeDirectory() + #CRLF$ + Disk$ + "Windows\Web\Wallpaper" + #CRLF$ + Disk$ + "Windows\System32" + #CRLF$ + Disk$ + "Windows" + #CRLF$ + Disk$ + "Program Files" + #CRLF$ + #CRLF$ + "[PureBasic]" + #CRLF$ + GetCurrentDirectory() + #CRLF$ + #PB_Compiler_Home
- hfile = OpenFile(#PB_Any, ini$, #PB_UTF8)
- If hfile
- If WriteString(hfile, Text$, #PB_UTF8)
- CloseFile(hfile)
- ProcedureReturn 1
- EndIf
- CloseFile(hfile)
- EndIf
- ProcedureReturn 0
- EndProcedure
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement