Что нового

Как сделать чтобы меню в трее открывалось только по нажатию правой кнопки?

agikon

Знающий
Сообщения
789
Репутация
16
помогите пожалуйста.
что-то не нахожу такой возможности.
 

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
411
Код:
TraySetOnEvent ( specialID, "function" )


Код:
Специальный Id Значение Описание 
$TRAY_EVENT_SHOWICON -3 Отобразить индикатор системной панели. 
$TRAY_EVENT_HIDEICON -4 Скрыть индикатор системной панели. 
$TRAY_EVENT_FLASHICON -5 Пользователь включил мерцание индикатора системной панели. 
$TRAY_EVENT_NOFLASHICON -6 Пользователь отключил мерцание индикатора системной панели. 
$TRAY_EVENT_PRIMARYDOWN -7 Первичная кнопка мыши нажата на индикаторе системной панели. 
$TRAY_EVENT_PRIMARYUP -8 Первичная кнопка мыши освобождается на индикаторе системной панели. 
$TRAY_EVENT_SECONDARYDOWN -9 Вторичная кнопка мыши нажата на индикаторе системной панели. 
$TRAY_EVENT_SECONDARYUP -10 Вторичная кнопка мыши освобождается на индикаторе системной панели. 
$TRAY_EVENT_MOUSEOVER -11 Указатель мыши перемещается над индикатором системной панели. 
$TRAY_EVENT_PRIMARYDOUBLE -13 Первичная кнопка мыши дважды нажата на индикаторе системной панели. 
$TRAY_EVENT_SECONDARYDOUBLE -14 Вторичная кнопка мыши дважды нажата на индикаторе системной панели.
Код:
TrayGetMsg()


Код:
$TRAY_EVENT_PRIMARYDOWN Нажата первичная кнопка мыши 
$TRAY_EVENT_PRIMARYUP Первичная кнопка мыши освобождена 
$TRAY_EVENT_SECONDARYDOWN Нажата вторичная кнопка мыши 
$TRAY_EVENT_SECONDARYUP Вторичная кнопка мыши освобождена 
$TRAY_EVENT_PRIMARYDOUBLE Двойное нажатие первичной кнопки мыши 
$TRAY_EVENT_SECONDARYDOUBLE Двойное нажатие вторичной кнопки мыши
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
16
Viktor1703
спасибо!

но что-то не получается.
я использую $TRAY_EVENT_SECONDARYDOWN
то есть чтобы по одному клике по иконке выскочило меню.
меню выскакивает но не срабатывает.
вобщем не могу сосредоточится на коде и всё тут

вот посмотрите пожалуйста что тут не так?

Код:
#include <GUIConstantsEx.au3>
#Include <WinAPIEx.au3>
#include <resources.au3>
#include <Constants.au3>

Global $exit

$hMain = GUICreate('Main', 200, 300)

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


TraySetOnEvent(-13, 'Show')
TraySetOnEvent($TRAY_EVENT_SECONDARYUP, "SpecialEvent")

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
		Case $exit
			exit
    EndSwitch
WEnd


Func  Show()
    GUISetState(@SW_SHOW)
EndFunc



Func SpecialEvent()
    Select
        Case @TRAY_ID = $TRAY_EVENT_SECONDARYUP
            $exit  = TrayCreateItem("exit")
    EndSelect
EndFunc
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
agikon

Код:
#NoTrayIcon

Opt("TrayOnEventMode",1)
Opt("TrayMenuMode",1)   ; Default tray menu items (Script Paused/Exit) will not be shown.

TraySetClick(16)    ; Only secondary mouse button will show the tray menu.

$infoitem = TrayCreateItem("Info")
TrayItemSetOnEvent(-1,"ShowInfo")

TrayCreateItem("")

$exititem = TrayCreateItem("Exit")
TrayItemSetOnEvent(-1,"ExitScript")

TraySetState()

While 1
    Sleep(10)   ; Idle loop
WEnd

Exit

; Functions
Func ShowInfo()
    Msgbox(0,"Info","Tray OnEvent Demo")
EndFunc

Func ExitScript()
    Exit
EndFunc
 

Viktor1703

AutoIT Гуру
Сообщения
1 535
Репутация
411
Код:
#Include <Constants.au3>

Opt("TrayMenuMode", 3)

$exit = TrayCreateItem("Exit")

TraySetState()
TraySetClick(16)

While 1
    Switch TrayGetMsg()
        Case $exit
            ExitLoop
    EndSwitch
WEnd
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
16
snoitaleR
Viktor1703

ваши скрипты работают только на половину.
а именно работает та часть которая отвечает за меню с трея.да, это у вас работает нормально.
но.

как же та часть которая должна отвечать за открытие окна скрипта по даблклику левой кнопкой мыши по иконке скрипта?

то есть как правильно обьединить дабл клик, и меню?
бо по отдельности я научился делать. а вот обьединить не получается и у ваших примерах работает только меню.

смотрите там же специально стоит Opt("TrayOnEventMode",1) чтобы по даблклику левой кл. мыши открывал скрипт. но он не открывает его потому что я где-то ошибку сделал.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
agikon,
Код:
#NoTrayIcon
#include <Constants.au3>
#include <GuiConstantsEx.au3>

Opt('TrayMenuMode', 3)

$nExitItem = TrayCreateItem('Выход')
TrayCreateItem('')
$nShowHideItem = TrayCreateItem('Скрыть окно')
$nNextItem = TrayCreateItem('NextItem')

$hGui = GUICreate('Test', 300, 300)
$nButton = GUICtrlCreateButton('Button', 100, 100, 100, 100)
_ShowHide()
TraySetState()
TraySetClick(16)

While 1
	Switch TrayGetMsg()
		Case $nExitItem
			_Exit()
		Case $nShowHideItem
			_ShowHide()
		Case $nNextItem
			TrayTip('Test', 'NextItem', 2, 1)
		Case $TRAY_EVENT_PRIMARYDOUBLE
			_ShowHide()
	EndSwitch

	Switch GUIGetMsg()
		Case $GUI_EVENT_CLOSE
			_Exit()
		Case $nButton
			MsgBox(64, 'Info', 'Button', 0, $hGui)
	EndSwitch
WEnd

Func _Exit()
	Exit
EndFunc   ;==>_Exit

Func _ShowHide()
	If BitAND(WinGetState($hGui), 2) Then
		GUISetState(@SW_HIDE, $hGui)
		TraySetToolTip('Двойной клик - показать окно')
		TrayItemSetText($nShowHideItem, 'Показать окно')
	Else
		GUISetState(@SW_SHOW, $hGui)
		TraySetToolTip('Двойной клик - скрыть окно')
		TrayItemSetText($nShowHideItem, 'Скрыть окно')
	EndIf
EndFunc   ;==>_ShowHide
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
16
madmasles
Спасибо! именно работает так как и требовалось!

Всех форумчан с Рождеством!
 
Верх