Автор Тема: Специальный секундомер  (Прочитано 9893 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Alexander [?]

  • Новичок
  • *
  • Сообщений: 105

  • Автор темы
  • Репутация: 2
    • Награды
Re: Специальный секундомер
« Ответ #15, Отправлен: Март 05, 2011, 21:28:07 »
Как сделать, чтоб в этом таймере только при отпускании пробела запускалось время?

Код: AutoIt [Выделить]
#Include <GuiEdit.au3>
#include <GUIConstants.au3>
#include <WindowsConstants.au3>

Func _TicksToTime($iTicks, ByRef $iSecs)
    If Number($iTicks) > 0 Then
        $iTicks = Int($iTicks / 1000)
        $iTicks = Mod($iTicks, 3600)
        $iSecs = Mod($iTicks, 300)
    Return 1
    ElseIf Number($iTicks) = 0 Then
        $iTicks = 0
        $iMins = 0
        $iSecs = 0
        Return 1
    Else
        Return SetError(1,0,0)
    EndIf
EndFunc  

$fishka = '0'
HotKeySet("{SPACE}", "start_timer")
 
$Gui = GUICreate("Timer",200,50,Default,Default,$GUI_SS_DEFAULT_GUI, $WS_EX_TOPMOST)
$GuiEdit = GUICtrlCreateEdit("00.00",0,0,200,50,$ES_READONLY)
GUICtrlSetFont ($GuiEdit,20, 800)
;GUICtrlSetBkColor ( $GuiEdit, 0xFAEBD7 )

GUISetState()
Global $Init0, $PausedTimer, $iSecs

While GUIGetMsg() <> $GUI_EVENT_CLOSE  
    Sleep(10)
WEnd

Func start_timer()
    If $fishka = '0' Then
    $Init0 = TimerInit()
    AdlibRegister("show_timer", 60)
    $fishka = '1'
    If $fishka = '1' Then HotKeySet("{SPACE}", "pause_timer")
    ENdIf
    EndFunc  

Func pause_timer()
    If $fishka = '1' Then
    AdlibUnRegister()
    $fishka = '0'
    If $fishka = '0' Then HotKeySet("{SPACE}", "start_timer")
    Endif
EndFunc  

Func show_timer()
    _TicksToTime(Int(TimerDiff($Init0) + $PausedTimer), $iSecs)
    $TimeShift = TimerDiff($Init0)/1000 + $PausedTimer
    GUICtrlSetData ( $GuiEdit, StringFormat("%02i", $iSecs) & "." &  StringRight(TimerDiff($Init0)+ $PausedTimer,2) )
EndFunc  
 


Русское сообщество AutoIt

Re: Специальный секундомер
« Ответ #15 Отправлен: Март 05, 2011, 21:28:07 »

Оффлайн Alexander [?]

  • Новичок
  • *
  • Сообщений: 105

  • Автор темы
  • Репутация: 2
    • Награды
Re: Специальный секундомер
« Ответ #16, Отправлен: Март 06, 2011, 12:11:27 »
Если не в Autoit, то может в WinAPI есть такая функция?
Это оно?
WM_KEYDOWN (WM_KEYUP)
Как использовать ее к этому таймеру?  :)

Оффлайн VladUs [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 621
  • Репутация: 180
  • Пол: Мужской
    • Награды
Re: Специальный секундомер
« Ответ #17, Отправлен: Март 06, 2011, 13:22:31 »
Попробуйте _WinAPI_GetKeyState () http://autoit-script.ru/index.php?topic=47.0
Делай что должен и  будь что будет

Оффлайн Alexander [?]

  • Новичок
  • *
  • Сообщений: 105

  • Автор темы
  • Репутация: 2
    • Награды
Re: Специальный секундомер
« Ответ #18, Отправлен: Март 06, 2011, 14:04:07 »
VladUs
Если знаете помогите, пожалуйста, это встроить в таймер  :)
--------------------------
Кстати, вот что-то нашел:

Код: AutoIt [Выделить]
#include <GUIConstants.au3>
Opt("GUIOnEventMode", 1)


$HWnd = GUICreate("KEYDOWN_TEST",400,300)
GUISetOnEvent($GUI_EVENT_CLOSE, '_Pro_Exit')


GUISetState()

GUIRegisterMsg(0x0101, "Get_KeyDown")


Func Get_KeyDown($HWnd,$Command,$wParam,$lParam)
    $s1 = BitAND($wParam,0xFF)
    If $s1 = '32' Then MsgBox(0, '', 'Отпущена кнопка SPACE')
EndFunc

While 1
    Sleep(100)
WEnd
Func _Pro_Exit()
    Exit
EndFunc


Помогите присобачить это к программе. А то у меня чего-то не получается. Как будто это не действует в этом таймере. Странно...
« Последнее редактирование: Март 06, 2011, 14:25:15 от Alexander »

Русское сообщество AutoIt

Re: Специальный секундомер
« Ответ #18 Отправлен: Март 06, 2011, 14:04:07 »

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 4003
  • Репутация: 960
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Специальный секундомер
« Ответ #19, Отправлен: Март 06, 2011, 23:38:24 »
Alexander  [?]
Цитировать
Как сделать, чтоб в этом таймере только при отпускании пробела запускалось время?

Добавьте UDF:
Код: AutoIt [Выделить]
#include <Misc.au3>


Замените функции start_timer() и pause_timer():
Код: AutoIt [Выделить]
Func start_timer()
    If $fishka = '0' Then
    While _IsPressed("20")
        Sleep(10)
        If $fishka = '0' Then $fishka = '1'
    WEnd
    $Init0 = TimerInit()
    AdlibRegister("show_timer", 60)
    If $fishka = '1' Then HotKeySet("{SPACE}", "pause_timer")
    EndIf
EndFunc  

Func pause_timer()
    If $fishka = '1' Then
    While _IsPressed("20")
        Sleep(10)
        If $fishka  = '1' Then  $fishka = '0'
    WEnd
    AdlibUnRegister()
    If $fishka = '0' Then HotKeySet("{SPACE}", "start_timer")
    Endif
EndFunc


Теперь, первое  отпускание пробела будет запускать таймер, второе останавливать.

Скорблю и помню.




Оффлайн Alexander [?]

  • Новичок
  • *
  • Сообщений: 105

  • Автор темы
  • Репутация: 2
    • Награды
Re: Специальный секундомер
« Ответ #20, Отправлен: Март 07, 2011, 11:49:35 »
Garrett, Belfigor
Спасибо вам ребята! Вчера мне Belfigor сказал это сделать. Утром встал делать, а тут уже все готово! Спасибо!  :)

Оффлайн taxi-vovrema.info [?]

  • taxi-vovrema.infoVK
  • Новичок
  • *
  • Сообщений: 3
  • Репутация: 0
  • Пол: Мужской
    • такси с детским креслом в люберцах
    • Награды
  • Версия AutoIt: 3.3.14.0
Re: Специальный секундомер
« Ответ #21, Отправлен: Май 19, 2018, 09:15:21 »
 
 
 
.
ссылка:http://taxi-vovrema.info/page/taksi-s-detskim-kreslom-v-lyubertsah/ [nonactive]

Русское сообщество AutoIt

Re: Специальный секундомер
« Ответ #21 Отправлен: Май 19, 2018, 09:15:21 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
9 Ответов
5912 Просмотров
Последний ответ Октябрь 24, 2010, 10:23:28
от SECTOR
1 Ответов
1442 Просмотров
Последний ответ Март 03, 2015, 15:15:51
от InnI