今天讨论c++锁定鼠标键盘的多种方法
里面的代码可以直接运行
全部必须包含windows.h头文件!
1.SetCursorPos锁定鼠标位置[不推荐]
- 特点:限制位置,不限制点击
- 缺点:必须构成死循环,容易失灵
这个很简单,直接上代码:
c
#include<windows.h>
void lock(){
SetCursorPos(0,0);
}
int main(){
while(1)
lock();
}
return 0;
}
c++
#include<windows.h>
using namespace std;
void lock(){
SetCursorPos(0,0);
}
int main(){
while(1)
lock();
}
return 0;
}
2.ClipCursor锁定鼠标位置[推荐]
- 特点:限制位置,不限制点击,不需要构成死循环,可以控制是否解除
- 缺点:Ctrl+Alt+Delete可以直接解除
c
#include<stdio.h>
#include<windows.h>
int clip(bool lockb=0){
RECT rect={};/*不可以使用LPRECT定义*/
rect.bottom=1;
rect.right=1;
if(lockb) return ClipCursor(&rect);
else return ClipCursor(NULL);//释放鼠标
}
int main(){
clip(1);
printf("来打我呀");
Sleep(2000);//延迟2秒
clip(0);//可以直接调用clip()解除
printf("算了帮你解除吧");
return 0;
}
c++
#include<iostream>
#include<windows.h>
using namespace std;
int clip(bool lockb=false){
RECT rect={};/*不可以使用LPRECT定义*/
rect.bottom=1;
rect.right=1;
if(lockb) return ClipCursor(&rect);
else return ClipCursor(NULL);//释放鼠标
}
int main(){
clip(true);
cout<<"来打我呀";
Sleep(2000);//延迟2秒
clip(false);//可以直接调用clip()解除
cout<<"算了帮你解除吧";
return 0;
}
3.BlockInput锁定鼠标+锁定键盘[慎重使用]
- 特点:不能点击,不能输入,不能移动鼠标,不需要构成死循环,可以控制是否解除
- 缺点:Ctrl+Alt+Delete可以解除,不能单独锁定鼠标或者键盘只能一起锁定或者释放
c:
#include<stdio.h>
#include<windows.h>
int lock(bool lockb=0){
HINSTANCE hIn = NULL;
hIn = LoadLibrary("user32.dll");
if(hIn){
BOOL (_stdcall *BlockInput)(BOOL bFlag);
BlockInput = (BOOL (_stdcall *)(BOOL bFlag)) GetProcAddress(hIn, "BlockInput");
if (BlockInput) return BlockInput(lockb);
else printf("调用失败,无法加载BlockInput函数");
}else printf("调用失败,无法包含user32.dll");
return -1;
}
int main(){
if(lock()==-1) return 0;
lock(1);
printf("慌不慌张?你的键盘鼠标都用不了了!");
Sleep(2000);
printf("算了放过你吧!");
lock(0);//lock()也可以
return 0;
}
c++
#include<iostream>
#include<windows.h>
using namespace std;
int lock(bool lockb=false){
HINSTANCE hIn = NULL;
hIn = LoadLibrary("user32.dll");
if(hIn){
BOOL (_stdcall *BlockInput)(BOOL bFlag);
BlockInput = (BOOL (_stdcall *)(BOOL bFlag)) GetProcAddress(hIn, "BlockInput");
if (BlockInput) return BlockInput(lockb);
else cout<<"调用失败,无法加载BlockInput函数";
}else cout<<"调用失败,无法包含user32.dll";
return -1;
}
int main(){
if(lock()==-1) return 0;
lock(true);
cout<<"慌不慌张?你的键盘鼠标都用不了了!";
Sleep(2000);
cout<<"算了放过你吧!";
lock(false);//lock()也可以
return 0;
}