Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Сворачивание окна в трей и создание в трее меню управления окном. (http://forum.oszone.net/showthread.php?t=161126)

madmasles 22-12-2009 17:52 1301800

Сворачивание окна в трей и создание в трее меню управления окном.
 
Помогите, пожалуйста, объединить два скрипта в один. Идея такая: после открытия окна и произведения с ним каких-либо действий, его надо свернуть в трей с созданием меню, из которого это окно можно или закрыть, или развернуть. Способ свернуть окно в трей я нашел на форумах:
Код:

#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 1301822

Код:

#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 1301846

HORRIBLE, Большое спасибо! я промучился с этим практически весь день.


Время: 18:09.

Время: 18:09.
© OSzone.net 2001-