在Delphi中如何将键盘和鼠标彻底封住,使之不起作用,封住后又将如何释放呢?
我试过一些API函数(如:enablewindow和isenablewindow),但是他们都是只能封住指定窗口的键盘和鼠标的输入而对于其他正在执行的应用程序键盘和鼠标照样起作用?还请高手指点!!!!
我试过一些API函数(如:enablewindow和isenablewindow),但是他们都是只能封住指定窗口的键盘和鼠标的输入而对于其他正在执行的应用程序键盘和鼠标照样起作用?还请高手指点!!!!
解决方案 »
- 一个关于报表的问题(QuickReport)
- 有效性检验的问题
- 怎样用delphi控制excel页脚文字的大小,答对马上给分
- 哪里能下载ThemeManager
- 在form上放一個dbgrid 和多個dbedit 控件,在增加記錄的時候,會有這樣的情況
- 请问DELPHI中能不能实现象POWERBUILDER中的FREE FROM型的数据窗口格式?
- 用InstallShield制作一个带BDE的安装程序,请问最少要哪些选项?
- adoquery.sql.add()超过255.怎么办?
- 控件的安装?
- 请问大家,怎样执行winapi程序啊?
- 请问学习DELPHI入门应该看什么好书!!
- 升到四个三角了,高兴,散分!
这东东怎么用啊?
我也做的!
winexec(Pchar('ABCD'),sw_hide);
其中"ABCD"代表以下命令之一:
"rundll32 keyboard,disable" - 锁写键盘
"rundll32 mouse,disable" - 让鼠标失效有时需要将鼠标的移动范围限制在屏幕上一定的区域,可以通过Windows API函数
ClipCursor实现。函数原形如下:
BOOL ClipCursor( CONST RECT *lpRect ) ;
其中参数RECT为指向一个矩形区域的指针,坐标为屏幕坐标。如果设置为0 ,则鼠标可以
在整个屏幕中自由移动。
窗体中有两个按钮,当按下第一个按钮后,鼠标限制在第二个按钮上
移动;当按下第二个按钮后,鼠标可以在屏幕上自由移动。
两个按钮的OnClick 事件的处理过程如下:
procedure TForm1.Button1Click(Sender: TObject) ;
var
rtButton2: TRect;
begin
//获取Button2组件的坐标
rtButton2 := Button2.BoundsRect;
//将坐标转换为屏幕坐标
MapWindowPoints(handle, 0, rtButton2, 2);
//将鼠标移动的范围限制在Button2组件上
ClipCursor(@rtButton2);
end;procedure TForm1.Button2Click(Sender: TObject);
begin
//取消鼠标移动范围的限制
ClipCursor(0);
end;
var KHK: HHook;
tmp: integer;
function HookProc(ICode: integer;WP:WParam;LP:LParam):LResult;
begin
Result:=CallNextHookEx(KHK,0,0,0);
end;使用下列语句开始锁定:
KHK:=SetWindowsHookex(WH_JOURNALPLAYBACK,@HookProc,HInstance,0);
使用下列语句结束锁定:
UnHookWindowsHookEx(KHK);