Что нового

[Окна, Диалоги] работа скрипта с секундомером

nu3dell

Осваивающий
Сообщения
139
Репутация
24
Можно ли переделать этот секундомер, что бы при запуске скрипта одновременно был секундомер и работа программы
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>

Opt('GUIOnEventMode', 1)
Global $sIND = 'Stop'
Global $Pause
$hParent = GUICreate('Timer', 160, 40, 0, 0, $WS_POPUP, BitOR($GUI_WS_EX_PARENTDRAG, $WS_EX_TOPMOST))
GUISetState()

$hLabel = GUICtrlCreateLabel('', 2, 2, 156, 36)
GUICtrlSetFont(-1, 20, 1000)
GUICtrlSetColor(-1, 0xc03d3a)
GUICtrlSetBkColor(-1, 0xffffff)
WinSetTrans('Timer', '', 140)

GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit')
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_Move')
GUISetOnEvent($GUI_EVENT_PRIMARYUP, '_Move')
GUISetOnEvent($GUI_EVENT_MOUSEMOVE, '_Move')
HotKeySet('^+p', '_TogglePause')

Global $iStart = TimerInit()
Global $IDLE = 0
While 2
    Global $iCurrent = TimerDiff($iStart) - $IDLE
	$iElapsed = Int($iCurrent)
	$iHour = Int($iElapsed/(1000*60*60))
	$iMin = Int(($iElapsed - $iHour*1000*60*60)/(1000*60))
	$iSec = Int(($iElapsed - $iHour*1000*60*60 - $iMin*1000*60)/1000)
	$iMsec = Int($iElapsed - $iHour*1000*60*60 - $iMin*1000*60 - $iSec*1000)
	$sLabel = $iHour & ":" & $iMin & ":" & $iSec & "." & $iMsec
    GUICtrlSetData($hLabel, $sLabel)
    Sleep(90)
WEnd
Func _Exit()
    Exit
EndFunc

Func _Move()
    Switch @GUI_CtrlID
        Case $GUI_EVENT_PRIMARYDOWN
            Global $aWCoord_B = WinGetPos('Timer')
            Global $aMCoord_B = MouseGetPos()
            Global $ixWCoord_B = $aWCoord_B[0]
            Global $iyWCoord_B = $aWCoord_B[1]
            Global $ixMCoord_B = $aMCoord_B[0]
            Global $iyMCoord_B = $aMCoord_B[1]
            Global $ixDelta = $ixMCoord_B - $ixWCoord_B
            Global $iyDelta = $iyMCoord_B - $iyWCoord_B
            If ($ixDelta <= 170 AND $iyDelta <= 40) Then $sIND = 'Move'
        Case $GUI_EVENT_MOUSEMOVE
            If $sIND = 'Move' Then
                $aMCoord = MouseGetPos()
                $ixMCoord = $aMCoord[0]
                $iyMCoord = $aMCoord[1]
                $ixWCoord = $ixMCoord - $ixDelta
                $iyWCoord = $iyMCoord - $iyDelta
                WinMove('Timer', '', $ixWCoord, $iyWCoord)
            EndIf
        Case $GUI_EVENT_PRIMARYUP
            $sIND = 'Stop'
    EndSwitch
EndFunc

Func _TogglePause()
	$Pause = NOT $Pause
	$IDLE_dif = TimerInit()
	While $Pause
		Sleep(100)
	WEnd
	$IDLE += TimerDiff($IDLE_dif)
EndFunc
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1 575
Репутация
335
Re: [Окна, Диалоги] Выборочный запуск

Сделать 2 разные функции - не судьба? Или какие то проблемы?
 

Zaramot

I ♥ AutoIt
Сообщения
1 160
Репутация
658
Re: [Окна, Диалоги] Выборочный запуск

Код:
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("Form1", 218, 58, 192, 124)
$Button1 = GUICtrlCreateButton("Блокнот", 8, 8, 97, 41, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Калькулятор", 112, 8, 97, 41, $WS_GROUP)
GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			Run('notepad.exe')
		Case $Button2
			Run('calc.exe')
	EndSwitch
WEnd
 
Автор
nu3dell

nu3dell

Осваивающий
Сообщения
139
Репутация
24
Re: [Окна, Диалоги] Секундомер

Zaramot спасибо, но чуть не то, я что бы не создавать новую тему изменил первый пост, не мог бы глянуть? :(
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4 020
Репутация
622
Re: [Окна, Диалоги] Секундомер

Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Как правильно называть темы

"[Окна, Диалоги] Секундомер " - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, Модератор раздела.
 

Zaramot

I ♥ AutoIt
Сообщения
1 160
Репутация
658
Если я тебя правильно понял, то так:
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <Misc.au3>

Opt('GUIOnEventMode', 1)
Global $sIND = 'Stop'
Global $Pause

$Form1 = GUICreate("Form1", 445, 310, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit')
GUISetState(@SW_SHOW)

_Timer()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
	EndSwitch
WEnd


Func _TIMER()
	$hParent = GUICreate('Timer', 160, 40, 0, 0, $WS_POPUP, BitOR($GUI_WS_EX_PARENTDRAG, $WS_EX_TOPMOST))
GUISetState()

$hLabel = GUICtrlCreateLabel('', 2, 2, 156, 36)
GUICtrlSetFont(-1, 20, 1000)
GUICtrlSetColor(-1, 0xc03d3a)
GUICtrlSetBkColor(-1, 0xffffff)
WinSetTrans('Timer', '', 140)

GUISetOnEvent($GUI_EVENT_CLOSE, '_Exit')
GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_Move')
GUISetOnEvent($GUI_EVENT_PRIMARYUP, '_Move')
GUISetOnEvent($GUI_EVENT_MOUSEMOVE, '_Move')
HotKeySet('^+p', '_TogglePause')

Global $iStart = TimerInit()
Global $IDLE = 0
While 2
    Global $iCurrent = TimerDiff($iStart) - $IDLE
    $iElapsed = Int($iCurrent)
    $iHour = Int($iElapsed/(1000*60*60))
    $iMin = Int(($iElapsed - $iHour*1000*60*60)/(1000*60))
    $iSec = Int(($iElapsed - $iHour*1000*60*60 - $iMin*1000*60)/1000)
    $iMsec = Int($iElapsed - $iHour*1000*60*60 - $iMin*1000*60 - $iSec*1000)
    $sLabel = $iHour & ":" & $iMin & ":" & $iSec & "." & $iMsec
    GUICtrlSetData($hLabel, $sLabel)
    Sleep(90)
WEnd
EndFunc

Func _Exit()
    Exit
EndFunc

Func _Move()
    Switch @GUI_CtrlID
        Case $GUI_EVENT_PRIMARYDOWN
            Global $aWCoord_B = WinGetPos('Timer')
            Global $aMCoord_B = MouseGetPos()
            Global $ixWCoord_B = $aWCoord_B[0]
            Global $iyWCoord_B = $aWCoord_B[1]
            Global $ixMCoord_B = $aMCoord_B[0]
            Global $iyMCoord_B = $aMCoord_B[1]
            Global $ixDelta = $ixMCoord_B - $ixWCoord_B
            Global $iyDelta = $iyMCoord_B - $iyWCoord_B
            If ($ixDelta <= 170 AND $iyDelta <= 40) Then $sIND = 'Move'
        Case $GUI_EVENT_MOUSEMOVE
            If $sIND = 'Move' Then
                $aMCoord = MouseGetPos()
                $ixMCoord = $aMCoord[0]
                $iyMCoord = $aMCoord[1]
                $ixWCoord = $ixMCoord - $ixDelta
                $iyWCoord = $iyMCoord - $iyDelta
                WinMove('Timer', '', $ixWCoord, $iyWCoord)
            EndIf
        Case $GUI_EVENT_PRIMARYUP
            $sIND = 'Stop'
    EndSwitch
EndFunc

Func _TogglePause()
    $Pause = NOT $Pause
    $IDLE_dif = TimerInit()
    While $Pause
        Sleep(100)
    WEnd
    $IDLE += TimerDiff($IDLE_dif)
EndFunc
 
Верх