Автор Тема: [Элементы GUI] Donttouchthisbutton или "Не трожь кнопку!!!"  (Прочитано 4334 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн over7 [?]

  • Новичок
  • *
  • Сообщений: 11
  • Репутация: 1
    • Награды
AutoIt: v3.3.12.0
Версия: 1.0b

Категория: Элементы GUI

Описание: Пользователи.... пользователи никогда не меняются...
За многие годы работы ИТшником я точно знаю, что если дать возможность пользователю что-то сломать, он непременно ей воспользуется.
Остается только наблюдать и делать ставки, как быстро и как именно он сломает то или иное..
Единственный способ выжить, сохранить свой рассудок и при этом никого не убить -это относится к происходящему философски, ну и не помешает
отбирать права у пользователей, делать бесчисленное множество копий и бэкапов и все то, ради чего мне платят зарплату.
Тем не менее бывают случаи когда гуманные методы и имеющиеся решения на исходе, а фантазии у пользователей хоть отбавляй.
Здесь приходится включать думалку и искать кардинальное решение.

Проблема: Есть категория граждан, которые любят удалять свои файлы и папки с помощью комбинации клавиш Shift+Delete, а потом прибегать и просить все восстановить.
Решение: Скрыть кнопки на GUI, чтоб шаловливым ручонкам отважных юзерей нечего было нажимать.

Предлагаю Вашему вниманию скрипт блокировки кнопок окон (и не только кнопок).


Программа в самой начальной стадии разработки и здесь нет целого ряда функций, но уже есть чего показать.
Например, скрипт умеет блокировать кнопку "Да" при безвозвратном удалении файлов и папок (Shift+delete)
и блокирует кнопку восстановление инфы из теневых копий с общей папки в ту же самую папку (замечательная кнопка, способна похоронить всю работу целого отдела за несколько часов)

Код/Пример:
(нажмите для показа/скрытия)

Файл: см вложение (исходник, ico, ini) (exe -не проходит по размеру :-( )

INI:
(нажмите для показа/скрытия)



Снимок:
Нажмите для отображения изображения в оригинальном размере.
Нажмите для отображения изображения в оригинальном размере.

История версий:
(нажмите для показа/скрытия)

Источник: autoit-script.ru
Автор(ы): ссылка:mailto:[email protected] [nonactive]


Внимание: Для просмотра прикреплённых файлов необходимо Войти или Зарегистрироваться
« Последнее редактирование: Октябрь 27, 2016, 13:56:36 от over7 »

Русское сообщество AutoIt

[Элементы GUI] Donttouchthisbutton или "Не трожь кнопку!!!"
« Отправлен: Декабрь 22, 2014, 17:19:49 »

Оффлайн over7 [?]

  • Новичок
  • *
  • Сообщений: 11

  • Автор темы
  • Репутация: 1
    • Награды
Пару комментариев по работе с прогой:

1. INI заполняется вручную
2. значения Title, VisibleText и Control_ID брал из "AutoIt v3 Window Info"

Планы:
Прикрутить инклюд от многоуважаемого InnI http://autoit-script.ru/index.php?topic=14400.0

« Последнее редактирование: Декабрь 22, 2014, 17:59:03 от over7 »

Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7808
  • Репутация: 2281
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Нажатием Enter по прежнему можно удалить :laugh:.


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн gloss [?]

  • asdasdasd, %username%
  • Новичок
  • *
  • Сообщений: 154
  • Репутация: 5
  • Пол: Мужской
  • Ленивое кодило
    • Награды
  • Версия AutoIt: 3.3.12.0
CreatoR
OffTopicЧитер :D

Русское сообщество AutoIt

Re: [Элементы GUI] Donttouchthisbutton или "Не трожь кнопку!!!"
« Ответ #3 Отправлен: Декабрь 22, 2014, 19:24:53 »

Оффлайн over7 [?]

  • Новичок
  • *
  • Сообщений: 11

  • Автор темы
  • Репутация: 1
    • Награды
Нажатием Enter по прежнему можно удалить :laugh:.

Исправил  :)
Код: AutoIt [Выделить]
ControlDisable ($aList[$i][1], WinGetText($aList[$i][1]), Number($aBadCtrls[$j][3])) ;
ControlHide($aList[$i][1], WinGetText($aList[$i][1]), Number($aBadCtrls[$j][3])) ;

отключаю потом прячу

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3955
  • Репутация: 958
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
over7  [?]
Цитировать
отключаю потом прячу
IMHO, вполне достаточно:
Код: AutoIt [Выделить]
#include <Misc.au3>

Do
   $hWin = WinActive("[TITLE:Подтверждение удаления файла; CLASS:#32770]")
   ControlDisable($hWin, "", "[CLASS:Button]")
   Sleep(10)
Until _IsPressed("1B") = 1


Скорблю и помню.




Оффлайн over7 [?]

  • Новичок
  • *
  • Сообщений: 11

  • Автор темы
  • Репутация: 1
    • Награды
over7  [?]
Цитировать
отключаю потом прячу
IMHO, вполне достаточно:
Код: AutoIt [Выделить]
#include <Misc.au3>

Do
   $hWin = WinActive("[TITLE:Подтверждение удаления файла; CLASS:#32770]")
   ControlDisable($hWin, "", "[CLASS:Button]")
   Sleep(10)
Until _IsPressed("1B") = 1


Дык суть в том, чтоб запретить любые GUICtrl, которые можно идентифицировать по информации из окна, и пополнять ими коллекцию "запрещенных" в INI

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3955
  • Репутация: 958
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
over7  [?]
Цитировать
которые можно идентифицировать
Хотите сказать, что ваши пользователи будут пытаться идентифицировать GUICtrl? :)

Русское сообщество AutoIt

Re: [Элементы GUI] Donttouchthisbutton или "Не трожь кнопку!!!"
« Ответ #7 Отправлен: Декабрь 22, 2014, 20:25:27 »

Оффлайн over7 [?]

  • Новичок
  • *
  • Сообщений: 11

  • Автор темы
  • Репутация: 1
    • Награды
over7  [?]
Цитировать
которые можно идентифицировать
Хотите сказать, что ваши пользователи будут пытаться идентифицировать GUICtrl? :)

Нет =)))
идентифицировать GUICtrl-ы буду я и пополнять INI файл тоже я, а пользователи не смогут больше тыкать куда не следует!


Вот например,
если в INI прописать следующее:
(нажмите для показа/скрытия)

то пользователи не смогут поменять часовой пояс =)
Нажмите для отображения изображения в оригинальном размере.

Оффлайн Garrett [?]

  • Глобальный модератор
  • *
  • Сообщений: 3955
  • Репутация: 958
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Насчёт INI, то это как вам удобно! Я имел ввиду то, что можно просто деактивировать GUICtrl!

Оффлайн Sergio [?]

  • Новичок
  • *
  • Сообщений: 12
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
А как быть если реально что то нужно удалить минуя корзину? Может быть через горячую клавишу заменить enter?

Оффлайн over7 [?]

  • Новичок
  • *
  • Сообщений: 11

  • Автор темы
  • Репутация: 1
    • Награды
Sergio, спасибо за интерес к программе.

Нет! заменять ничего не будем =)
Добавил возможность приостанавливать работу по горячей клавише.

Хоткей нужно прописать в ini
(нажмите для показа/скрытия)

Русское сообщество AutoIt

Re: [Элементы GUI] Donttouchthisbutton или "Не трожь кнопку!!!"
« Ответ #11 Отправлен: Октябрь 27, 2016, 13:01:43 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
6 Ответов
11711 Просмотров
Последний ответ Октябрь 07, 2009, 09:36:42
от akoulev
12 Ответов
11303 Просмотров
Последний ответ Декабрь 01, 2012, 02:05:11
от defens
14 Ответов
13354 Просмотров
Последний ответ Февраль 15, 2010, 11:29:38
от akoulev
22 Ответов
14677 Просмотров
Последний ответ Апрель 16, 2013, 17:59:49
от IgRo
2 Ответов
2269 Просмотров
Последний ответ Сентябрь 03, 2011, 01:33:42
от agikon
14 Ответов
4832 Просмотров
Последний ответ Август 01, 2012, 21:54:14
от Police
3 Ответов
3613 Просмотров
Последний ответ Август 25, 2013, 10:36:23
от Godygadu
6 Ответов
3798 Просмотров
Последний ответ Март 26, 2014, 16:36:48
от Alex Tevton
2 Ответов
1306 Просмотров
Последний ответ Март 09, 2015, 03:26:03
от AZJIO
8 Ответов
2148 Просмотров
Последний ответ Март 23, 2015, 20:03:04
от madmasles