Что нового

Блокировка мыши и клавиатуры во время выполнения скрипта

vld-k

Новичок
Сообщения
39
Репутация
0
Добрый день.
Пожалуйста, помогите разобраться, как можно выполнить приведенный ниже скрипт, чтоб при этом пользователь не мог прервать, изменить фокус окна или как-либо повлиять на выполнение удаления программ.
Во время удаления трех программ, на рабочем столе появляются окна "cmd", окна программы, скрипт воздействует на кнопки, выполняя нажатия, все это введет в ступор пользователя.
Хочу чтоб во время выполнения, исключить возможность пользователя воздействовать на процесс, как минимум, выключить (строго на время выполнения скрипта) мышь, как максимум, сделать выполнение процедуры абсолютно незаметным.

Код:
RunWait (@ComSpec & ' /C Net Stop "LSNServer"')
Sleep (1000)
RunWait (@ComSpec & ' /C Net Stop "SysLogger"')
Sleep (1000)
RunWait (@ComSpec & ' /C Net Stop "CommServer"')
Sleep (1000)
RunWait (@ProgramFilesDir & '\nct\LSN\uninst.exe /SQ')
WinWaitActive ('Удаление  Network Server', '', '')
ControlClick ('Удаление  Network Server', '', 'Button1')
Sleep (1000)
WinWaitActive ('Удаление  Network Server', '', '')
ControlClick ('Удаление  Network Server', '', 'Button2')
Sleep (1000)
RunWait (@ProgramFilesDir & '\nct\SysLogger\uninst.exe /SQ')
WinWaitActive ('Удаление SysLogger', '', '')
ControlClick ('Удаление SysLogger', '', 'Button1')
Sleep (1000)
WinWaitActive ('Удаление SysLogger', '', '')
ControlClick ('Удаление SysLogger', '', 'Button2')
Sleep (1000)
RunWait (@ProgramFilesDir & '\nct\TOMAS\uninst.exe /SQ')
WinWaitActive ('Удаление TOMAS', '', '')
ControlClick ('Удаление TOMAS', '', 'Button1')
Sleep (1000)
WinWaitActive ('Удаление TOMAS', '')
ControlClick ('Удаление TOMAS', '', 'Button2')
Sleep (2000)
 
Автор
V

vld-k

Новичок
Сообщения
39
Репутация
0
madmasles сказал(а):
Отлично, спасибо. То что нужно.
Только возник еще вопрос, можно ли установить таймаут этой блокировки? в случае если срипт отработает не корректно, и не выполнить отключение блокировки?
 

be4hoctb

Новичок
Сообщения
38
Репутация
0
А можно ли назначить горячую клавишу для отключения BlockInput ?
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Она уже назначена в системе :smile:
Ctrl-Alt-Del
 

be4hoctb

Новичок
Сообщения
38
Репутация
0
Так открывается меню виндовс, а хотелось бы просто остановка скрипта
 

be4hoctb

Новичок
Сообщения
38
Репутация
0
Пробовал назначать горячую клавишу на BlockInput(0) - не срабатывает ибо кнопки заблокированны
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
edyapd
Действительно, я как то поверхностно ответил даже не вдумываясь.

Можно использовать функцию _BlockInputEx; Заблокировать все кнопки за исключением нужной для отключения.
http://autoit-script.ru/index.php?topic=162.0
 

be4hoctb

Новичок
Сообщения
38
Репутация
0
у меня что-то не получается, либо блокирует все и функция не выполняется либо ничего не блокирует.
Вот что вышло
Код:
#include <BlockInputEx.au3>

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

AdlibRegister("_Quit", 10000)

_BlockInputEx(1,"{Esc}")

While 1
	_MyClick()
	Sleep(100)
WEnd

Func _Quit()
	_BlockInputEx(0)
    Exit
EndFunc

Func _MyClick()

    Local Static $i__Count = 0
    Local $i_X = 390, $i_Y = 255, $i_OffSet = 18, $i_Max = 16

	MouseClick('Left', 609, 216, 1)
    MouseClick('Left', $i_X, $i_Y + $i_OffSet * $i__Count, 1, 0)
    ConsoleWrite('$i_Y + $i_OffSet * $i__Count = ' & $i_Y + $i_OffSet * $i__Count & @LF)
    $i__Count += 1
    If $i__Count = $i_Max Then $i__Count = 0
EndFunc   ;==>_MyClick
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Сейчас проверил ваш код выход по Esc есть.
Только на команде
Код:
_BlockInputEx(0)
вываливается в ошибку.
Если её убрать, то всё проходит нормально.
 

be4hoctb

Новичок
Сообщения
38
Репутация
0
Да он блокирует и по Esc выходит но другие функции не выполняются
 

edyapd

Осваивающий
Сообщения
380
Репутация
30
Какие конкретно? Я вижу только одну _MyClick(). Курсор во время выполнения прыгает по экрану.
 
Верх