Что нового

[Время, дата] Запуск программы через заданное время

BlackBrother

Новичок
Сообщения
4
Репутация
1
Здравствуйте!



По просьбе написал скрипт для автоматитческого запуска программы и регистрации в ней )) (Криво конечно но работает )



вот собственно он

Код:
#include <GUIConstantsEx.au3>



Opt("WinTitleMatchMode", 2); Other Option for WinWaitActive

$sFile = @ScriptDir & '\wow.exe'

GUICreate("Запуск ", 260, 260)
GUISetFont(8.5, 800)

GUICtrlCreateLabel("Username", 100, 13)

GUICtrlCreateLabel("Password", 100, 60)

GUICtrlCreateLabel("Путь к игре", 100, 107)
GUISetFont(8.5, 400)



;Button
$input1 = GUICtrlCreateInput("", 10, 29, 240, 20)

$input2 = GUICtrlCreateInput("", 10, 76, 240, 20)

$input3 = GUICtrlCreateInput($sFile, 10, 123, 240, 20)

$ok = GUICtrlCreateButton("Ok", 100, 170, 100, 25)

GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()

    Select
        ;------------ OK Button    - Finished
		Case $msg = $ok
            Run( GUICtrlRead($input3) ) ; запускаем WOW
Sleep(20000); ждем загрузки игры
WinWait("World of Warcraft","")
Sleep(200); ждем секунду
Send ( GUICtrlRead($input1) )
Sleep(200)
Send("{tab}")
Sleep(200)
Send ( GUICtrlRead($input2) )
Sleep(300); ждем еще чуть чуть
Send("{enter}"); нажимаем ентер))
            ;------------ Cross    - Finished
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
    EndSelect
WEnd

вот теперь осталось только добавить запуск всего этого через заданное время )) в идеале хотел чтобы можно было ввести время через input или как то еще )) и после заполнения всех данных нажимается конопка ок и собственно ждем таймер до старта )

пробывал по простому ставить Case @HOUR=19 AND @MIN=25 оно работает, только вот программа постоянно стартует заново и получается множество копий ))


Подскажите пожалуйста решение. Спасибо! ))

p.s. Опыт написания программ только Delphi :-[
 

Belfigor

Модератор
Локальный модератор
Сообщения
3,608
Репутация
941
Код:
Global $Started = 0

While 1
    Select
        Case @HOUR=19 AND @MIN=25 And $Started = 0 
            MsgBox(0,0,"Стартуем")
            Start()
    EndSelect
WEnd 

Func Start()
    $Start = 1
EndFunc

Ну есть еще множество вариантов. Это самый тупой и примитивный.


Добавлено:
Сообщение автоматически объединено:

Например
Код:
Case @HOUR=19 AND @MIN=25 And Not WinExists("World of Warcraft")
    Start()
Case WinExists("World of Warcraft")
    Exit
 
Автор
B

BlackBrother

Новичок
Сообщения
4
Репутация
1
Belfigor сказал(а):
Ну есть еще множество вариантов. Это самый тупой и примитивный.

Спасибо большое!


вот что получилось

Код:
#Include <GUIConstantsEx.au3>
#Include <MenuConstants.au3>
#Include <UpdownConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>


Opt("WinTitleMatchMode", 2); Other Option for WinWaitActive

$sFile = @ScriptDir & '\wow.exe'

GUICreate("Запуск", 260, 360)
GUISetFont(8.5, 800)

GUICtrlCreateLabel("Username", 100, 13)

GUICtrlCreateLabel("Password", 100, 60)

GUICtrlCreateLabel("Путь к игре", 100, 107)

GUICtrlCreateLabel("Время запуска", 100, 155)

GUISetFont(8.5, 400)



;Button
$input1 = GUICtrlCreateInput("", 10, 29, 240, 20)

$input2 = GUICtrlCreateInput("", 10, 76, 240, 20)

$input3 = GUICtrlCreateInput($sFile, 10, 123, 240, 20)

$input4 = GUICtrlCreateInput("", 110, 200, 60, 20)
$UpDownLevel = GUICtrlSetLimit(GUICtrlCreateUpdown($Input4), 24, 1)

$input5 = GUICtrlCreateInput("", 190, 200, 60, 20)
$UpDownLevel2 = GUICtrlSetLimit(GUICtrlCreateUpdown($Input5), 59, 1)


$ok = GUICtrlCreateButton("Ok", 100, 260, 100, 25)

$Label = GUICtrlCreateLabel('Часы                 Минуты', 120, 180, 150, 14)


GUISetState(@SW_SHOW)
Global $Started = 0

While 1
    $msg = GUIGetMsg()

    Select
        ;------------ OK Button    - Finished
		Case $msg = $ok
		 Case @HOUR=( GUICtrlRead($input4) ) AND @MIN=( GUICtrlRead($input5) ) And $Started = 0
		 ;Case @HOUR=24 AND @MIN=38 And $Started = 0
            Start()
            Run( GUICtrlRead($input3) ) ; запускаем WOW
Sleep(20000); ждем загрузки игры
WinWait("World of Warcraft","")
Sleep(200); ждем секунду
Send ( GUICtrlRead($input1) )
Sleep(200)
Send("{tab}")
Sleep(200)
Send ( GUICtrlRead($input2) )
Sleep(300); ждем еще чуть чуть
Send("{enter}"); нажимаем ентер ))
            ;------------ Cross    - Finished
			Exit
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
    EndSelect
WEnd

Func Start()
    $Start = 1
EndFunc




единственное что прога так и зацикливалась пока в конце скрипта не добавил Exit. И проблема с запуском скрипта в ночное время )) т.е если время на часах 0:25 пишу часы 24 и минуты 25 не запустится также и если поставить 0 часов.


Добавлено:
Сообщение автоматически объединено:

в ночное ремя он видит как если 1 час ночи и 2 минуты это 01:02

:wacko:
 

Davyd

Новичок
Сообщения
7
Репутация
1
Для разных подобных проблем давно пользуюсь вот такой конструкцией


Код:
$LABEL1=GUICtrlCreateLabel("Мин",30,32,30,20)
$INPUT1=GUICtrlCreateInput("20",0,30,30,20)
Global $labelData=GUICtrlCreateLabel ("00:00:00",  80, 0, 100)  

While 1 ; Главный цикл
Start()
_time()
WEnd


Func _time() ; таймер + отклики на кнопки 
global $begin
$begin = TimerInit()
$s=GUICtrlRead($INPUT1)
While 1
	    $dif=TimerDiff($begin)/1000/60
     	Sleep(50)
	    $iTicks=$s*60*1000 - TimerDiff($begin)
		$iTicks = Round($iTicks / 1000)
	    $iHours = Int($iTicks / 3600)
	    $iTicks = Mod($iTicks, 3600)
	    $iMins = Int($iTicks / 60)
	    $iSecs = Round(Mod($iTicks, 60))
		GUICtrlSetData($labelData,"осталось "&$iHours&":"& $iMins&":"& $iSecs)
		if $s<$dif Then ExitLoop
	
	$msg = GUIGetMsg()
    Switch $msg
	Case -3
             exit
    Case  $Button1
			_stroyka2()
	Case   $Button2
			_farm()		
	EndSwitch	
			
 wend
EndFunc
 
Автор
B

BlackBrother

Новичок
Сообщения
4
Репутация
1
чет никак немогу прикрутить к своему с крипту. если не трудно покажите пожалуйста как с помощью данной конструкции запустить блокнот после ввода времени и нажатия кнопки )

Спасибо! )
 
Верх