PDA

Показать полную графическую версию : [решено] Сворачивание окна в трей и создание в трее меню управления окном.


madmasles
22-12-2009, 17:52
Помогите, пожалуйста, объединить два скрипта в один. Идея такая: после открытия окна и произведения с ним каких-либо действий, его надо свернуть в трей с созданием меню, из которого это окно можно или закрыть, или развернуть. Способ свернуть окно в трей я нашел на форумах: #NoTrayIcon
#include <GUIConstantsEx.au3>

;

Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 1)

$hGUI = GUICreate("Пример в трей", 300, 200)

$RestoreItem = TrayCreateItem("Восстановить.")
TrayItemSetOnEvent(-1, "_RestoreFromTray_Proc")

TraySetOnEvent(-13, "_RestoreFromTray_Proc")
TraySetClick(1)

GUISetState()

While 1
Switch GUIGetMsg()
Case -3
ExitLoop
Case -4
GUISetState(@SW_HIDE)
TraySetState(1)
EndSwitch
WEnd

Func _RestoreFromTray_Proc()
If BitAND(WinGetState($hGUI), 2) = 2 Then Return
TraySetState(2)
GUISetState(@SW_SHOW)
GUISetState(@SW_RESTORE)
EndFunc
Окно прекрасно сворачивается в трей и разворачивается (спасибо автору скрипта, к сожалению, не знаю, кто он).
Также на форумах я нашел образец красивого меню трея: #NoTrayIcon
#include <ModernMenuRaw.au3>
#include <GUIConstantsEx.au3>

$hTrayIcon = _TrayIconCreate("Проба")
_TrayIconSetClick(-1, 9)
_TrayIconSetState()
$nTrayMenu = _TrayCreateContextMenu()
$Line_TrayItem = _TrayCreateItem("Развернуть.")
_TrayItemSetIcon(-1, "shell32.dll", 135)
_TrayCreateItem("")
_TrayItemSetIcon(-1, "", 0)
$Exit_TrayItem = _TrayCreateItem("Выход.")
_TrayItemSetIcon(-1, "shell32.dll", 28)
_SetTrayIconBkColor(0xC46200)
_SetTraySelectBkColor(0xC46200)
_SetTraySelectTextColor(0x0000FF)
_SetTrayTextColor(0xFF0000)
_SetTrayBkColor(0x85BBDD)

While 1
Switch GUIGetMsg()
Case $Line_TrayItem
MsgBox(0, "", "Нажато ""Развернуть.""")
Case $Exit_TrayItem
_TrayIconDelete($hTrayIcon)
Exit
EndSwitch
WEnd
Также большое спасибо неизвестным для меня авторам скрипта и UDF ModernMenuRaw.au3.

Теперь - проблема. Эти оба скрипта прекрасно работают по отдельности, но объединить их в один скрипт, с сохранением полной функциональности обоих, у меня не хватает то ли знаний, то ли соображухи.
Огромная просьба ко всем гуру AutoIt-а. Помогите, пожалуйста, объединить эти два скрипта.

HORRIBLE
22-12-2009, 18:20
#NoTrayIcon
#include <GUIConstantsEx.au3>
#include <ModernMenuRaw.au3>
;

Opt("TrayMenuMode", 1)
Opt("TrayOnEventMode", 1)

$hTrayIcon = _TrayIconCreate("Проба")
_TrayIconSetClick(-1, 9)
_TrayIconSetState()
$nTrayMenu = _TrayCreateContextMenu()
$Line_TrayItem = _TrayCreateItem("Развернуть.")
_TrayItemSetIcon(-1, "shell32.dll", 135)
_TrayCreateItem("")
_TrayItemSetIcon(-1, "", 0)
$Exit_TrayItem = _TrayCreateItem("Выход.")
_TrayItemSetIcon(-1, "shell32.dll", 28)
_SetTrayIconBkColor(0xC46200)
_SetTraySelectBkColor(0xC46200)
_SetTraySelectTextColor(0x0000FF)
_SetTrayTextColor(0xFF0000)
_SetTrayBkColor(0x85BBDD)

$hGUI = GUICreate("Пример в трей", 300, 200)
GUISetState()

While 1
Switch GUIGetMsg()
Case -4
GUISetState(@SW_HIDE)
Case $Line_TrayItem
;MsgBox(0, "", "Нажато ""Развернуть.""")
GUISetState(@SW_SHOW)
GUISetState(@SW_RESTORE)
Case $Exit_TrayItem
_TrayIconDelete($hTrayIcon)
Exit
EndSwitch
WEnd

madmasles
22-12-2009, 18:54
HORRIBLE, Большое спасибо! я промучился с этим практически весь день.




© OSzone.net 2001-2012