Привет, как сделать что бы при нажатии на $iShow вызывалось событие через WM_NOTIFY.
Т.к. если во время выполнения скрипта, например при вызове функции _search_files поиска файлов скрипт не реагирует на
нажатие кнопок указанных через TrayGetMsg() ?
Используйте для AutoIt кода тег [autoit]
madmasles.
Т.к. если во время выполнения скрипта, например при вызове функции _search_files поиска файлов скрипт не реагирует на
нажатие кнопок указанных через TrayGetMsg() ?
Код:
#include <windowsconstants.au3>
Opt('TrayAutoPause', 0)
Opt('WinTitleMatchMode', 3)
Opt('WinWaitDelay', 0)
Opt('TrayMenuMode', 2)
Global Const $WM_TRAYNOTIFY = $WM_USER + 1
Global Const $NIN_BALLOONSHOW = $WM_USER + 2
Global Const $NIN_BALLOONHIDE = $WM_USER + 3
Global Const $NIN_BALLOONUSERCLICK = $WM_USER + 5
Global Const $NIN_BALLOONTIMEOUT = $WM_USER + 4
Global Const $subID = 1234
Global $iTip = 2
Global $psub = DllCallbackRegister("_subclass", "lresult", "hwnd;uint;wparam;lparam;uint_ptr;dword_ptr")
Global $hForm = GUICreate('')
DllCall("comctl32.dll", "bool", "SetWindowSubclass", "hwnd", WinGetHandle(AutoItWinGetTitle()), "ptr", DllCallbackGetPtr($psub), "uint_ptr", $subID, "dword_ptr", 0)
GUIRegisterMsg($WM_TRAYNOTIFY, 'WM_TRAYNOTIFY')
OnAutoItExitRegister("SafeExit")
Global $iShow = TrayCreateItem("Show New Tip")
;~ TrayCreateItem("")
;~ Global $iExit = TrayCreateItem("Exit")
TrayTip('Tip', 'This is a tray tip, click here.', 10, 1)
While 1
Switch TrayGetMsg()
Case $iShow
TrayTip('Tip', 'This is a tray tip, click here. [ ' & $iTip & ' ]', 10, 1)
$iTip += 1
;~ Case $iExit
;~ ExitLoop
EndSwitch
;~ Sleep(1000)
WEnd
;~ DllCall("comctl32.dll", "bool", "RemoveWindowSubclass", "hwnd", WinGetHandle(AutoItWinGetTitle()), "ptr", DllCallbackGetPtr($psub), "uint_ptr", $subID)
;~ DllCallbackFree($psub)
Func SafeExit()
ConsoleWrite("exiting..." & @CRLF)
DllCall("comctl32.dll", "bool", "RemoveWindowSubclass", "hwnd", WinGetHandle(AutoItWinGetTitle()), "ptr", DllCallbackGetPtr($psub), "uint_ptr", $subID)
DllCallbackFree($psub)
EndFunc
Func WM_TRAYNOTIFY($hWnd, $iMsg, $wParam, $lParam)
Switch $hWnd
Case $hForm
Switch $lParam
Case $NIN_BALLOONSHOW
ConsoleWrite('Balloon tip show.' & @CR)
Case $NIN_BALLOONHIDE
ConsoleWrite('Balloon tip hide.' & @CR)
Case $NIN_BALLOONUSERCLICK
ConsoleWrite('Balloon tip click.' & @CR)
Case $NIN_BALLOONTIMEOUT
ConsoleWrite('Balloon tip close.' & @CR)
Case $iShow
msgbox(0,"","")
EndSwitch
EndSwitch
EndFunc ;==>WM_TRAYNOTIFY
Func _subclass($hwnd, $uMsg, $wParam, $lParam, $uIdSubclass, $dwRefData)
#forceref $hwnd, $uMsg, $wParam, $lParam, $uIdSubclass, $dwRefData
Switch $uMsg
Case $WM_TRAYNOTIFY
Switch $uIdSubclass
Case $subID
Switch $lParam
Case $NIN_BALLOONSHOW, $NIN_BALLOONHIDE, $NIN_BALLOONUSERCLICK, $NIN_BALLOONTIMEOUT
If $hForm Then
DllCall("user32.dll", "bool", "PostMessageW", "hwnd", $hForm, "uint", $uMsg, "wparam", $wParam, "lparam", $lParam)
EndIf
EndSwitch
EndSwitch
EndSwitch
Local $ret = DllCall("comctl32.dll", "lresult", "DefSubclassProc", "hwnd", $hwnd, "uint", $uMsg, "wparam", $wParam, "lparam", $lParam)
Return $ret[0]
EndFunc
Используйте для AutoIt кода тег [autoit]
madmasles.