Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Делается через Timer, и код можно значительно уменьшить:

Код: Выделить весь код
#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
    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 _Exit()
    Exit
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 19:05, 02-06-2012 | #3