Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Создание авто опроса событий GUI (http://forum.oszone.net/showthread.php?t=156462)

IronOleg 09-11-2009 19:08 1265948

Создание авто опроса событий GUI
 
Вот есть прога:
Код:

#include <Date.au3>
#include <GUIConstants.au3>

GUICreate("Дата и Время", 300, 100)
$datetime = GUICtrlCreateLabel("Текущая дата и время: " & _Now(), 1, 50)
GUISetState(@SW_SHOW)

While 1
  $msg = GUIGetMsg()
 
Select 
        Case $msg = $datetime
                GUICtrlSetData($datetime, "Текущая дата и время: " & _Now())
 
    Case $msg = $GUI_EVENT_CLOSE
      MsgBox(0, "GUI", "Выход...")
      ExitLoop
  EndSelect
WEnd

Мне нужно чтобы время обновлялось не при нажатии, а само. ТО есть были бы часы как встроенные в Windows XP. Помогите плиз.

Medic84 09-11-2009 20:14 1266020

Код:

#include <Date.au3>
#include <GUIConstants.au3>

GUICreate("Дата и Время", 300, 100)
$datetime = GUICtrlCreateLabel("Текущая дата и время: " & _Now(), 1, 50)
GUISetState(@SW_SHOW)

While 1
  $msg = GUIGetMsg()
Select
    Case $msg = $GUI_EVENT_CLOSE
      MsgBox(0, "GUI", "Выход...")
      ExitLoop
EndSelect
GUICtrlSetData($datetime, "Текущая дата и время: " & _Now())
WEnd

Можно так.
А лучше так:

Код:

#include <Date.au3>
#include <GUIConstants.au3>

GUICreate("Дата и Время", 300, 100)
$datetime = GUICtrlCreateLabel("Текущая дата и время: " & _Now(), 1, 50)
GUISetState(@SW_SHOW)

AdlibEnable("Time",1000)

While 1
  $msg = GUIGetMsg()
Select
    Case $GUI_EVENT_CLOSE
      AdlibDisable()
          Exit
EndSelect
WEnd

Func Time()
        GUICtrlSetData($datetime, "Текущая дата и время: " & _Now())
EndFunc


Creat0R 09-11-2009 22:34 1266152

Такой пример есть в справке к функций _TimeToTicks.

А вот более продвинуты пример:
Код:

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Timers.au3>
;

Global $iTimer, $sTDelim = _DateTimeGetDelim()

$hGUI = GUICreate("Time Script", 220, 90, -1, -1, BitOR($WS_CAPTION, $WS_POPUP, $WS_SYSMENU))
$Time_Label = GUICtrlCreateLabel("Текущее время: " & _DateTimeGetCurrentTime($sTDelim), 40, 60)

$iTimer = _Timer_SetTimer($hGUI, 1000, "_Set_SystemTime_Proc")

GUISetState(@SW_SHOW, $hGUI)

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            _Timer_KillTimer($hGUI, $iTimer)
            Exit
    EndSwitch
WEnd

Func _Set_SystemTime_Proc($hWnd, $nMsg, $lParam, $wParam)
    GUICtrlSetData($Time_Label, "Текущее время: " & _DateTimeGetCurrentTime($sTDelim))
EndFunc

Func _DateTimeGetCurrentTime($sTDelim=":")
    Return @HOUR & $sTDelim & @MIN & $sTDelim & @SEC
EndFunc

Func _DateTimeGetDelim($sNowTime="")
    Local $sRetDelim = RegRead("HKEY_CURRENT_USER\Control Panel\International", "sTime")

    If $sRetDelim = "" And $sNowTime <> "" Then $sRetDelim = StringLeft(StringRegExpReplace($sNowTime, "[0-9]", ""), 1)
    If $sRetDelim = "" Then $sRetDelim = ":"

    Return $sRetDelim
EndFunc

P.S
А как оно связано с авто опросом элементов GUI?

IronOleg 10-11-2009 13:05 1266581

Цитата:

Цитата Creat0R
P.S
А как оно связано с авто опросом элементов GUI? »

Я думал что есть что то типа такой функции

evg64 10-11-2009 19:37 1266890

Цитата:

Цитата Creat0R
Func _Set_SystemTime_Proc($hWnd, $nMsg, $lParam, $wParam)
GUICtrlSetData($Time_Label, "Текущее время: " & _DateTimeGetCurrentTime($sTDelim))
EndFunc »

А зачем нужны аргументы $hWnd, $nMsg, $lParam, $wParam, если в теле функции они не используются?


Время: 16:01.

Время: 16:01.
© OSzone.net 2001-