Пользователь
Сообщения: 78
Благодарности: 23
|
Профиль
|
Отправить PM
| Цитировать
Доброго времени!
Возник ещё один вопрос. Как в предыдущем скрипте правильно организовать переход на следующие сутки.
Пытаюсь сделать добавив функцию _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
Пока остановился на перезапуске скрипта, но хотелось бы более правильного решения.
Буду рад помощи. Заранее спасибо.
|