用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;
}

 

posted @ 2013-05-25 16:59  再见,青春  阅读(572)  评论(0编辑  收藏  举报