|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Зависание скрипта при _Hover_Func |
|
[решено] Зависание скрипта при _Hover_Func
|
Старожил Сообщения: 247 |
#include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> #include "GUICtrlOnHover.au3" #Region Main form $hMain_GUI = GUICreate("Главное окно", 300, 200) $Label = GUICtrlCreateLabel("Настройки", 10, 170, 70, 20) _GUICtrl_OnHoverRegister($Label, "_Hover_Func", "_Hover_Func") $nExit_Btn = GUICtrlCreateButton("Выход", 90, 170, 70, 20) GUISetState(@SW_SHOW, $hMain_GUI) #EndRegion Main form #Region Settings form $hStngs_GUI = GUICreate("Настройки", 400, 200) $nStngs_Ok_Btn = GUICtrlCreateButton("ОК", 10, 170, 80, 25) $nStngs_Close_Btn = GUICtrlCreateButton("Закрыть", 310, 170, 80, 25) #EndRegion Settings form While 1 $aMsg = GUIGetMsg(1) ;Расширенная обработка событий Switch $aMsg[0] Case $GUI_EVENT_CLOSE, $nExit_Btn, $nStngs_Close_Btn Switch $aMsg[1] Case $hMain_GUI ;Событие поступило от главного окна - завершаем работу скрипта Exit Case $hStngs_GUI ;Событие поступило от окна настроек - закрываем его GUISetState(@SW_HIDE, $hStngs_GUI) EndSwitch Case $Label GUISetState(@SW_SHOW, $hStngs_GUI) EndSwitch WEnd Func _Hover_Func($iCtrlID, $iParam) Local $sConsole_Data = "Hovered" Local $sButton_Text = "Hover Button" Local $iLabel_Color = 0x00000FF Local $iLabel_FontAttrib = 4 Local $iCheckBox_State = $GUI_CHECKED Local $sEdit_Data = "New Edit Data" If $iParam = 2 Then ;Indicates On *Leave* Hover process $sConsole_Data = "NOT Hovered" $sButton_Text = "Button" $iLabel_Color = 0x000000 $iLabel_FontAttrib = 0 $iCheckBox_State = $GUI_UNCHECKED $sEdit_Data = "Edit Data" EndIf Printf("Control " & $iCtrlID & " [Data: " & GUICtrlRead($iCtrlID, 1) & "] Is Now " & $sConsole_Data) Switch $iCtrlID Case $Button If GUICtrlRead($iCtrlID) <> $sButton_Text Then GUICtrlSetData($iCtrlID, $sButton_Text) Case $Label GUICtrlSetColor($iCtrlID, $iLabel_Color) GUICtrlSetFont($iCtrlID, Default, Default, $iLabel_FontAttrib) Case $CheckBox GUICtrlSetState($iCtrlID, $iCheckBox_State) Case $Edit If GUICtrlRead($iCtrlID) <> $sEdit_Data Then GUICtrlSetData($iCtrlID, $sEdit_Data) EndSwitch EndFunc Func Printf($Str, $Line=@ScriptLineNumber) ConsoleWrite("!===========================================================" & @LF & _ "+======================================================" & @LF & _ "--> Script Line (" & $Line & "):" & @LF & "!" & @TAB & $Str & @LF & _ "+======================================================" & @LF) EndFunc |
|
Отправлено: 16:20, 25-03-2011 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Вообще то сначала нужно проверять скрипт на ошибки синтаксиса, а потом писать что скрипт виснет.
Конечно он виснет, ошибка гинерируется внутри callback-функций, это один из (мелких я бы сказал) недостатков обработчика ошибок в AutoIt. В скрипте проверяется $Button, $CheckBox и $Edit, которые нигде не объявлены. #include <ButtonConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> #include "GUICtrlOnHover.au3" #Region Main form $hMain_GUI = GUICreate("Главное окно", 300, 200) $Label = GUICtrlCreateLabel("Настройки", 10, 170, 55, 20) GUICtrlSetFont($Label, 8.5, 400, 0) _GUICtrl_OnHoverRegister($Label, "_Hover_Func", "_Hover_Func") $nExit_Btn = GUICtrlCreateButton("Выход", 90, 170, 70, 20) GUISetState(@SW_SHOW, $hMain_GUI) #EndRegion Main form #Region Settings form $hStngs_GUI = GUICreate("Настройки", 400, 200) $nStngs_Ok_Btn = GUICtrlCreateButton("ОК", 10, 170, 80, 25) $nStngs_Close_Btn = GUICtrlCreateButton("Закрыть", 310, 170, 80, 25) #EndRegion Settings form While 1 $aMsg = GUIGetMsg(1) ;Расширенная обработка событий Switch $aMsg[0] Case $GUI_EVENT_CLOSE, $nExit_Btn, $nStngs_Close_Btn Switch $aMsg[1] Case $hMain_GUI ;Событие поступило от главного окна - завершаем работу скрипта Exit Case $hStngs_GUI ;Событие поступило от окна настроек - закрываем его GUISetState(@SW_HIDE, $hStngs_GUI) EndSwitch Case $Label GUISetState(@SW_SHOW, $hStngs_GUI) EndSwitch WEnd Func _Hover_Func($iCtrlID, $iParam) Local $sConsole_Data = "Hovered" Local $iLabel_Color = 0x00000FF Local $iLabel_FontAttrib = 4 Local $iLabel_CursorID = 0 If $iParam = 2 Then ;Indicates On *Leave* Hover process $sConsole_Data = "NOT Hovered" $iLabel_Color = 0x000000 $iLabel_FontAttrib = 0 $iLabel_CursorID = -1 EndIf Printf("Control " & $iCtrlID & " [Data: " & GUICtrlRead($iCtrlID, 1) & "] Is Now " & $sConsole_Data) Switch $iCtrlID Case $Label GUICtrlSetColor($iCtrlID, $iLabel_Color) GUICtrlSetFont($iCtrlID, 8.5, 400, $iLabel_FontAttrib) GUICtrlSetCursor($iCtrlID, $iLabel_CursorID) EndSwitch EndFunc Func Printf($Str, $Line=@ScriptLineNumber) ConsoleWrite("!===========================================================" & @LF & _ "+======================================================" & @LF & _ "--> Script Line (" & $Line & "):" & @LF & "!" & @TAB & $Str & @LF & _ "+======================================================" & @LF) EndFunc |
------- Отправлено: 17:54, 25-03-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Кстати, в данном случае наверное будет лучше использовать _GUICtrlHyperlink для ссылки, и возможностей больше.
|
------- Отправлено: 18:13, 25-03-2011 | #3 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать Centrinar,
А что такое Засисание... ![]() |
Отправлено: 18:53, 25-03-2011 | #4 |
Старожил Сообщения: 247
|
Как сделать фон прозрачным GUISetBkColor ($iCtrlID, $GUI_BKCOLOR_TRANSPARENT) не помогает
|
|
Отправлено: 20:25, 25-03-2011 | #5 |
Ветеран Сообщения: 812
|
Профиль | Отправить PM | Цитировать Цитата Centrinar:
#include <GUIConstantsEx.au3> $hGui = GUICreate('Test', 220, 100) GUISetBkColor(0xE0FFFF) $nSlider = GUICtrlCreateSlider(10, 10, 200, 20) GUICtrlSetLimit(-1, 255, 55) GUICtrlSetData($nSlider, 255) GUISetState() While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $nSlider WinSetTrans($hGui, '', GUICtrlRead($nSlider)) EndSwitch WEnd Лучше было бы в новой теме вопрос задать. |
|
Последний раз редактировалось madmasles, 25-03-2011 в 20:56. Отправлено: 20:51, 25-03-2011 | #6 |
Старожил Сообщения: 247
|
фон лайбла
|
Отправлено: 20:58, 25-03-2011 | #7 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Centrinar:
|
|
------- Отправлено: 21:36, 25-03-2011 | #8 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
VBS/WSH/JS - [решено] Пауза при выполнении скрипта | zavoruev | Скриптовые языки администрирования Windows | 7 | 14-09-2010 15:12 | |
Установка - [решено] Зависание при установке - 0% при распаковке и ни с места | SirDrake | Microsoft Windows 7 | 14 | 12-12-2009 22:38 | |
выполнение скрипта при ПЕРВОМ входе пользователя | tojlst9lk | Microsoft Windows NT/2000/2003 | 1 | 16-03-2009 20:12 | |
Запуск скрипта при подключении к сети | Neu-iskatell | Сетевые технологии | 7 | 31-10-2005 16:09 | |
Ошибка при работе скрипта | Rudy | Вебмастеру | 18 | 13-10-2004 06:52 |
|