我即江湖合集百度云:求DELPHI 锁定键盘鼠标的完整代码 80分哦

来源:百度文库 编辑:高考问答 时间:2024/05/08 01:14:54
求DELPHI 锁定键盘鼠标的完整代码 80分哦
要全部源代码哦 谢谢

procedure TForm1.LockKeyAndCursor(Lock: boolean);
var
LockRect: TRect;
begin
if Lock = True then
begin
LockRect := Rect(Form1.Left + bvLockCursor.Left,
Form1.Top + bvLockCursor.Top,
Form1.Left + bvLockCursor.Left + bvLockCursor.Width,
Form1.Top + bvLockCursor.Top + bvLockCursor.Height);
ClipCursor(@LockRect);
LockKey(True);
end
else
begin
FreeRect := Rect(0,0,Screen.Width,Screen.Height);
ClipCursor(@FreeRect);
LockKey(False);
end;
end;

procedure TForm1.LockKey(Lock: boolean);
var
temp: integer;
begin
if Lock = True then
begin
asm
IN AL,21H
OR AL,02H
OUT 21H,AL
end;
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @temp, 0); end
else
begin
asm
IN AL,21H
AND AL,0FDH
OUT 21H,AL
end;
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, @temp, 0); end;
end;

使用时定义一个TBevel控件,锁定鼠标实际上是将光标控制在这个TBevel区间内,也可以把光标控制在屏幕左上角一个点的位置:LockRect := Rect(0,0,1,1);
调试时要注意在程序中控制开启鼠标或键盘,否则输入设备都被封锁了,只有关电源重启.

procedure TForm1.LockKeyAndCursor(Lock: boolean);
var
LockRect: TRect;
begin
if Lock = True then
begin
LockRect := Rect(Form1.Left + bvLockCursor.Left,
Form1.Top + bvLockCursor.Top,
Form1.Left + bvLockCursor.Left + bvLockCursor.Width,
Form1.Top + bvLockCursor.Top + bvLockCursor.Height);
ClipCursor(@LockRect);
LockKey(True);
end
else
begin
FreeRect := Rect(0,0,Screen.Width,Screen.Height);
ClipCursor(@FreeRect);
LockKey(False);
end;
end;

procedure TForm1.LockKey(Lock: boolean);
var
temp: integer;
begin
if Lock = True then
begin
asm
IN AL,21H
OR AL,02H
OUT 21H,AL
end;
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 1, @temp, 0); //封锁组合键Ctrl+Alt+Del
end
else
begin
asm
IN AL,21H
AND AL,0FDH
OUT 21H,AL
end;
SystemParametersInfo(SPI_SCREENSAVERRUNNING, 0, @temp, 0); //解开组合键Ctrl+Alt+Del
end;
end;

(以上代码出自大富翁)