Что нового

[Автоматизация] Команда на кнопку

samuei999

Новичок
Сообщения
3
Репутация
0
Как правильно задать команду на кнопку

Код:
#include <GUIConstants.au3>

#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 195, 58, 194, 125)
$Button1 = GUICtrlCreateButton("Запустить", 0, 0, 193, 57, 0)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x00FF00)
GUICtrlSetBkColor(-1, 0x000040)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

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

	EndSwitch

Case $Button1
Run ( C:\Proga.exe )
Sleep (300)

WEnd

Так выдает ошибку.Суть : Запустить программу "Proga.exe" нажатием кнопки Button1.Далее скрипт должен автоматически запускать программу каждые 30 секунд.Помоги пожалуйсто.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Предупреждение За нарушение правил форума (пункт В.11):
Любые отрывки AutoIt кода необходимо заключать в тег [autoit]
autoit.gif
(подробнее), а обычный код соответственно в тег [code]
code.gif
(подробнее). Также большие выдержки текста помещайте под тег [spoiler]
spoiler.gif
(подробнее), там где это поддерживается естественно. Как в случае с названием темы, также короткое и эргономичное сообщение привлекает больше внимания, и шансы на получение конкретного ответа увеличиваются.


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

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
#include <GUIConstants.au3>

$hForm = GUICreate('', 195, 58, 194, 125)
$iRun = GUICtrlCreateButton('Запустить', 0, 0, 193, 57, 0)
GUICtrlSetFont(-1, 14, 800, 0, 'MS Sans Serif')
GUICtrlSetColor(-1, 0x00FF00)
GUICtrlSetBkColor(-1, 0x000040)
GUISetState(@SW_SHOW)

While 1
	Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
			Exit
        Case $iRun
			Switch GUICtrlRead($iRun)
			    Case 'Запустить'
				    AdlibRegister('Runing', 30000)
				    GUICtrlSetData($iRun, 'Остановить')
			    Case 'Остановить'
				    AdlibUnRegister('Runing')
				    GUICtrlSetData($iRun, 'Запустить')
			EndSwitch	
   EndSwitch
WEnd

Func Runing()
	ConsoleWrite(StringFormat('! time: %02d:%02d:%02d', @HOUR, @MIN, @SEC) & @CRLF)
	;Run('C:\Proga.exe')
EndFunc
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Viktor1703,
Я бы с проверкой запуск сделал.
Код:
;...
Global $iPID
;...
;...
Func Runing()
	ConsoleWrite(StringFormat('! time: %02d:%02d:%02d', @HOUR, @MIN, @SEC) & @CRLF)
	If $iPID Then
		If ProcessExists($iPID) Then Return
	EndIf
	;$iPID = Run('C:\Proga.exe')
EndFunc   ;==>Runing
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Я написал исходя из прочитанного, не говорилось что прежде чем процесс вновь запустится, он должен завершится :smile:
 
Автор
S

samuei999

Новичок
Сообщения
3
Репутация
0
Очень помогли оба ответа.Правда надо было срочно и не дождавшись ответов,сделал немного по другому
Код:
HotKeySet('{F4}', '_Exec')
MsgBox(64, "Прога", "Для запуска нажми F4")
While 1
    Sleep(1000)
WEnd

Func _Exec()
    ShellExecute('C:\Proga.exe', 'C:\')
EndFunc   ;==>_Exec

Подскажите, как к этому добавить кнопку F5 для убивания процесса Proga.exe в деспетчере задач.

Есть вот такой вариант,но я не знаю как его соединить с первой частью

Код:
$PIDs = ProcessList('Proga.exe') ;
For $i = 1 To $PIDs[0][0] ;
    If ProcessExists($PIDs[$i][1]) Then ProcessClose($PIDs[$i][1]) ;
Next
 

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Код:
HotKeySet('{F4}', '_Exec')
HotKeySet('{F5}', '_Kill')

MsgBox(64, "Прога", "Для запуска нажми F4")
While 1
    Sleep(1000)
WEnd

Func _Exec()
    ShellExecute('C:\Proga.exe', 'C:\')
EndFunc   ;==>_Exec

Func _Kill()
    Local $iPid = ProcessExists('Proga.exe')
    If $iPid Then
        ProcessClose($iPid)
    EndIf
EndFunc
 
Верх