Имя пользователя:
Пароль:
 

Название темы: Вызов GUI в ModernMenuRaw
Показать сообщение отдельно

Аватара для beve

Старожил


Сообщения: 307
Благодарности: 137

Профиль | Отправить PM | Цитировать


Цитата morgan1991:
Суть в следующем, нужно чтоб это меню вызывалось не только при нажатии на иконку в трее, но и по нажатию средней кнопки мыши в любом месте и появлялось рядом с курсором. »
Врятли можно чтото другое придумать, кроме такого (имею ввиду суть, а код - это только наброска):
Код: Выделить весь код
#NoTrayIcon 
#include <Misc.au3>
#include "ModernMenuRaw.au3" ; Only unknown constants are declared here 

$Transparent_Gui = GUICreate("Transparent Window", 40, 40, @DesktopWidth+40, 0, $WS_POPUP,$WS_EX_TOOLWINDOW) 
WinSetTrans($Transparent_Gui,"",1)
GUISetState(@SW_SHOW, $Transparent_Gui) 

$nTrayIcon=_TrayIconCreate("Tools", "shell32.dll", -13) 
_TrayIconSetState() ; Show the tray icon 
$TrayMenu=_TrayCreateContextMenu() 
$ExitTray=_TrayCreateItem("Exit") 
_TrayItemSetIcon(-1, "shell32.dll", -28) 

$dll = DllOpen("user32.dll")
While 1 
    $Msg = GUIGetMsg()
    Switch $Msg
        Case $ExitTray
            ExitLoop
    EndSwitch

    If _IsPressed("04", $dll) Then
        _Show()
    endif
    Sleep(10)
WEnd 

_TrayIconDelete($nTrayIcon)
Exit


Func _Show()
$pos = MouseGetPos()
WinMove($Transparent_Gui,"",$pos[0]-20, $pos[1]-20)
Sleep(50)
_TrayIconContext($Transparent_Gui, $pos[0], $pos[1])
WinMove($Transparent_Gui, "",@DesktopWidth+40, 0)
EndFunc
В библиотеку ModernMenuRaw.au3 в самый низ добавь такую функцию:
Код: Выделить весь код
Func _TrayIconContext($hWnd, $iX,$iY)
    Local $nID = 0x00000001
        Local $hMenu = GUICtrlGetHandle($TRAYNOTIFYIDS[$nID][2])
        If $hMenu <> 0 Then
            Local $stPoint = DllStructCreate("int;int")
            SetForegroundWindow($hWnd)
        
            TrackPopupMenuEx($hMenu, 0, $iX, $iY, $hWnd, 0)
            PostMessage($hWnd, 0, 0, 0)
        EndIf
EndFunc
P.S. Имеется некоторый глюк, но может это уже кто то исправит...

-------
Не в кількості знань полягає освіта, а в повному розумінні і вмілому використанні того, що знаєш.


Отправлено: 21:52, 14-11-2010 | #3

Название темы: Вызов GUI в ModernMenuRaw