|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Блокировка кнопок после нажатия в GUI |
|
[решено] Блокировка кнопок после нажатия в GUI
|
Пользователь Сообщения: 62 |
Профиль | Отправить PM | Цитировать Что нужно сделать чтобы после нажатия кнопки не было возможности нажать на другие кнопкки в течении 3 секунд? Пробовал ставить sleep(3000), но на кнопки всё равно можно нажимать (правда срабатывают они после того как пройдёт эти 3 секунды).
#include <GUIConstantsEx.au3> #include <GUIConstants.au3> Opt("GUIOnEventMode", 1) $mainwindow = GUICreate("Программа2", 460, 340) GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") $okbutton = GUICtrlCreateButton("Кнопка", 5, 30, 90) GUICtrlSetOnEvent($okbutton, "OKButton") GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") GUISwitch($mainwindow) GUISetState(@SW_SHOW) While 1 Sleep(1000) WEnd Func OKButton() If Random() < 0.5 Then Run(@ComSpec & " /c Start 1.bat") Sleep(3000) Else Run(@ComSpec & " /c Start 2.bat") Sleep(3000) Endif EndFunc |
|
------- Отправлено: 13:39, 01-07-2009 |
Старожил Сообщения: 307
|
Профиль | Отправить PM | Цитировать можно на это время отключить кнопки так:
#include <GUIConstantsEx.au3> Opt("GUIOnEventMode", 1) $mainwindow = GUICreate("Программа2", 460, 340) GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked") $okbutton = GUICtrlCreateButton("Ok", 5, 30, 90) GUICtrlSetOnEvent($okbutton, "OKButton") $1button = GUICtrlCreateButton("1", 5, 60, 90) GUICtrlSetOnEvent($1button, "_1Button") $2button = GUICtrlCreateButton("2", 5, 90, 90) GUICtrlSetOnEvent($2button, "_2Button") GUISwitch($mainwindow) GUISetState(@SW_SHOW) While 1 Sleep(100) WEnd Func OKButton() MsgBox(0,"","нажата кнопка OK",1) ControlDisable($mainwindow,"",$Okbutton) ControlDisable($mainwindow,"",$1button) ControlDisable($mainwindow,"",$2button) Sleep(3000) ControlEnable($mainwindow,"",$Okbutton) ControlEnable($mainwindow,"",$1button) ControlEnable($mainwindow,"",$2button) EndFunc Func _1Button() MsgBox(0,"","нажата кнопка 1",1) EndFunc ; Func _2Button() MsgBox(0,"","нажата кнопка 2",1) EndFunc ; Func CLOSEClicked() Exit EndFunc |
------- Отправлено: 16:16, 01-07-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать ZeroCrash, лучше, но не факт, с ипользованием какого-либо таймера, например AdlibEnable:
#include <GUIConstantsEx.au3> #include <GUIConstants.au3> Opt('GUIOnEventMode', 1) Global $mainwindow, $okbutton $mainwindow = GUICreate('Программа2', 460, 340) GUISetOnEvent($GUI_EVENT_CLOSE, 'CLOSEClicked') $okbutton = GUICtrlCreateButton('Кнопка', 5, 30, 90) GUICtrlSetOnEvent($okbutton, 'OKButton') GUISetState() While 1 Sleep(100) WEnd Func CLOSEClicked() Exit EndFunc Func OKButton() If Random() < 0.5 Then Run(@ComSpec & ' /c Start 1.bat') Sleep(3000) Else Run(@ComSpec & ' /c Start 2.bat') Sleep(3000) Endif AdlibEnable('_EnableButton', 3000) If BitAND(GUICtrlGetState($okbutton), $GUI_ENABLE) Then GUICtrlSetState($okbutton, $GUI_DISABLE) EndFunc Func _EnableButton() If BitAND(GUICtrlGetState($okbutton), $GUI_DISABLE) Then GUICtrlSetState($okbutton, $GUI_ENABLE) AdlibDisable() EndFunc |
------- Отправлено: 19:07, 01-07-2009 | #3 |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать beve, разобрал твой пример....многовато кода получается если добавлять эти функции к каждой кнопке. Может просто я неясно выразился или просто по-другому никак, но мне нужно чтобы при нажатии любой кнопки блокировались все кнопки на 3с. Сейчас разберу скрипт proxy и сравню
|
------- Отправлено: 22:11, 01-07-2009 | #4 |
Старожил Сообщения: 460
|
Профиль | Отправить PM | Цитировать Цитата ZeroCrash:
Либо сразу напрямую: или Либо состовлять списки указателей на кнопки, кторые необходимо заблокировать. Пример: #include <GUIConstantsEx.au3> #include <GUIConstants.au3> Opt('GUIOnEventMode', 1) Global $mainwindow, $okbutton1, $okbutton2, $sButtonList $mainwindow = GUICreate('Программа2', 460, 340) GUISetOnEvent($GUI_EVENT_CLOSE, 'CLOSEClicked') $okbutton1 = GUICtrlCreateButton('Кнопка', 5, 30, 90) GUICtrlSetOnEvent(-1, 'OKButton') $okbutton2 = GUICtrlCreateButton('Кнопка', 5, 30+30, 90) GUICtrlSetOnEvent(-1, 'OKButton') $sButtonList = $okbutton1 & '|' & $okbutton2 GUISetState() While 1 Sleep(100) WEnd Func CLOSEClicked() Exit EndFunc Func OKButton() If Random() < 0.5 Then Run(@ComSpec & ' /c Start 1.bat') Sleep(3000) Else Run(@ComSpec & ' /c Start 2.bat') Sleep(3000) Endif AdlibEnable('_EnableButton', 3000) _ButtonSetState(0) EndFunc Func _EnableButton() _ButtonSetState(1) AdlibDisable() EndFunc Func _ButtonSetState($fState) Local $aListButton = StringSplit($sButtonList, '|') If @error Then Return Local $fUnState, $i If $fState Then $fState = $GUI_ENABLE $fUnState = $GUI_DISABLE Else $fState = $GUI_DISABLE $fUnState = $GUI_ENABLE EndIf For $i=1 To $aListButton[0] If BitAND(GUICtrlGetState($aListButton[$i]), $fUnState) Then GUICtrlSetState($aListButton[$i], $fState) Next EndFunc |
||
------- Отправлено: 22:17, 01-07-2009 | #5 |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Цитата proxy:
Цитата proxy:
Ладно, буду работать. Как всё сделаю, отпишусь. Цитата proxy:
|
|||
------- Отправлено: 22:28, 01-07-2009 | #6 |
Пользователь Сообщения: 62
|
Профиль | Отправить PM | Цитировать Всё закончил Вариант со составлением списка по-моему самый практичный и простой
|
------- Отправлено: 23:00, 01-07-2009 | #7 |
Старожил Сообщения: 374
|
Профиль | Отправить PM | Цитировать ZeroCrash,
для частого использования одного и того же кода, можно использовать следущее(будет полезно для всех): |
------- Отправлено: 08:24, 13-07-2009 | #8 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Автоматизация нажатия кнопок в окне браузера в фоновом режиме(?) | zbruy | AutoIt | 9 | 04-10-2009 12:22 | |
Окна не реагируют на нажатия кнопок! | manager_rab | Лечение систем от вредоносных программ | 6 | 29-09-2009 14:49 | |
Не работает GUI после выхода другова GUI | sashadeg | AutoIt | 3 | 15-05-2009 22:03 | |
Разное - [решено] Залипает мышь после нажатия клавиатурных сочетаний | Dirk Diggler | Microsoft Windows 2000/XP | 9 | 20-04-2009 10:22 | |
Как отслеживать нажатия кнопок в Windows? | Sharkky | Программирование и базы данных | 5 | 29-12-2003 13:55 |
|