用VC sdk实现屏幕锁定程序

用VC sdk实现屏幕锁定程序,锁定键盘,鼠标,自动关闭任务管理器,只有输入按键与D:\password.txt内容相同时,才可以解锁。

当你离开计算机时,运行程序即可锁定屏幕键盘。

代码下载

主要代码如下:

首先安装全局钩子:

case WM_CREATE:
//mouse hook
		SetWindowPos(hwnd, HWND_TOPMOST, 0, 0,  GetSystemMetrics(SM_CXSCREEN), GetSystemMetrics(SM_CYSCREEN), 0);
		g_hMouseHook =	  SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC)Mouse_llHookProc, g_hInstance, NULL);
		g_hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)Keyboard_llHookProc, g_hInstance, NULL);
		g_uTimer=::SetTimer(hwnd,1,50,NULL);//创建定时器
		s_hMutex = CreateMutexW(0, TRUE, L"My Mutex");
		break;

 关闭任务管理器进程,当D:\password.txt的内容g_szPassword与输入的密码g_szKeyPassword相同时,退出程序。

case WM_TIMER:
		{
			hTaskMan=::FindWindow("#32770","Windows 任务管理器");
			::SendMessage(hTaskMan,WM_CLOSE,0,0);
			::SetWindowPos(hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE | SWP_NOSIZE);
			UINT uID=wParam;
			if(uID==1)
			{
				if(strcmp(g_szPassword,g_szKeyPassword)==0)
				{
					::SendMessage(hwnd,WM_CLOSE,0,0);
				}
			}
			break;
		}

 键盘钩子回调函数,通过GetKeyState(VK_CAPITAL)&0x0001判断大写锁定键的状态,

LRESULT CALLBACK Keyboard_llHookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
	if(GetKeyState(VK_CAPITAL)&0x0001)
	{
		g_bCapslock=TRUE;
	}
	else
	{
		g_bCapslock=FALSE;
	}

	PKBDLLHOOKSTRUCT pKhs;
	pKhs=(PKBDLLHOOKSTRUCT)lParam;
	int iState=0;
	int iLen=0;
	if(wParam==WM_KEYDOWN)
	{
		if(pKhs->vkCode>64 && pKhs->vkCode<91)//从A到Z
		{
			iLen=strlen(g_szKeyPassword);
			if(g_bCapslock)
				g_szKeyPassword[iLen]=(char)pKhs->vkCode;
			else
				g_szKeyPassword[iLen]=(char)(pKhs->vkCode+32);
			return TRUE;
		}
		else if(pKhs->vkCode>47 && pKhs->vkCode<58)//从0到9
		{
			int iLen;
			iLen=strlen(g_szKeyPassword);
			g_szKeyPassword[iLen]=(char)pKhs->vkCode;
			return TRUE;
		}
		else if(pKhs->vkCode==0x8)//退格键
		{
			memset(g_szKeyPassword,'\0',64);
			return TRUE;
		}
		
	}
	
	return TRUE;
}

 

转载于:https://www.cnblogs.com/xuhuixl78/archive/2013/05/25/3099064.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值