beve
Осваивающий
- Сообщения
- 104
- Репутация
- 31
Как извесно контрол RichEdit имеет некоторые преимущества по сравнению с обычным Edit. У меня вопрос такой: в программе имеется контрол RichEdit, созданный с помощью функции _GUICtrlRichEdit_Create(). Также извесно, что при завершении такой программы обязательно должен быть удален этот контрол с помощью _GUICtrlRichEdit_Destroy() или же просто с использованием Guidelete(), чего не обязательно делать при использовании обычного контрола Edit. И вот представим, что в программе происходит ошибка (чисто теоретически). В результате программа (или же это может быть и не скомпелированный скрипт) не завершается, а висит в процессах и загружает процессор на 100%, и единственный путь его завершения, это через диспетсчер задач (обычно любая программа в результате ошибки завершается без проблем сама).
Подскажите, как придумать, чтобы в результате ошибки программа полностью завершалась (конечно без использования сторонней программы, отслеживающей работу этой программы на предмет появления окна ошибки...)
Вот код для примера (В этом коде специально для наглядности допущена ошибка). На всякий случай ПРЕДУПРЕЖДЕНИЕ, если у вас процессор на компе слабый, то лучше не запускайте этот скрипт.
Подскажите, как придумать, чтобы в результате ошибки программа полностью завершалась (конечно без использования сторонней программы, отслеживающей работу этой программы на предмет появления окна ошибки...)
Вот код для примера (В этом коде специально для наглядности допущена ошибка). На всякий случай ПРЕДУПРЕЖДЕНИЕ, если у вас процессор на компе слабый, то лучше не запускайте этот скрипт.
Код:
#include <GuiRichEdit.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
$hGui = GUICreate("Example", 320, 350, -1, -1)
$hRichEdit = _GUICtrlRichEdit_Create($hGui, "Первая линия", 10, 10, 300, 220, BitOR($ES_MULTILINE, $WS_VSCROLL, $ES_AUTOVSCROLL))
_GUICtrlRichEdit_AppendText($hRichEdit, @CR & "Вторая линия")
GUISetState()
$iCounter=0
While 1
$iMsg = GUIGetMsg()
Select
Case $iMsg = $GUI_EVENT_CLOSE
_GUICtrlRichEdit_Destroy($hRichEdit)
GUIDelete()
Exit
EndSelect
Sleep (50)
$iCounter+=1
_GUICtrlRichEdit_AppendText($hRichEdit, @LF&$iCounter)
if $iCounter=50 then _test()
Wend
func _test()
if $a then SetError(1)
EndFunc