標(biāo)題: c語(yǔ)言作品 -> 鎖屏小工具 V2.0 [打印本頁(yè)]
作者: liuyuxi 時(shí)間: 2015-1-11 02:15
標(biāo)題: c語(yǔ)言作品 -> 鎖屏小工具 V2.0
花了兩天的時(shí)間,終于將其“覺(jué)醒”成功。嘎嘎~~~ 當(dāng)設(shè)計(jì)1.0 版本的 沒(méi)有密碼驗(yàn)證,心里就一直覺(jué)得很不舒服。覺(jué)得它不是一個(gè)完整的程序,雖然可以鎖定鍵盤、鼠標(biāo)、屏幕...但卻連最基本的密碼驗(yàn)證都沒(méi)有。這樣的防御形同虛設(shè),那時(shí)夠糾結(jié)的...現(xiàn)在就看看完善之后的 V2.0 界面吧~~ 感覺(jué)舒服多了~~~嘎嘎...先不說(shuō)它的功能強(qiáng)不強(qiáng)悍 至少它的功能完整的~~
設(shè)置界面:
鎖屏界面:
實(shí)現(xiàn)原理:
利用HOOK 鉤子使鍵盤失效,利用ClipCursor(&rect); 函數(shù)限制鼠標(biāo)移動(dòng)的位置,屏蔽一些系統(tǒng)快捷鍵是通過(guò)修改注冊(cè)表實(shí)現(xiàn)的。
WIN鍵是通過(guò)結(jié)束 explorer.exe 的進(jìn)程實(shí)現(xiàn)屏蔽。同時(shí)由于explorer.exe 進(jìn)程的結(jié)束,也激活了注冊(cè)表的相關(guān)鍵值生效。
鎖定時(shí)所顯示的那張圖其實(shí)是一個(gè)隨屏幕大小而改變的對(duì)話框。對(duì)話框中加入了一個(gè)圖片控件而已。
然后將利用SetWindowPos(&wndTopMost,0,0,w,h,SWP_SHOWWINDOW);將其置頂。
功能:
鎖定【鼠標(biāo)移動(dòng)】、 屏蔽【鍵盤輸入】、屏蔽【注銷按鈕】、屏蔽【關(guān)機(jī)按鈕】、
屏蔽【更改密碼】、屏蔽【任務(wù)管理器】、屏蔽【鎖定計(jì)算機(jī)】、屏蔽【系統(tǒng)快捷鍵】
鎖屏?xí)r程序會(huì)設(shè)定開(kāi)機(jī)自啟動(dòng),解屏?xí)r刪除開(kāi)機(jī)自啟動(dòng),達(dá)到未輸入解屏密碼時(shí),即使重啟之后程序仍會(huì)鎖屏!
程序附帶自校驗(yàn),在一定的程度上防范惡意修改及病毒感染。
缺點(diǎn):
依靠第三方實(shí)現(xiàn)部分功能,不能自己實(shí)現(xiàn)...
密碼保存是以明文的形式保存,加密算法的缺陷,導(dǎo)致加密后程序可能會(huì)在某些機(jī)器上出錯(cuò)。
而且由于使用了HOOK技術(shù)導(dǎo)致某些不負(fù)責(zé)任的安全軟件誤報(bào)為病毒程序.。這很大部分上影響用戶的使用。
沒(méi)有使用資源釋放機(jī)制,是因?yàn)榕掠脩粽`會(huì)本是DLL木馬。所以導(dǎo)致多了一個(gè) HookDll.dll 的文件出現(xiàn)。
由于對(duì)MFC不太熟悉,所以密碼驗(yàn)證方面的代碼寫的有點(diǎn)復(fù)雜...雖然這是個(gè)小程序,如果是中大型的程序在一定的程度下影響效率。
代碼還是不夠精悍!某些函數(shù)定義下顯得不夠規(guī)范。.
不能自定義圖像和其顯示的透明度。
以下是 HookDll.dll 源碼:
- =========================================================================================================
- #include <windows.h>
- #include <stdio.h>
- #include <TLHELP32.H>
- #pragma comment(linker, "/OPT:NOWIN98")
- #include <shlwapi.h>// 刪除子鍵需要
- #pragma comment(lib, "shlwapi.lib")
- HHOOK g_hMouse;
- HHOOK g_hMouse1;
- #pragma data_seg("MySec")
- HWND g_hand = NULL;
- #pragma data_seg()
- #pragma comment(linker,"/section:MySec,RWS")
- void UnhHook();
- int Reg(int i);// 限制任務(wù)管理器
- DWORD Pid;// 當(dāng)前進(jìn)程pid
- DWORD WPid;// 激活窗口的pid
- DWORD Process(char Processname[]); // 遍歷進(jìn)程
- int AUTODel(int Del)
- {
- char Key[]="鎖屏小工具";
- HKEY RegKey;
- if (Del)
- {
- if(RegOpenKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",
- 0, KEY_ALL_ACCESS, &RegKey) != ERROR_SUCCESS)
- return 1;
- if (!RegDeleteValue(RegKey,Key))
- {
- RegCloseKey(RegKey);
- return 1;
- }
- }
- else
- {
- if(RegOpenKeyEx(HKEY_CURRENT_USER, "密碼正確",0, KEY_ALL_ACCESS, &RegKey) == ERROR_SUCCESS)
- {
- SHDeleteKey(HKEY_CURRENT_USER,"密碼正確");
- SHDeleteKey(HKEY_CURRENT_USER,"開(kāi)機(jī)啟動(dòng)");
- RegCloseKey(RegKey);
- return 0;
- }
- else
- return 1;
- }
- RegCloseKey(RegKey);
- return 0;
- }
- void CALLBACK PasswordCmp(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
- {
- if (!AUTODel(0))
- {
- if (!AUTODel(1))
- MessageBox(0,"刪除自啟動(dòng)失!重啟后可能還會(huì)被鎖屏,請(qǐng)用安全工具清除本開(kāi)機(jī)啟動(dòng)項(xiàng)!","注意",MB_OK|MB_SYSTEMMODAL);
- KillTimer(hWnd,1);// 結(jié)束定時(shí)
- if (Reg(0))
- MessageBox(0,"解除對(duì)windows 安全限制失敗~~~請(qǐng)解除安全軟件對(duì)本軟件的攔截!解除攔截后再重新鎖屏后解鎖即可~~","Error",MB_SYSTEMMODAL);
- SendMessage(g_hand,WM_CLOSE,0,0); // 關(guān)閉窗口
- UnhHook();
- }
- }
- LRESULT CALLBACK MouseProc(
- int nCode, // hook code
- WPARAM wParam, // message identifier
- LPARAM lParam // mouse coordinates
- )
- {
- return 1;
- }
- LRESULT CALLBACK KeyboardProc(
- int code, // hook code
- WPARAM wParam, // virtual-key code
- LPARAM lParam // keystroke-message information
- )
- {
- /*//調(diào)試程序時(shí)使用
- if (VK_F2== wParam)
- {
- SendMessage(g_hand,WM_CLOSE,0,0);
- UnhHook();
- if (!AUTODel(1))
- MessageBox(0,"刪除自啟動(dòng)失!重啟后可能還會(huì)被鎖屏,請(qǐng)用安全工具清除本開(kāi)機(jī)啟動(dòng)項(xiàng)!","注意",MB_OK|MB_SYSTEMMODAL);
- if (Reg(0))
- MessageBox(0,"解除對(duì)windows 安全限制失敗~~~請(qǐng)解除安全軟件對(duì)本軟件的攔截!解除攔截后再重新鎖屏后解鎖即可~~","Error",MB_SYSTEMMODAL);
- }
- */
- // 獲取當(dāng)前激活窗口的進(jìn)程PID
- GetWindowThreadProcessId(GetActiveWindow(), &WPid);
- // 與自身比較
- /* VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39)
- * 0x40 : unassigned
- * VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A)
- *小鍵盤 0 - 9 (0x60 - 0x69)
- *13 回車鍵 || 8 退格鍵*/
- if (WPid == Pid) // 如果當(dāng)前屬于窗口是本進(jìn)程 則不屏蔽這些按鍵
- {
- if (wParam >= 0x30 && wParam <=0x5A || wParam >= 0x60 && wParam <= 0x69 || wParam == 13 || wParam == 8)
- {
- if (wParam != 0x40)
- {
- return CallNextHookEx(g_hMouse1, code, wParam, lParam) ;
- }
- }
- }
- return 1;
- }
- void SetHook(HWND hwnd)
- {
- GetWindowThreadProcessId(hwnd, &Pid);
- g_hand=hwnd;// 還是不HOOK 鼠標(biāo)吧 會(huì)有忙狀態(tài)~~~
- //g_hMouse = SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("HookDll"),0);
- g_hMouse1 = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("HookDll"),0);
- DWORD ProcessID = Process("explorer.exe");
- HANDLE Proceshandle = OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcessID);
- TerminateProcess(Proceshandle ,1);
- SetTimer(hwnd,1,1,PasswordCmp);// 設(shè)置定時(shí)器
- if (Reg(1))
- {
- MessageBox(0,"注意!無(wú)法限制windows 安全,請(qǐng)解除安全軟件對(duì)本軟件的限制~","Error",MB_SYSTEMMODAL);
- }
- }
- void UnhHook()
- {
- //UnhookWindowsHookEx(g_hMouse);
- UnhookWindowsHookEx(g_hMouse1);
- //ClipCursor(NULL); //釋放
- ShellExecute(NULL,"open","explorer.exe",NULL,NULL,SW_SHOW);
- }
- int Reg(int i)
- {
- char Reg[] = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";
- char Regoff[] = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer";
- char Regz[] = "DisableTaskMgr";// 屏蔽任務(wù)管理器
- char RegLock[] = "DisableLockWorkstation";// 屏蔽鎖定計(jì)算機(jī)
- char Regnooff[] = "NoLogOff";// 屏蔽注銷
- char Regnoexit[] = "NoClose";// 屏蔽關(guān)機(jī)
- char RegnoKey[] = "NoWinKeys";// WIN+E、WIN+D、WIN+F、WIN+R等Windows快捷鍵
- //char RegnoRun[] = "RestrictRun";// 禁止允許任何程序
- char Nopassword[] = "DisableChangePassword";// 屏蔽更改密碼
- HKEY hkey,hkeyoff;
- DWORD Zhi=1;
- //if(RegCreateKeyEx(HKEY_CURRENT_USER,Reg,NULL,KEY_ALL_ACCESS ,&hkey))
- if(RegCreateKeyEx(HKEY_CURRENT_USER,Reg,0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hkey,NULL))
- {
- RegCloseKey(hkey);
- return 1;// 創(chuàng)建失敗則 返回1 提示錯(cuò)誤
- }
- //if(RegCreateKeyEx(HKEY_CURRENT_USER,Regoff,NULL,KEY_ALL_ACCESS ,&hkeyoff))
- if(RegCreateKeyEx(HKEY_CURRENT_USER,Regoff,0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hkeyoff,NULL))
- {
- RegCloseKey(hkeyoff);
- return 1;// 創(chuàng)建失敗則 返回1 提示錯(cuò)誤
- }
- if (i)
- {
- // 屏蔽任務(wù)管理器
- if (RegSetValueEx(hkey,Regz,0,REG_DWORD,(CONST BYTE*)&Zhi,sizeof(Zhi)))
- {
- RegCloseKey(hkey);
- return 1;//設(shè)置失敗則返回1 提示錯(cuò)誤
- }
- // 屏蔽鎖定計(jì)算機(jī)
- if (RegSetValueEx(hkey,RegLock,0,REG_DWORD,(CONST BYTE*)&Zhi,sizeof(Zhi)))
- {
- RegCloseKey(hkey);
- return 1;//設(shè)置失敗則返回1 提示錯(cuò)誤
- }
- // 屏蔽注銷
- if (RegSetValueEx(hkeyoff,Regnooff,0,REG_DWORD,(CONST BYTE*)&Zhi,sizeof(Zhi)))
- {
- RegCloseKey(hkeyoff);
- return 1;//設(shè)置失敗則返回1 提示錯(cuò)誤
- }
- // 屏蔽關(guān)機(jī)
- if (RegSetValueEx(hkeyoff,Regnoexit,0,REG_DWORD,(CONST BYTE*)&Zhi,sizeof(Zhi)))
- {
- RegCloseKey(hkeyoff);
- return 1;//設(shè)置失敗則返回1 提示錯(cuò)誤
- }
- // 屏蔽更改密碼
- if (RegSetValueEx(hkey,Nopassword,0,REG_DWORD,(CONST BYTE*)&Zhi,sizeof(Zhi)))
- {
- RegCloseKey(hkey);
- return 1;//設(shè)置失敗則返回1 提示錯(cuò)誤
- }
- // 屏蔽系統(tǒng)快捷鍵
- if (RegSetValueEx(hkeyoff,RegnoKey,0,REG_DWORD,(CONST BYTE*)&Zhi,sizeof(Zhi)))
- {
- RegCloseKey(hkeyoff);
- return 1;//設(shè)置失敗則返回1 提示錯(cuò)誤
- }
- RegCloseKey(hkeyoff);
- RegCloseKey(hkey);
- /*// 只修改內(nèi)存 重啟后會(huì)失效 避免重啟后鎖屏程序無(wú)法運(yùn)行
- if(RegCreateKeyEx(HKEY_CURRENT_USER,Regoff,0,0,REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,&hkeyoff,NULL))
- {
- RegCloseKey(hkeyoff);
- return 1;// 創(chuàng)建失敗則 返回1 提示錯(cuò)誤
- }
- if (RegSetValueEx(hkeyoff,RegnoRun,0,REG_DWORD,(CONST BYTE*)&Zhi,sizeof(Zhi)))
- {
- RegCloseKey(hkeyoff);
- return 1;//設(shè)置失敗則返回1 提示錯(cuò)誤
- }
- RegCloseKey(hkeyoff);
- */return 0;// 如果找到則返回0 提示成功
- }
- else// 解除限制
- {
- // 解除任務(wù)管理器限制
- if (RegDeleteValue(hkey,Regz))
- return 1;
- // 解除鎖定計(jì)算機(jī)限制
- if (RegDeleteValue(hkey,RegLock))
- return 1;
- // 解除鎖定注銷
- if (RegDeleteValue(hkeyoff,Regnooff))
- return 1;
- // 解除鎖定注銷
- if (RegDeleteValue(hkey,Nopassword))
- return 1;
- // 解除鎖定關(guān)機(jī)
- if (RegDeleteValue(hkeyoff,Regnoexit))
- return 1;
- // 解除系統(tǒng)快捷鍵限制
- if (RegDeleteValue(hkeyoff,RegnoKey))
- return 1;
- /*// 解除允許程序的權(quán)限
- if (RegDeleteValue(hkeyoff,RegnoRun))
- return 1;
- */return 0;
- }
- }
- DWORD Process(char Processname[])
- {
- PROCESSENTRY32 ProcessEnt = {0};
- HANDLE hPrOhandle;
- ProcessEnt.dwSize = sizeof(PROCESSENTRY32);
- hPrOhandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);
- BOOL bRet = Process32First(hPrOhandle,&ProcessEnt);
- while (bRet)
- {
- if (strcmpi(Processname,ProcessEnt.szExeFile) == 0)
- {
- return ProcessEnt.th32ProcessID;
- }
- bRet = Process32Next(hPrOhandle,&ProcessEnt);
- }
- return 1;
- }
- 以下是 鎖定小工具 V2.0.exe 源碼:(由于是MFC設(shè)計(jì)的界面 代碼無(wú)法全部給出 只給出關(guān)鍵的代碼)
- =========================================================================================================
- 定義兩個(gè)全局變量
- HWND g_hwnd; // 傳遞給DLL用的
- int LockTime = 3;// 輸入密碼錯(cuò)誤三次 則凍結(jié) 3 分鐘
- 程序加載時(shí):BOOL CMyDlg::OnInitDialog()
- HKEY RegKey;
- if(RegOpenKeyEx(HKEY_CURRENT_USER, "開(kāi)機(jī)啟動(dòng)",0, KEY_ALL_ACCESS, &RegKey) != ERROR_SUCCESS)
- {
- CLock dlg;
- dlg.DoModal(); // 創(chuàng)建 設(shè)置 子窗口界面
- }
- else // 否則直接鎖屏
- RegCloseKey(RegKey);
- g_hwnd = m_hWnd; // 將本窗口的句柄傳遞給DLL
- // 創(chuàng)建線程 進(jìn)行HOOK
- CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)HOOK,NULL,NULL,NULL);
- DWORD WINAPI HOOK()
- {// 去掉鼠標(biāo)忙狀態(tài)
- GetInputState();
- PostThreadMessage(GetCurrentThreadId(),NULL,0,0);
- MSGmsg;
- GetMessage(&msg, NULL, NULL, NULL);
- SetHook(g_hwnd); // HOOK
- RECT rect; //定義個(gè)矩形
- /******鼠標(biāo)只能在這個(gè)范圍內(nèi)移動(dòng)******/
- unsigned int w = ::GetSystemMetrics(SM_CXSCREEN);
- unsigned int h = ::GetSystemMetrics(SM_CYSCREEN);
- rect.bottom= h/3;
- rect.top= h/3;
- rect.right = w-9;
- rect.left = w-9;
- while(1)
- { // 每隔100 毫秒鎖定一次,看你吖的移動(dòng)鼠標(biāo)啦~~~~
- ClipCursor(&rect);
- Sleep(100);
- }
- return 0;
- }
- // 界面透明化
- SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);HINSTANCE hInst = LoadLibrary("User32.DLL");
- if(hInst)
- {
- typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);
- MYFUNC fun = NULL;
- //取得SetLayeredWindowAttributes函數(shù)指針
- fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");
- if(fun)fun(this->GetSafeHwnd(),RGB(255,255,255),240,2);
- FreeLibrary(hInst);
- }
- /*第二個(gè)參數(shù)是 設(shè)置透明色 第三個(gè)參數(shù)是 設(shè)置不透明度 255就是不透明 0就是全透明 第四個(gè)參數(shù) 是一個(gè)方式選擇 1表示讓第二個(gè)參數(shù)的顏色透明此時(shí)第三個(gè)參數(shù)無(wú)效 2表示全窗口透明此時(shí)第二個(gè)參數(shù)無(wú)效 */
- unsigned int w = ::GetSystemMetrics(SM_CXSCREEN); // 獲取屏幕寬
- unsigned int h = ::GetSystemMetrics(SM_CYSCREEN); // 獲取屏幕高
- SetWindowPos(&wndTopMost,0,0,w,h,SWP_SHOWWINDOW); // 進(jìn)行置頂操作
- CWnd *pWnd;
- pWnd = GetDlgItem( IDC_STATIC ); //獲取控件指針,IDC_STATIC為控件ID號(hào)
- pWnd->MoveWindow( CRect(0,22,w,h) ); // 移動(dòng) 重設(shè)置控件為 w寬 h高
- SetDlgItemText(IDC_Password,"");
- pWnd = GetDlgItem( IDC_Password );
- pWnd->MoveWindow( CRect(0,0,w,22) ); // 移動(dòng) 重設(shè)置密碼控件為 w寬 h高
- 【鎖定】按鈕觸發(fā)的代碼:
- void CLock::OnLockPM()
- {
- CString temp;
- char Password[MAX_PATH];
- char tmp[MAX_PATH];
- int Cs = 1; // 測(cè)試使用
- GetDlgItemText(IDC_SPProssword,temp);
- strcpy(Password,temp);
- GetDlgItemText(IDC_QRProssword,temp);
- strcpy(tmp,temp);
- int len = strlen(Password)-1;
- for (int i=0; i<=len; i++)
- {
- if (Password[i] >= 0x30 && Password[i] <=0x5A || Password[i] >= 0x60 && Password[i] <= 0x69)
- {
- if (Password[i]!= 0x40)
- {
- Cs = 1;
- }
- }
- else
- Cs = 0;
- }
- if (Cs)
- {
- if ( strcmp(Password,tmp) == 0 && strlen(Password)!=0 && strlen(tmp)!=0)
- {
- if (!AUTO(1,NULL))// 開(kāi)機(jī)啟動(dòng)
- AfxMessageBox("由于權(quán)限原因,添加開(kāi)機(jī)啟動(dòng)項(xiàng)失敗!重啟后將無(wú)法鎖屏!請(qǐng)解除安全軟件對(duì)本程序的攔截");
- if(!AUTO(2,Password))// 存儲(chǔ)密碼
- {
- AfxMessageBox("無(wú)法驗(yàn)證密碼~ 程序?qū)⑼顺鰚");
- exit(1);
- }
- PostMessage(WM_CLOSE);
- }
- else
- {
- if ( strlen(Password)==0 && strlen(tmp)==0 )
- AfxMessageBox("密碼不允許為空!");
- else
- AfxMessageBox("兩次輸入的密碼不匹配!");
- SetDlgItemText(IDC_SPProssword,"");// 清空
- SetDlgItemText(IDC_QRProssword,"");// 清空
- GetDlgItem(IDC_SPProssword)-> SetFocus(); // 設(shè)置光標(biāo)在第一個(gè)文本框里
- }
- }
- else
- AfxMessageBox("鎖屏密碼只允許是 數(shù)字 或 字母 ~不允許包含其他的字符!");
- }
- 【使用上一次設(shè)置的密碼】按鈕觸發(fā)的代碼:
- void CLock::onPassword()
- {
- if (!AUTO(1,NULL))// 開(kāi)機(jī)啟動(dòng)
- AfxMessageBox("由于權(quán)限原因,添加開(kāi)機(jī)啟動(dòng)項(xiàng)失。≈貑⒑髮o(wú)法鎖屏!請(qǐng)解除安全軟件對(duì)本程序的攔截");
- PostMessage(WM_CLOSE);
- }
- 【刪除上一次設(shè)置的密碼】按鈕觸發(fā)的代碼:
- void CLock::OnDelPassword()
- {
- // TODO: Add your control notification handler code here
- if (!SHDeleteKey(HKEY_CURRENT_USER,"鎖屏小工具"))
- {
- GetDlgItem(IDC_Password)->ShowWindow(SW_HIDE);// 顯示按鈕
- GetDlgItem(IDC_DelPassword)->ShowWindow(SW_HIDE);// 顯示按鈕
- GetDlgItem(IDC_TS)->ShowWindow(SW_SHOW);
- AfxMessageBox("清除成功!");
- }
- }
- 解鎖時(shí) 回車觸發(fā)的代碼
- void CMyDlg::OnLand()
- {
- // TODO: Add your control notification handler code here
- char Ts[]="敖菜像焙涕扎救蜜昂睜到廢墻臍兆狹瘟幼敖菜像---";
- if (Scan(Ts))
- MessageBox(Ts,NULL,MB_OK|MB_SYSTEMMODAL);
- CString tmp;
- char Password[MAX_PATH]={0};
- char WBPassword[MAX_PATH]={0};
- GetDlgItemText(IDC_Password,tmp);
- strcpy(WBPassword,tmp);
- HKEY RegKey;
- LPBYTE Size=new BYTE [MAX_PATH]; // 要足夠大
- DWORD type=REG_BINARY;
- DWORD cbData=256;
- if(RegOpenKeyEx(HKEY_CURRENT_USER, "鎖屏小工具",
- 0, KEY_ALL_ACCESS, &RegKey) == ERROR_SUCCESS)
- {
- if ( RegQueryValueEx(RegKey,"password",NULL,&type,Size,&cbData) == ERROR_SUCCESS)
- {
- strcpy(Password,(char *)Size);// 利用DQCDEXE 全局變量通知
- delete []Size;
- }
- else
- AfxMessageBox("讀取密碼失!");
- }
- else
- AfxMessageBox("打開(kāi)指定的注冊(cè)表失。");
- if (strlen(WBPassword)==0)
- AfxMessageBox("請(qǐng)輸入解屏密碼!");
- else
- {
- if (strcmp(WBPassword,Password) == 0)
- {
- if (RegCreateKeyEx(HKEY_CURRENT_USER,"密碼正確",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&RegKey,NULL) == ERROR_SUCCESS)
- {
- RegCloseKey(RegKey);
- }
- else
- AfxMessageBox("修改注冊(cè)表失敗,暫時(shí)無(wú)法解鎖");
- }
- else
- {
- char Test[35];
- LockTime--;
- if (LockTime == 0)
- {
- CEdit *pEdit = (CEdit *)GetDlgItem(IDC_Password);
- pEdit-> SetPasswordChar(0);// 去除密碼屬性
- GetDlgItem(IDC_Password)->EnableWindow(0);
- GetDlgItem(IDC_BUTTON1)->EnableWindow(0);
- SetDlgItemText(IDC_Password,"對(duì)不起,由于您連續(xù)輸入密碼錯(cuò)誤 3 次,三分鐘內(nèi)不允許輸入密碼!");
- AfxMessageBox("對(duì)不起,由于您連續(xù)輸入密碼錯(cuò)誤 3 次,三分鐘內(nèi)不允許輸入密碼!");
- Sleep(180000);// 掛起三分鐘
- GetDlgItem(IDC_Password)->EnableWindow(1);
- GetDlgItem(IDC_BUTTON1)->EnableWindow(1);
- GetDlgItem(IDC_Password)-> SetFocus(); // 設(shè)置光標(biāo)在第一個(gè)文本框里
- pEdit-> SetPasswordChar('*');// 設(shè)置密碼屬性
- LockTime=3;
- }
- else
- {
- sprintf(Test,"輸入密碼錯(cuò)誤!您還有 %d 次機(jī)會(huì)",LockTime);
- AfxMessageBox(Test);
- }
- SetDlgItemText(IDC_Password,"");
- }
- }
- }
復(fù)制代碼
作者: liuyuxi 時(shí)間: 2015-1-11 02:30
鎖屏小工具 V3.0更新:
5.21日 更新:有些機(jī)器上解屏之后會(huì)彈出【程序已運(yùn)行...】的對(duì)話框,本來(lái)是想防止用戶啟動(dòng)多次本程序,現(xiàn)在想想也就不必要啦..
應(yīng)網(wǎng)友們要求,解決了一些BUG,整個(gè)程序重新設(shè)計(jì),全新的界面,并去除冗余代碼,新增一些人性化的功能,例如:通過(guò)快捷鍵快速鎖屏,系統(tǒng)空閑時(shí)鎖屏。鎖屏?xí)r關(guān)閉顯示器等...
本想再加入手機(jī)遠(yuǎn)程鎖屏和解屏功能,但對(duì)HTTP協(xié)議還不夠熟悉,可能會(huì)花上好一段時(shí)間,為了我的作品盡善盡美就暫且放下了。
在介紹新功能前,先感謝【寒栤ξ玄鉄ン QQ:7389187372】反饋 V2.0版本 在Win7下無(wú)法正常使用的問(wèn)題以及屏蔽不了第三方桌面插件 如QQ桌面。關(guān)于這方面的BUG,由于個(gè)人原因,并沒(méi)有去實(shí)驗(yàn)及分析并解決。V3.0 版本可能也不兼容Win7,至于第三方桌面插件也尚未測(cè)試過(guò)。鎖屏小工具 V3.0 在Windows XP下測(cè)試通過(guò)。
謝謝 【寒栤ξ玄鉄ン QQ:7389178372】、【愛(ài)~~徘徊~ QQ:13985874494】反饋的建議和意見(jiàn)
謝謝 【東東 QQ:99567177092】在 V3.0 版本中幫忙測(cè)試軟件。
謝謝 【懶·。 wangmaokun1992@qq.com(113747741213)】、還有部分網(wǎng)友由于聊天記錄不小心刪除,所以有些網(wǎng)友并沒(méi)有在列,也一并感。原本只是一個(gè)練習(xí)作品,沒(méi)想到你們會(huì)喜歡,很謝謝你們的支持...
【注意】:由于本程序采用HOOK技術(shù),可能會(huì)導(dǎo)致殺軟的誤殺及攔截,在使用本程序前請(qǐng)將其列入信任名單。
新增功能介紹:
【密碼提示】:好幾個(gè)網(wǎng)友都是因?yàn)橥浢艽a而聯(lián)系到我,而這個(gè)功能是【愛(ài)~~徘徊~ QQ:13985874494】提出的建議,覺(jué)得非常不錯(cuò),就增加了整個(gè)功能,用于忘記了密碼時(shí)可以根據(jù)自己設(shè)定的密碼提示信息得到印象。感謝【愛(ài)~~徘徊~ 】o(∩_∩)o ~~
【更換鎖屏圖像】:說(shuō)來(lái)也覺(jué)得搞笑,有些人認(rèn)為 V2.0 版的鎖屏圖片很好看,有些人認(rèn)為難看,我就索性增加可以自由更換鎖屏圖片的功能了。同時(shí)也支持修改其透明度。
【系統(tǒng)空閑時(shí)鎖屏】:想到可能有些網(wǎng)友會(huì)經(jīng)常離開(kāi)自己的電腦,但是又不想自己的電腦被別人動(dòng),關(guān)機(jī)又麻煩,雖然可以通過(guò)系統(tǒng)自帶的屏幕保護(hù)方式加鎖,但不夠個(gè)性,就增加了這個(gè)功能,設(shè)定時(shí)間后例如1分鐘,當(dāng)電腦沒(méi)有被操作的時(shí)間達(dá)到1分鐘則會(huì)自動(dòng)鎖屏。可以同時(shí)勾選【鎖屏?xí)r關(guān)閉顯示器】的功能,達(dá)到省點(diǎn)的目的。通過(guò)快捷鍵 Ctrl + Alt + Shift + F9 隱藏本窗口,這樣就不會(huì)占用桌面空間...我覺(jué)得這個(gè)功能非常的不錯(cuò)。
【鎖屏時(shí)關(guān)閉顯示器】:顧名思義,就是鎖屏?xí)r關(guān)閉顯示器啦,其實(shí)也不算是關(guān)閉顯示器,就只是讓顯示器處于休眠狀態(tài)。
【快速鎖屏】:設(shè)置好想過(guò)設(shè)置后可以通過(guò) Ctrl + Alt + Shift + F8 快捷鍵快速鎖屏。一般我是先設(shè)置好密碼,然后先是隱藏本窗口,有事出去的時(shí)候按一下快捷鍵就立即鎖屏。
【隱藏窗口】:通過(guò) Ctrl + Alt + Shift + F8 快捷鍵隱藏窗口
程序下載:
spxgjjxz.zip
(271.66 KB, 下載次數(shù): 29)
2015-1-11 02:28 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者: fgrgfrfgr 時(shí)間: 2016-11-3 22:50
我來(lái)看看
作者: fgrgfrfgr 時(shí)間: 2016-11-3 23:01
鎖屏小工具
作者: 古藏劍 時(shí)間: 2018-4-18 17:38
有個(gè)不情之請(qǐng),您可以分享源碼嗎,想學(xué)習(xí)
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |