Что нового

Помогите сделать обработку двух опций (там где ставить галочки)

agikon

Знающий
Сообщения
789
Репутация
17
Вот решил подсумировать то что меня научили за это время на этом сайте.Вот создал оболочку програмы которая бы должна следить з авыполнением конвертации видео и по его завершению выключать комп.Конечно я бы сам к этому не пришел бы если бы мне не помогали с кодом, но как ни как что я хоть оболочку както своргани, не судите строго . Но прошу если это возможно помочь мне дописать эту програмульку.
Вобщем не знаю как создать обработку тех значений на которых будет стоять галочка.Хочу чтобы галочку можно было поставить только одну, или в том окне что выключить если загрузка проца будет меньше 99%, или в том что по таймеру выключить ПК. то есть две одновременно галочки чтобы не можно было поставить. Или пусай можно только я не знаю не будет ли из-за этого ошибки.
Вобщем реально ли довести до ума это всё?
Програма эта запускается, и даже на некоторые команды реагирует но как её до ума довести не знаю.Вот это две этих галочки не пойму как обработать.Проверка на загрузку порцессора уже есть, осталось сдедать обработку двух галочек.
Код:
#Include <WinAPIEx.au3>
#include <StaticConstants.au3>
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>

$Name = GUICreate("1", 600, 300, 300, 300);

$Start = GUICtrlCreateButton("запустить", 390, 255, 200, 35, $WS_GROUP);x  y     x-длина  y-высота  <кнопка запустить>

$CPU99 = GUICtrlCreateCheckbox("выключить ПК если нет загрузки процессора", 16, 34, 255, 17) ; галочка

$TIME = GUICtrlCreateCheckbox("выключить ПК через", 16, 70, 125, 17) ; галочка
$TIMER = GUICtrlCreateInput("", 150, 65, 169, 21) ;  строка с курсором в минутах или милисекундах не важно

GUISetState(@SW_SHOW)


While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

        Case $Start
			Sleep(200) ;
			WinActivate("[REGEXPTITLE:.*Convert.*]")
            While 1
				
				Select            
                Case WinActive("[REGEXPTITLE:.*Convert.*]","") = 0
                    MsgBox(0,"","Сначала запустите програму по конвертации.")
                    ExitLoop
					
					
				
			EndSelect 
			

#cs	
; этот код по проверке процессора на загрузку абсолютно рабочий только не пойму куда его вставлять
While 1
Local $Time2 = _WinAPI_GetSystemTimes()
    If IsArray($Time1) Then
        $TimeBusyCPU = ($Time2[1] + $Time2[2]) - ($Time1[1] + $Time1[2])
        $TimeIdleCPU = ($Time2[0] - $Time1[0])
	If (($TimeBusyCPU - $TimeIdleCPU) / $TimeBusyCPU * 100) < 90 Then ; здесь ставится процент загрузки было 99%
		$scetcik=$scetcik+1
	Else 
		$scetcik=0
	Endif
    EndIf
    $Time1 = $Time2
If $scetcik>=10 Then ; счетчик секунд, в данном случае 5
_CPU() ; запускаемая функция
Endif
sleep(1000) ;задержка цикла опроса загрузки процессора в миллисекундах
WEnd
#ce						
			
				 
			 WEnd
			 

		EndSwitch
		
WEnd
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Re: Моя первая пограммка, но не знаю как дописать, помогите пожалуйста дописать.

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


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

"Моя первая пограммка, но не знаю как дописать, помогите пожалуйста дописать." - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

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

agikon

Знающий
Сообщения
789
Репутация
17
мастера скриптинга, ну что это сложно видать?
ну может у вас есть какието предпосылки где можно посмтреть на такой код?
или гдето почитать как сделать такую обработку?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
agikon,
А зачем Вам Checkbox`ы?
Код:
#include <GUIConstantsEx.au3>

GUICreate('Test', 300, 200)
$nRadio1 = GUICtrlCreateRadio('AAAAA', 50, 20, 100, 20)
GUICtrlSetState(-1, $GUI_CHECKED)
$nRadio2 = GUICtrlCreateRadio('BBBBB', 50, 60, 100, 20)
$nButton = GUICtrlCreateButton('Go', 50, 120, 100, 40)
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nButton
			If BitAND(GUICtrlRead($nRadio1), $GUI_CHECKED) Then
				MsgBox(64, 'Info', 'Выбран AAAAA')
			Else
				MsgBox(64, 'Info', 'Выбран BBBBB')
			EndIf
	EndSwitch
WEnd
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
madmasles, ну я посмотел тут по форуму так люди их используют.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
agikon [?]
так люди их используют.
Смотря для чего. Если выбор только один из 2 и или более вариантов, то, ИМХО, Radio удобнее(проще).
Код:
#include <GUIConstantsEx.au3>

GUICreate('Test', 300, 200)
$nCheckbox1 = GUICtrlCreateCheckbox('AAAAA', 50, 20, 100, 20)
GUICtrlSetState(-1, $GUI_CHECKED)
$nCheckbox2 = GUICtrlCreateCheckbox('BBBBB', 50, 60, 100, 20)
$nButton = GUICtrlCreateButton('Go', 50, 120, 100, 40)
GUISetState()

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $nCheckbox1
			If BitAND(GUICtrlRead($nCheckbox1), $GUI_CHECKED) Then
				GUICtrlSetState($nCheckbox2, $GUI_UNCHECKED)
			EndIf
		Case $nCheckbox2
			If BitAND(GUICtrlRead($nCheckbox2), $GUI_CHECKED) Then
				GUICtrlSetState($nCheckbox1, $GUI_UNCHECKED)
			EndIf
		Case $nButton
			If BitAND(GUICtrlRead($nCheckbox1), $GUI_CHECKED) Then
				MsgBox(64, 'Info', 'Выбран AAAAA')
			Else
				MsgBox(64, 'Info', 'Выбран BBBBB')
			EndIf
	EndSwitch
WEnd
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
madmasles , спасибо Вам большое, буду переваривать то что вы мне написали.
запустил ваш код мне нравится. вот только как прикрутит бы еще ввод минут после которых комп выключался бы
 

axlwor

Скриптер
Сообщения
657
Репутация
147
код для формы
Код:
$iTime = GUICtrlCreateInput("", 50, 100, 60, 20) 
GUICtrlCreateLabel("мин", 120, 100) 
$nButton = GUICtrlCreateButton('Go', 50, 140, 100, 40)


код для действий
Код:
If IsInt (GUICtrlRead($iTime)) Then
	MsgBox(64, 'Info', 'Завершаем работу через ' & GUICtrlRead($iTime) & ' мин.', GUICtrlRead($iTime)*60)
	Shutdown(1+8)
	Exit
Else
	MsgBox(64, 'Info', 'В поле нужно вводить целые цифры минут', 60)
EndIf
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
спасибо ребята, перевариваю коды..
 
Верх