BlockInput
禁用/启用鼠标和键盘.
BlockInput ( flag )
参数
flag
|
$BI_DISABLE (1) = 禁止用户输入
$BI_ENABLE (0) = 启用用户输入
常量定义在 "AutoItConstants.au3"
|
返回值
成功:
|
返回 1.
|
失败:
|
返回 0. 已启用或者未使用 #requireAdmin.
|
备注
下表显示 BlockInput() 如何根据 Windows 版本确定函数行为; 然而, 按 Ctrl+Alt+Del 将重启输入任何平台的 Windows API 功能.
操作系统
|
"BlockInput()" 函数应用结果
|
Windows XP
|
禁止用户输入, 但 AutoIt 可以模拟鼠标和键盘输入. Windows XP SP1 的问题见下面的说明.
|
Windows Vista 和之后的版本
|
禁止用户输入, 但如果使用 #RequireAdmin, 则 AutoIt 可以模拟鼠标和键盘.
|
一个已发布 Windows XP SP1 的补丁程序包含一个 bug: 当 BlockInput() 激活时阻止 Alt 键击(通过 Send() 函数)的发送. 这个 Windows bug 已在 Windows XP SP2 和更新版本中被修复.
BlockInput() 仅影响用户输入. 类似 Send() 或 MouseMove() 这样的始于函数的输入仍然工作.
函数示例
#RequireAdmin
#include <AutoItConstants.au3>
Example()
Func Example()
; Run Notepad
Run("notepad.exe")
; Wait 10 seconds for the Notepad window to appear.
Local $hWnd = WinWait("[CLASS:Notepad]", "", 10)
; Disable user input from the mouse and keyboard.
BlockInput($BI_DISABLE)
; Wait for 2 seconds.
Sleep(2000)
; Send the 'F5' key to the edit control of Notepad to display the date and time. The handle returned by WinWait is used for the "title" parameter of ControlSend.
ControlSend($hWnd, "", "Edit1", "{F5}")
; Enable user input from the mouse and keyboard.
BlockInput($BI_ENABLE)
; Wait for 2 seconds.
Sleep(2000)
; Close the Notepad window using the handle returned by WinWait.
WinClose($hWnd)
; Now a screen will pop up and ask to save the changes, the classname of the window is called
; "#32770" and simulating the "TAB" key to move to the second button in which the "ENTER" is simulated to not "save the file"
WinWaitActive("[CLASS:#32770]")
Sleep(500)
Send("{TAB}{ENTER}")
EndFunc ;==>Example
----------------------------------------
该函数可以通过命令调用 exect
参见:
Send
exect=BlockInput(1)||Sleep(3000)||BlockInput(0) ;; 3秒钟禁用鼠标使用和键盘
© Аверин Андрей для Total Commander Image Averin-And@yandex.ru
|