Что нового

_BlockInputEx иногда пропускает нажатие мыши

autoall

Новичок
Сообщения
21
Репутация
0
Используется BlockInputEx 1.8 в среде autoit 3.3.14.3 + SCiTE 17.224.935.0.
ОС: Windows 10 x64 1709 в виртуальной машине vmware.

Свои проблемы я свёл вот в такой незамысловатый скрипт:
Код:
#include "BlockInputEx.au3"

HotKeySet("{ESC}", "BlockOff_Func")

Local $cnt



$cnt = 0
_BlockInputEx(1, "{ESC}")

While 1
  Run("explorer.exe C:\Temp")
  WinWait("Temp")
  WinActivate("Temp")

  Send ("!h", 0)
  Send ("!pr", 0)
  Send("{ENTER}")

  WinWait("Свойства: Temp")
  WinActivate("Свойства: Temp")

  Sleep(100)
  $cnt = $cnt + 1
  If ($cnt = 20) Then
    ExitLoop
  EndIf
WEnd

_BlockInputEx(0)



Exit



Func BlockOff_Func()
  _BlockInputEx(0)
EndFunc


Вообщем - ничего особого: 20 раз по приведённому алгоритму в среде Windows 10 открываем папку C:\Temp и потом открываем её свойства. На время сего волшебного действия блокируем любой ввод. В случае проблем оставляем для себя возможность по ESC блокировку отключить. Если ничего не делать или делать вяло, то такая блокировка работает и реально помогает. Но если я, запустив скрипт, буду истошно по какому-то свободному участку рабочего стола молотить правой кнопкой мыши, то покажется контекстное меню! Т.е. иногда происходит что-то этакое, что фильтрация действий клавиатуры или мыши не срабатывает! Методом тыка установил, что на это сильное слияние оказывает наличие WinActivate в коде. Но я не разработчик я не понимаю должно это так быть или нет, т.е. такое влияние объяснимо в т.з. алгоритма функции или нет. По моему, пользовательскому разумению, такого быть не должно и это баг, а для моей программы - вообще уязвимость в некотором роде, так как если пользователь сделает что-то в неудачное время, то моя программа запортит всю систему и лучше её тогда вообще не делать)

Большая просьба - может кто-то проверить?
Если это подтвердится, то надо как-то с разработчиком связать что ли - функция-то реально ведь хорошая и полезная.
 
Верх