BlockInput

首页  后退  前进

BlockInput
down2

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

例子
copy

exect=BlockInput(1)||Sleep(3000)||BlockInput(0) ;; 3秒钟禁用鼠标使用和键盘

up2

tcimage © Аверин Андрей для Total Commander Image Averin-And@yandex.ru