PDA

Показать полную графическую версию : [решено] Отмена паузы при вызове меню из трея


OSArev
02-06-2012, 13:15
Доброго времени!
Вот заготовка скрипта:
#Include <WinAPIEx.au3>
#include <GUIConstants.au3>

_WinAPI_EmptyWorkingSet(@AutoItPID)

Opt('MustDeclareVars', 1)

Global $hGui, $Lab1, $Lab2, $exit, $length_hGui, $day, $mon, $nMsg

TraySetClick(16)

;Opt('TrayAutoPause', 1)
Opt('TrayAutoPause', 0)
Opt("TrayMenuMode",1+2)
Opt("TrayOnEventMode", 1)

$exit = TrayCreateItem("Выход")
TrayItemSetOnEvent(-1, "_TrayEvent")

$hGui = GUICreate("Системное время", _Comparison_of_dates(), 23, -1, -1, $WS_POPUP, $WS_EX_TOOLWINDOW)
$Lab1 = GUICtrlCreateLabel(_today()&", "&_month(), 110, 00, 320, 25, -1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetFont(-1, 15, 200, 1, 'Tahoma')
$Lab2 = GUICtrlCreateLabel("", 05, 00, 105, 25, -1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetFont(-1, 15, 800, 1, 'Tahoma')

WinSetOnTop($hGui, "", 1)
GUISetState(@SW_SHOW, $hGui)

While 1
$nMsg = GUIGetMsg()

Local $systime = @HOUR&":"&@MIN&":"&@SEC

If GUICtrlRead($Lab2) <> $systime Then GUICtrlSetData ( $Lab2,$systime)
Wend

Func _TrayEvent()
Switch @TRAY_ID

Case $exit
_Exit()

EndSwitch
EndFunc

Func _Comparison_of_dates()
;январь
If _today()&", "&_month() = "воскресенье, " &@MDAY&" "&"января"&" "&@YEAR&"г." Then $length_hGui = "395"
If _today()&", "&_month() = "понедельник, " &@MDAY&" "&"января"&" "&@YEAR&"г." Then $length_hGui = "400"
If _today()&", "&_month() = "вторник, " &@MDAY&" "&"января"&" "&@YEAR&"г." Then $length_hGui = "355"
If _today()&", "&_month() = "среда, " &@MDAY&" "&"января"&" "&@YEAR&"г." Then $length_hGui = "335"
If _today()&", "&_month() = "четверг, " &@MDAY&" "&"января"&" "&@YEAR&"г." Then $length_hGui = "355"
If _today()&", "&_month() = "пятница, " &@MDAY&" "&"января"&" "&@YEAR&"г." Then $length_hGui = "355"
If _today()&", "&_month() = "суббота, " &@MDAY&" "&"января"&" "&@YEAR&"г." Then $length_hGui = "355"
;-----------------
;февраль
If _today()&", "&_month() = "воскресенье, " &@MDAY&" "&"февраля"&" "&@YEAR&"г." Then $length_hGui = "400"
If _today()&", "&_month() = "понедельник, " &@MDAY&" "&"февраля"&" "&@YEAR&"г." Then $length_hGui = "415"
If _today()&", "&_month() = "вторник, " &@MDAY&" "&"февраля"&" "&@YEAR&"г." Then $length_hGui = "370"
If _today()&", "&_month() = "среда, " &@MDAY&" "&"февраля"&" "&@YEAR&"г." Then $length_hGui = "350"
If _today()&", "&_month() = "четверг, " &@MDAY&" "&"февраля"&" "&@YEAR&"г." Then $length_hGui = "370"
If _today()&", "&_month() = "пятница, " &@MDAY&" "&"февраля"&" "&@YEAR&"г." Then $length_hGui = "375"
If _today()&", "&_month() = "суббота, " &@MDAY&" "&"февраля"&" "&@YEAR&"г." Then $length_hGui = "370"
;------------------
;март
If _today()&", "&_month() = "воскресенье, " &@MDAY&" "&"марта"&" "&@YEAR&"г." Then $length_hGui = "390"
If _today()&", "&_month() = "понедельник, " &@MDAY&" "&"марта"&" "&@YEAR&"г." Then $length_hGui = "390"
If _today()&", "&_month() = "вторник, " &@MDAY&" "&"марта"&" "&@YEAR&"г." Then $length_hGui = "345"
If _today()&", "&_month() = "среда, " &@MDAY&" "&"марта"&" "&@YEAR&"г." Then $length_hGui = "325"
If _today()&", "&_month() = "четверг, " &@MDAY&" "&"марта"&" "&@YEAR&"г." Then $length_hGui = "345"
If _today()&", "&_month() = "пятница, " &@MDAY&" "&"марта"&" "&@YEAR&"г." Then $length_hGui = "350"
If _today()&", "&_month() = "суббота, " &@MDAY&" "&"марта"&" "&@YEAR&"г." Then $length_hGui = "345"
;----------------
;апрель
If _today()&", "&_month() = "воскресенье, " &@MDAY&" "&"апреля"&" "&@YEAR&"г." Then $length_hGui = "400"
If _today()&", "&_month() = "понедельник, " &@MDAY&" "&"апреля"&" "&@YEAR&"г." Then $length_hGui = "405"
If _today()&", "&_month() = "вторник, " &@MDAY&" "&"апреля"&" "&@YEAR&"г." Then $length_hGui = "360"
If _today()&", "&_month() = "среда, " &@MDAY&" "&"апреля"&" "&@YEAR&"г." Then $length_hGui = "340"
If _today()&", "&_month() = "четверг, " &@MDAY&" "&"апреля"&" "&@YEAR&"г." Then $length_hGui = "355"
If _today()&", "&_month() = "пятница, " &@MDAY&" "&"апреля"&" "&@YEAR&"г." Then $length_hGui = "360"
If _today()&", "&_month() = "суббота, " &@MDAY&" "&"апреля"&" "&@YEAR&"г." Then $length_hGui = "355"
;--------
;май
If _today()&", "&_month() = "воскресенье, " &@MDAY&" "&"мая"&" "&@YEAR&"г." Then $length_hGui = "370"
If _today()&", "&_month() = "понедельник, " &@MDAY&" "&"мая"&" "&@YEAR&"г." Then $length_hGui = "375"
If _today()&", "&_month() = "вторник, " &@MDAY&" "&"мая"&" "&@YEAR&"г." Then $length_hGui = "325"
If _today()&", "&_month() = "среда, " &@MDAY&" "&"мая"&" "&@YEAR&"г." Then $length_hGui = "305"
If _today()&", "&_month() = "четверг, " &@MDAY&" "&"мая"&" "&@YEAR&"г." Then $length_hGui = "325"
If _today()&", "&_month() = "пятница, " &@MDAY&" "&"мая"&" "&@YEAR&"г." Then $length_hGui = "330"
If _today()&", "&_month() = "суббота, " &@MDAY&" "&"мая"&" "&@YEAR&"г." Then $length_hGui = "325"
;--------------------------
;июнь
If _today()&", "&_month() = "воскресенье, " &@MDAY&" "&"июня"&" "&@YEAR&"г." Then $length_hGui = "380"
If _today()&", "&_month() = "понедельник, " &@MDAY&" "&"июня"&" "&@YEAR&"г." Then $length_hGui = "385"
If _today()&", "&_month() = "вторник, " &@MDAY&" "&"июня"&" "&@YEAR&"г." Then $length_hGui = "340"
If _today()&", "&_month() = "среда, " &@MDAY&" "&"июня"&" "&@YEAR&"г." Then $length_hGui = "320"
If _today()&", "&_month() = "четверг, " &@MDAY&" "&"июня"&" "&@YEAR&"г." Then $length_hGui = "340"
If _today()&", "&_month() = "пятница, " &@MDAY&" "&"июня"&" "&@YEAR&"г." Then $length_hGui = "340"
If _today()&", "&_month() = "суббота, " &@MDAY&" "&"июня"&" "&@YEAR&"г." Then $length_hGui = "340"
;------------------
;июль
If _today()&", "&_month() = "воскресенье, " &@MDAY&" "&"июля"&" "&@YEAR&"г." Then $length_hGui = "380"
If _today()&", "&_month() = "понедельник, " &@MDAY&" "&"июля"&" "&@YEAR&"г." Then $length_hGui = "385"
If _today()&", "&_month() = "вторник, " &@MDAY&" "&"июля"&" "&@YEAR&"г." Then $length_hGui = "340"
If _today()&", "&_month() = "среда, " &@MDAY&" "&"июля"&" "&@YEAR&"г." Then $length_hGui = "320"
If _today()&", "&_month() = "четверг, " &@MDAY&" "&"июля"&" "&@YEAR&"г." Then $length_hGui = "340"
If _today()&", "&_month() = "пятница, " &@MDAY&" "&"июля"&" "&@YEAR&"г." Then $length_hGui = "340"
If _today()&", "&_month() = "суббота, " &@MDAY&" "&"июля"&" "&@YEAR&"г." Then $length_hGui = "340"
;-----------------------
;август
If _today()&", "&_month() = "воскресенье, " &@MDAY&" "&"августа"&" "&@YEAR&"г." Then $length_hGui = "400"
If _today()&", "&_month() = "понедельник, " &@MDAY&" "&"августа"&" "&@YEAR&"г." Then $length_hGui = "405"
If _today()&", "&_month() = "вторник, " &@MDAY&" "&"августа"&" "&@YEAR&"г." Then $length_hGui = "360"
If _today()&", "&_month() = "среда, " &@MDAY&" "&"августа"&" "&@YEAR&"г." Then $length_hGui = "340"
If _today()&", "&_month() = "четверг, " &@MDAY&" "&"августа"&" "&@YEAR&"г." Then $length_hGui = "360"
If _today()&", "&_month() = "пятница, " &@MDAY&" "&"августа"&" "&@YEAR&"г." Then $length_hGui = "365"
If _today()&", "&_month() = "суббота, " &@MDAY&" "&"августа"&" "&@YEAR&"г." Then $length_hGui = "360"
;----------
;сентябрь
If _today()&", "&_month() = "воскресенье, " &@MDAY&" "&"сентября"&" "&@YEAR&"г." Then $length_hGui = "410"
If _today()&", "&_month() = "понедельник, " &@MDAY&" "&"сентября"&" "&@YEAR&"г." Then $length_hGui = "420"
If _today()&", "&_month() = "вторник, " &@MDAY&" "&"сентября"&" "&@YEAR&"г." Then $length_hGui = "375"
If _today()&", "&_month() = "среда, " &@MDAY&" "&"сентября"&" "&@YEAR&"г." Then $length_hGui = "355"
If _today()&", "&_month() = "четверг, " &@MDAY&" "&"сентября"&" "&@YEAR&"г." Then $length_hGui = "375"
If _today()&", "&_month() = "пятница, " &@MDAY&" "&"сентября"&" "&@YEAR&"г." Then $length_hGui = "380"
If _today()&", "&_month() = "суббота, " &@MDAY&" "&"сентября"&" "&@YEAR&"г." Then $length_hGui = "375"
;-----------------
;октябрь
If _today()&", "&_month() = "воскресенье, " &@MDAY&" "&"октября"&" "&@YEAR&"г." Then $length_hGui = "400"
If _today()&", "&_month() = "понедельник, " &@MDAY&" "&"октября"&" "&@YEAR&"г." Then $length_hGui = "405"
If _today()&", "&_month() = "вторник, " &@MDAY&" "&"октября"&" "&@YEAR&"г." Then $length_hGui = "360"
If _today()&", "&_month() = "среда, " &@MDAY&" "&"октября"&" "&@YEAR&"г." Then $length_hGui = "340"
If _today()&", "&_month() = "четверг, " &@MDAY&" "&"октября"&" "&@YEAR&"г." Then $length_hGui = "360"
If _today()&", "&_month() = "пятница, " &@MDAY&" "&"октября"&" "&@YEAR&"г." Then $length_hGui = "365"
If _today()&", "&_month() = "суббота, " &@MDAY&" "&"октября"&" "&@YEAR&"г." Then $length_hGui = "360"
;--------
;ноябрь
If _today()&", "&_month() = "воскресенье, " &@MDAY&" "&"ноября"&" "&@YEAR&"г." Then $length_hGui = "400"
If _today()&", "&_month() = "понедельник, " &@MDAY&" "&"ноября"&" "&@YEAR&"г." Then $length_hGui = "405"
If _today()&", "&_month() = "вторник, " &@MDAY&" "&"ноября"&" "&@YEAR&"г." Then $length_hGui = "360"
If _today()&", "&_month() = "среда, " &@MDAY&" "&"ноября"&" "&@YEAR&"г." Then $length_hGui = "340"
If _today()&", "&_month() = "четверг, " &@MDAY&" "&"ноября"&" "&@YEAR&"г." Then $length_hGui = "355"
If _today()&", "&_month() = "пятница, " &@MDAY&" "&"ноября"&" "&@YEAR&"г." Then $length_hGui = "360"
If _today()&", "&_month() = "суббота, " &@MDAY&" "&"ноября"&" "&@YEAR&"г." Then $length_hGui = "355"
;--------------------
;декабрь
If _today()&", "&_month() = "воскресенье, " &@MDAY&" "&"декабря"&" "&@YEAR&"г." Then $length_hGui = "410"
If _today()&", "&_month() = "понедельник, " &@MDAY&" "&"декабря"&" "&@YEAR&"г." Then $length_hGui = "415"
If _today()&", "&_month() = "вторник, " &@MDAY&" "&"декабря"&" "&@YEAR&"г." Then $length_hGui = "370"
If _today()&", "&_month() = "среда, " &@MDAY&" "&"декабря"&" "&@YEAR&"г." Then $length_hGui = "350"
If _today()&", "&_month() = "четверг, " &@MDAY&" "&"декабря"&" "&@YEAR&"г." Then $length_hGui = "370"
If _today()&", "&_month() = "пятница, " &@MDAY&" "&"декабря"&" "&@YEAR&"г." Then $length_hGui = "370"
If _today()&", "&_month() = "суббота, " &@MDAY&" "&"декабря"&" "&@YEAR&"г." Then $length_hGui = "370"

Return $length_hGui
EndFunc

Func _today()
$day=@WDAY
If @WDAY = 1 Then $day = "воскресенье"
If @WDAY = 2 Then $day = "понедельник"
If @WDAY = 3 Then $day = "вторник"
If @WDAY = 4 Then $day = "среда"
If @WDAY = 5 Then $day = "четверг"
If @WDAY = 6 Then $day = "пятница"
If @WDAY = 7 Then $day = "суббота"
return $day
EndFunc

Func _month()
$day=@WDAY
If @MON = 01 Then $mon = "января"
If @MON = 02 Then $mon = "февраля"
If @MON = 03 Then $mon = "марта"
If @MON = 04 Then $mon = "апреля"
If @MON = 05 Then $mon = "мая"
If @MON = 06 Then $mon = "июня"
If @MON = 07 Then $mon = "июля"
If @MON = 08 Then $mon = "августа"
If @MON = 09 Then $mon = "сентября"
If @MON = 10 Then $mon = "октября"
If @MON = 11 Then $mon = "ноября"
If @MON = 12 Then $mon = "декабря"
return @MDAY&" "&$mon&" "&@YEAR&"г."
EndFunc

Func _Exit()
Exit
EndFunc
Что или как изменить (переделать), чтобы при вызове меню из системного трея часы продолжали "тикать"?
Буду рад любой помощи. Заранее благодарен...

ferget
02-06-2012, 14:00
вот тут http://forum.oszone.net/thread-173724.html, можно посмотреть, одновременная работа

Creat0R
02-06-2012, 19:05
Делается через Timer, и код можно значительно уменьшить:

#include (http://autoit-script.ru/autoit3_docs/keywords.htm##include) <WinAPIEx.au3>
#include (http://autoit-script.ru/autoit3_docs/keywords.htm##include) <GUIConstantsEx.au3>
#include (http://autoit-script.ru/autoit3_docs/keywords.htm##include) <WindowsConstants.au3>
#include (http://autoit-script.ru/autoit3_docs/keywords.htm##include) <Timers.au3>

Global (http://www.autoitscript.com/autoit3/docs/keywords.htm#Global) $iFontSize = 15, $iFontWeight = 200, $iFontAttribs = 1, $sFontName = 'Tahoma'
Global (http://www.autoitscript.com/autoit3/docs/keywords.htm#Global) $sDate_Str = _DateWDayToStr() & ", " & _DateMonthToStr()

_WinAPI_EmptyWorkingSet(@AutoItPID (http://autoit-script.ru/autoit3_docs/macros.htm#@autoitpid))

TraySetClick (http://autoit-script.ru/autoit3_docs/functions/TraySetClick.htm)(16)

Opt (http://autoit-script.ru/autoit3_docs/functions/Opt.htm)("TrayAutoPause", 0)
Opt (http://autoit-script.ru/autoit3_docs/functions/Opt.htm)("TrayMenuMode", 1 + 2)
Opt (http://autoit-script.ru/autoit3_docs/functions/Opt.htm)("TrayOnEventMode", 1)

$iExit_TrayItem = TrayCreateItem (http://autoit-script.ru/autoit3_docs/functions/TrayCreateItem.htm)("Выход")
TrayItemSetOnEvent (http://autoit-script.ru/autoit3_docs/functions/TrayItemSetOnEvent.htm)(-1, "_TrayEvent")

$hGUI = GUICreate (http://autoit-script.ru/autoit3_docs/functions/GUICreate.htm)("Системное время", _GetDateGUIWidth($sDate_Str, $iFontSize, $iFontWeight, $iFontAttribs, $sFontName) + 110, 23, -1, -1, $WS_POPUP, BitOR (http://autoit-script.ru/autoit3_docs/functions/BitOR.htm)($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
$iLabel1 = GUICtrlCreateLabel (http://autoit-script.ru/autoit3_docs/functions/GUICtrlCreateLabel.htm)($sDate_Str, 110, 00, 320, 25, -1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetFont (http://autoit-script.ru/autoit3_docs/functions/GUICtrlSetFont.htm)(-1, $iFontSize, $iFontWeight, $iFontAttribs, $sFontName)
$iLabel2 = GUICtrlCreateLabel (http://autoit-script.ru/autoit3_docs/functions/GUICtrlCreateLabel.htm)(@HOUR (http://autoit-script.ru/autoit3_docs/macros.htm#@hour) & ":" & @MIN (http://autoit-script.ru/autoit3_docs/macros.htm#@min) & ":" & @SEC (http://autoit-script.ru/autoit3_docs/macros.htm#@sec), 05, 0, 105, 25, -1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetFont (http://autoit-script.ru/autoit3_docs/functions/GUICtrlSetFont.htm)(-1, $iFontSize, 800, $iFontAttribs, $sFontName)

GUISetState (http://autoit-script.ru/autoit3_docs/functions/GUISetState.htm)(@SW_SHOW (http://autoit-script.ru/autoit3_docs/macros.htm#@sw_show), $hGUI)
$hTimer = _Timer_SetTimer (http://autoit-script.ru/autoit3_docs/libfunctions/_timer_settimer.htm)($hGUI, 1000, "_SetTimeData_Proc")

While (http://www.autoitscript.com/autoit3/docs/keywords.htm#While) 1
Sleep (http://autoit-script.ru/autoit3_docs/functions/Sleep.htm)(100)
WEnd (http://www.autoitscript.com/autoit3/docs/keywords.htm#WEnd)

Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _TrayEvent()
Switch (http://www.autoitscript.com/autoit3/docs/keywords.htm#Switch) @TRAY_ID (http://autoit-script.ru/autoit3_docs/macros.htm#@tray_id)
Case (http://www.autoitscript.com/autoit3/docs/keywords.htm#Case) $iExit_TrayItem
_Timer_KillTimer (http://autoit-script.ru/autoit3_docs/libfunctions/_timer_killtimer.htm)($hGUI, $hTimer)
_Exit()
EndSwitch (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndSwitch)
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)

Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _SetTimeData_Proc($hWnd, $Msg, $iIDTimer, $dwTime)
GUICtrlSetData (http://autoit-script.ru/autoit3_docs/functions/GUICtrlSetData.htm)($iLabel2, @HOUR (http://autoit-script.ru/autoit3_docs/macros.htm#@hour) & ":" & @MIN (http://autoit-script.ru/autoit3_docs/macros.htm#@min) & ":" & @SEC (http://autoit-script.ru/autoit3_docs/macros.htm#@sec))
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)

Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _GetDateGUIWidth($sDate, $iSize = 8.5, $iWeight = 400, $iAttribs = 0, $sFontName = "")
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $hWnd, $hGUISwitch, $aCtrlSize, $aRetSize[2] = [0, 0]

$hWnd = GUICreate (http://autoit-script.ru/autoit3_docs/functions/GUICreate.htm)($sDate, 0, 0, 0, 0, BitOR (http://autoit-script.ru/autoit3_docs/functions/BitOR.htm)($WS_POPUP, $WS_MINIMIZE), BitOR (http://autoit-script.ru/autoit3_docs/functions/BitOR.htm)($DS_MODALFRAME, $WS_EX_TRANSPARENT))
$hGUISwitch = GUISwitch (http://autoit-script.ru/autoit3_docs/functions/GUISwitch.htm)($hWnd)
GUISetFont (http://autoit-script.ru/autoit3_docs/functions/GUISetFont.htm)($iSize, $iWeight, $iAttribs, $sFontName, $hWnd)
$aCtrlSize = ControlGetPos (http://autoit-script.ru/autoit3_docs/functions/ControlGetPos.htm)($hWnd, "", GUICtrlCreateLabel (http://autoit-script.ru/autoit3_docs/functions/GUICtrlCreateLabel.htm)($sDate, 0, 0))
GUIDelete (http://autoit-script.ru/autoit3_docs/functions/GUIDelete.htm)($hWnd)
GUISwitch (http://autoit-script.ru/autoit3_docs/functions/GUISwitch.htm)($hGUISwitch)

If (http://www.autoitscript.com/autoit3/docs/keywords.htm#If) Not (http://www.autoitscript.com/autoit3/docs/keywords.htm#Not) IsArray (http://autoit-script.ru/autoit3_docs/functions/IsArray.htm)($aCtrlSize) Then (http://www.autoitscript.com/autoit3/docs/keywords.htm#Then) Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) SetError (http://autoit-script.ru/autoit3_docs/functions/SetError.htm)(1, 0, 0)
Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) $aCtrlSize[2]
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)

Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _DateWDayToStr()
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $aDay[7] = ["воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота"]
Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) $aDay[@WDAY (http://autoit-script.ru/autoit3_docs/macros.htm#@wday)-1]
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)

Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _DateMonthToStr()
Local (http://www.autoitscript.com/autoit3/docs/keywords.htm#Local) $aMonth[12] = ["января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"]
Return (http://www.autoitscript.com/autoit3/docs/keywords.htm#Return) @MDAY (http://autoit-script.ru/autoit3_docs/macros.htm#@mday) & " " & $aMonth[@MON (http://autoit-script.ru/autoit3_docs/macros.htm#@mon)-1] & " " & @YEAR (http://autoit-script.ru/autoit3_docs/macros.htm#@year) & "г."
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)

Func (http://www.autoitscript.com/autoit3/docs/keywords.htm#Func) _Exit()
Exit (http://www.autoitscript.com/autoit3/docs/keywords.htm#Exit)
EndFunc (http://www.autoitscript.com/autoit3/docs/keywords.htm#EndFunc)

OSArev
02-06-2012, 19:50
ferget, спасибо, с Вашей помощью я немного разобрался с многопоточостью, хотя признаюсь - трудновато...
Creat0R, Вам огромное спасибо за исщерпывающий ответ и особенно за конкретный пример. На примерах всегда легче разобраться в тех или иных фунукциях...

OSArev
20-06-2012, 19:15
Доброго времени!
Возник ещё один вопрос. Как в предыдущем скрипте правильно организовать переход на следующие сутки.
Пытаюсь сделать добавив функцию _NewDayWatch(). Применить к label1 получилось, а дальше ступор, не получается применять новую ширину окна GUI, зависящую от новой даты:#include <WinAPIEx.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Timers.au3>

Global $iFontSize = 15, $iFontWeight = 200, $iFontAttribs = 1, $sFontName = 'Tahoma'
Global $sDate_Str = _DateWDayToStr() & ", " & _DateMonthToStr()

_WinAPI_EmptyWorkingSet(@AutoItPID)

TraySetClick(16)

Opt("TrayAutoPause", 0)
Opt("TrayMenuMode", 1 + 2)
Opt("TrayOnEventMode", 1)

$iExit_TrayItem = TrayCreateItem("Выход")
TrayItemSetOnEvent(-1, "_TrayEvent")

$hGUI = GUICreate("Системное время", _GetDateGUIWidth($sDate_Str, $iFontSize, $iFontWeight, $iFontAttribs, $sFontName) + 110, 23, -1, -1, $WS_POPUP, BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
$iLabel1 = GUICtrlCreateLabel($sDate_Str, 110, 00, 320, 25, -1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetFont(-1, $iFontSize, $iFontWeight, $iFontAttribs, $sFontName)
$iLabel2 = GUICtrlCreateLabel(@HOUR & ":" & @MIN & ":" & @SEC, 05, 0, 105, 25, -1, $GUI_WS_EX_PARENTDRAG)
GUICtrlSetFont(-1, $iFontSize, 800, $iFontAttribs, $sFontName)

GUISetState(@SW_SHOW, $hGUI)
$hTimer = _Timer_SetTimer($hGUI, 1000, "_SetTimeData_Proc")

While 1
_NewDayWatch()
Sleep(100)
WEnd

Func _TrayEvent()
Switch @TRAY_ID
Case $iExit_TrayItem
_Timer_KillTimer($hGUI, $hTimer)
_Exit()
EndSwitch
EndFunc

Func _SetTimeData_Proc($hWnd, $Msg, $iIDTimer, $dwTime)
GUICtrlSetData($iLabel2, @HOUR & ":" & @MIN & ":" & @SEC)
EndFunc

Func _GetDateGUIWidth($sDate, $iSize = 8.5, $iWeight = 400, $iAttribs = 0, $sFontName = "")
Local $hWnd, $hGUISwitch, $aCtrlSize, $aRetSize[2] = [0, 0]

$hWnd = GUICreate($sDate, 0, 0, 0, 0, BitOR($WS_POPUP, $WS_MINIMIZE), BitOR($DS_MODALFRAME, $WS_EX_TRANSPARENT))
$hGUISwitch = GUISwitch($hWnd)
GUISetFont($iSize, $iWeight, $iAttribs, $sFontName, $hWnd)
$aCtrlSize = ControlGetPos($hWnd, "", GUICtrlCreateLabel($sDate, 0, 0))
GUIDelete($hWnd)
GUISwitch($hGUISwitch)

If Not IsArray($aCtrlSize) Then Return SetError(1, 0, 0)
Return $aCtrlSize[2]
EndFunc

Func _DateWDayToStr()
Local $aDay[7] = ["воскресенье", "понедельник", "вторник", "среда", "четверг", "пятница", "суббота"]
Return $aDay[@WDAY-1]
EndFunc

Func _DateMonthToStr()
Local $aMonth[12] = ["января", "февраля", "марта", "апреля", "мая", "июня", "июля", "августа", "сентября", "октября", "ноября", "декабря"]
Return @MDAY & " " & $aMonth[@MON-1] & " " & @YEAR & "г."
EndFunc

Func _NewDayWatch()
$NextDate = _DateMonthToStr()

While $NextDate = _DateMonthToStr()
$NextDate = _DateMonthToStr()
Sleep(100)
WEnd

GUICtrlSetData($iLabel1, _DateWDayToStr() & ", " & _DateMonthToStr())
EndFun

Func _Exit()
Exit
EndFunc Пока остановился на перезапуске скрипта, но хотелось бы более правильного решения.
Буду рад помощи. Заранее спасибо.




© OSzone.net 2001-2012