Что нового

Меню в трее. Где ошибка?

Suppir

Продвинутый
Сообщения
967
Репутация
62
Код программы:

Код:
#Include <Misc.au3>

AutoItSetOption("TrayAutoPause", 0)

if _Singleton("test",1) = 0 Then 
	TrayTip ("AutoIt", "уже запущен!", 1)
	sleep(2000)
	TrayTip("clears any tray tip","",0)
	Exit
EndIf

Opt("TrayMenuMode", 1)

$Author = TrayCreateItem("Информация об программе")
$Exit = TrayCreateItem("Выход")

TrayTip ("AutoIt", "запущен", 1)
sleep(2000)
TrayTip("clears any tray tip","",0)

TraySetState()

Opt("SendKeyDownDelay", 100)
while True
	if WinExists("Error", "OK") Then
		WinClose ("Error", "OK")
		WinActivate ("АРХИВАРИУС")
		$Matches = StringRegExp(WinGetText(""), "Адрес\(а\) ссылки: (\d+\.?\d*)", 1)
		If @error = 0 Then
			$link = $Matches[0]
		EndIf

		WinActivate("ГАРАНТ")
		Send ("!n")
		ControlSetText("", "", "", $link)
		Send ("{ENTER}")		
	EndIf
	
	Switch TrayGetMsg()
		Case $Author
		MsgBox(0, "", "Информация об программе")
		Case $Exit
  	                Exit
	EndSwitch
	
	Sleep (50)
Wend



почему-то не работает меню в трее. Пункт меню нажимаются (появляются галочки), но при этом ничего не происходит
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
Да вроде у меня не Windows 7 (XP стоит)


Добавлено:
Сообщение автоматически объединено:

Еще маленький сопутствующий вопросик. Как сделать так, чтобы при наведении мышкой на иконку в трее выскакивал не стандартный тултип (имя программы), а тултип определенный мною?
 

snoitaleR

AutoIT Гуру
Сообщения
854
Репутация
223
Вот я нашел примерчик на оффсайте:

Код:
#include <GUIConstantsEx.au3>

Opt("TrayOnEventMode", 1) ; Use event trapping for tray menu
Opt("TrayMenuMode", 3) ; Default tray menu items will not be shown.

TrayCreateItem("Show")
TrayItemSetOnEvent(-1, "Tray_Show")
TrayCreateItem("Hide")
TrayItemSetOnEvent(-1, "Tray_Hide")
TrayCreateItem("Exit")
TrayItemSetOnEvent(-1, "On_Exit")

TraySetState()

; Make GUI a child of the hidden Autoit window - then it has no taskbar button
$hGUI = GUICreate("Test", 500, 500, -1, -1, -1, -1, WinGetHandle(AutoitWinGetTitle()))

GUISetState()

While 1

    Switch GUIGetMsg()
        ; Click [X]
        Case $GUI_EVENT_CLOSE
            Exit
        ; Click [_]
        Case $GUI_EVENT_MINIMIZE
            ; Hide as well as minimize
            GUISetState(@SW_HIDE, $hGUI)
    EndSwitch

WEnd

Func Tray_Show()
    ; Show and also restore in case it was minimized
    GUISetState(@SW_SHOW, $hGUI)
    GUISetState(@SW_RESTORE, $hGUI)
EndFunc

Func Tray_Hide()
    GUISetState(@SW_HIDE, $hGUI)
EndFunc

Func On_Exit()
    Exit
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 175
Репутация
2 333
Suppir [?]
Пункт меню нажимаются (появляются галочки), но при этом ничего не происходит
У меня происходит, но с задержкой, т.ч Sleep(50) лучше убрать.
И ещё, проверку окна тоже можно вывести в отдельную функцию, и проверять по AdlibEnable, так будет надёжнее.

[?]
тултип определенный мною?
Код:
TraySetToolTip
 
Автор
S

Suppir

Продвинутый
Сообщения
967
Репутация
62
У меня все заработало таким способом:

Код:
#Include <Misc.au3>

AutoItSetOption("TrayAutoPause", 0)

if _Singleton("test",1) = 0 Then 
	TrayTip ("AutoIt", "уже запущен!", 1)
	sleep(2000)
	TrayTip("clears any tray tip","",0)
	Exit
EndIf

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

TrayCreateItem("Информация о программе")
TrayItemSetOnEvent(-1, "_Author")
TrayCreateItem("Выход")
TrayItemSetOnEvent(-1, "_Exit")

TrayTip ("AutoIt", "запущен", 1)
sleep(2000)
TrayTip("clears any tray tip","",0)

Func _Author()
		MsgBox(0, "", "Автор")
EndFunc

Func _Exit()
		Exit
EndFunc

Opt("SendKeyDownDelay", 100)
while True
	if WinExists("Error", "OK") Then
		WinClose ("Error", "OK")
		WinActivate ("АРХИ")
		$Matches = StringRegExp(WinGetText(""), "Адрес\(а\) ссылки: (\d+\.?\d*)", 1)
		If @error = 0 Then
			$link = $Matches[0]
		EndIf

		WinActivate("ГАР")
		Send ("!n")
		ControlSetText("", "", "", $link)
		Send ("{ENTER}")		
	EndIf
	
	Sleep (50)
Wend



Спасибо за советы! :smile:


Добавлено:
Сообщение автоматически объединено:

TraySetToolTip - то, что нужно!
 
Верх