Что нового

[Окна, Диалоги] Помогите написать, вывод сообщения при превышении температуры

ar41

Новичок
Сообщения
3
Репутация
0
Версия AutoIt: 3.5.4

Описание: Помогите пожалуйста написать скрипт, который предупреждал бы, о повышении температуры длящейся более двух минут, выше 50 градусов. А температуру брал из строчки программы.
Вот скриншот из программы и строчка из которой нужно взять данные.
Screenshot_5.1530792040.png


Примечания:
 

Вложения

  • Screenshot_5.png
    Screenshot_5.png
    16.4 КБ · Просмотры: 7
Автор
A

ar41

Новичок
Сообщения
3
Репутация
0
>>>> Window <<<<
Title: Core Temp 1.12.1
Class: CORETEMP
Position: 1030, 0
Size: 336, 356
Style: 0x14CA0000
ExStyle: 0x00000100
Handle: 0x00000000001B0AC0

>>>> Control <<<<
Class: Static
Instance: 42
ClassnameNN: Static42
Name:
Advanced (Class): [CLASS:Static; INSTANCE:42]
ID:
Text: 44°C
Position: 73, 279
Size: 160, 19
ControlClick Coords: 26, 11
Style: 0x50001200
ExStyle: 0x00020000
Handle: 0x00000000000806EE

###AutoIt Control Viewer Report File###

Environment
===========
System: Майкрософт Windows 10 Pro 64-разрядная
Aero: Enabled

Window
======
Title: Core Temp 1.12.1
Class: CORETEMP
Style: 0x14CA0000
ExStyle: 0x00000100
Position: 1030, 0
Size: 336, 356
Handle: 0x001B0AC0
PID: 5628
Path: C:\Program Files\Core Temp\Core Temp.exe

Control
=======
Class: Static
Instance: 42
ID:
Style: 0x50001200
ExStyle: 0x00020000
Position: 73, 279
Size: 160, 19
Handle: 0x000806EE
Text: 47°C
 

Tempo

AutoIT Гуру
Сообщения
616
Репутация
205
Код:
#include <MsgBoxConstants.au3>
HotKeySet("{ESC}", "_Exit")
Global $g_iDegree = 50, _ ;°C
		$g_iTime = 2, _ ;мин.
		$g_bReg

While 1
	Sleep(250)
	If ControlGetText("[CLASS:CORETEMP]", "", "[CLASS:Static; INSTANCE:42]") > $g_iDegree Then
		If Not $g_bReg Then
			AdlibRegister("_Warn", $g_iTime * 60000)
			$g_bReg = True
		EndIf
	ElseIf $g_bReg Then
		AdlibUnRegister("_Warn")
		$g_bReg = False
	EndIf
WEnd

Func _Warn()
	AdlibUnRegister("_Warn")
	;$g_bReg = False
	MsgBox($MB_ICONWARNING + $MB_TOPMOST, Default, "Температура выще " & $g_iDegree & "°C уже более " & $g_iTime & " мин.")
EndFunc   ;==>_Warn

Func _Exit()
	Exit
EndFunc   ;==>_Exit
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,444
Код:
#RequireAdmin

$Temp = 50  ; температура
$Time = 120 ; время (в секундах)

$Count = 0
While Sleep(1000)
  $Text = ControlGetText("[class:CORETEMP]", "", "Static42")
  If Not $Text Then
    $Count = 0
    ContinueLoop
  EndIf
  If StringMid($Text, 2, 2) > $Temp Then
    $Count += 1
  Else
    $Count = 0
  EndIf
  If $Count > $Time Then
    MsgBox(0x40000, "Alarm", "Warning")
    $Count = 0
  EndIf
WEnd
 
Автор
A

ar41

Новичок
Сообщения
3
Репутация
0
InnI сказал(а):
Код:
#RequireAdmin

$Temp = 50  ; температура
$Time = 120 ; время (в секундах)

$Count = 0
While Sleep(1000)
  $Text = ControlGetText("[class:CORETEMP]", "", "Static42")
  If Not $Text Then
    $Count = 0
    ContinueLoop
  EndIf
  If StringMid($Text, 2, 2) > $Temp Then
    $Count += 1
  Else
    $Count = 0
  EndIf
  If $Count > $Time Then
    MsgBox(0x40000, "Alarm", "Warning")
    $Count = 0
  EndIf
WEnd
Огромнейшее Спасибо!!! Очень помог, все самого хорошего тебе! )


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

Tempo сказал(а):
Код:
#include <MsgBoxConstants.au3>
HotKeySet("{ESC}", "_Exit")
Global $g_iDegree = 50, _ ;°C
		$g_iTime = 2, _ ;мин.
		$g_bReg

While 1
	Sleep(250)
	If ControlGetText("[CLASS:CORETEMP]", "", "[CLASS:Static; INSTANCE:42]") > $g_iDegree Then
		If Not $g_bReg Then
			AdlibRegister("_Warn", $g_iTime * 60000)
			$g_bReg = True
		EndIf
	ElseIf $g_bReg Then
		AdlibUnRegister("_Warn")
		$g_bReg = False
	EndIf
WEnd

Func _Warn()
	AdlibUnRegister("_Warn")
	;$g_bReg = False
	MsgBox($MB_ICONWARNING + $MB_TOPMOST, Default, "Температура выще " & $g_iDegree & "°C уже более " & $g_iTime & " мин.")
EndFunc   ;==>_Warn

Func _Exit()
	Exit
EndFunc   ;==>_Exit
Огромнейшее Спасибо!!! Очень помог, все самого хорошего тебе! )
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,444
Так попроще
Код:
$Temp = 50  ; температура
$Time = 120 ; время (в секундах)

$Count = 0
While Sleep(1000)
  If ControlGetText("[class:CORETEMP]", "", "Static42") > $Temp Then
    $Count += 1
  Else
    $Count = 0
  EndIf
  If $Count > $Time Then
    MsgBox(0x40000, "Alarm", "Warning")
    $Count = 0
  EndIf
WEnd
 
Верх