久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6793|回復: 4
打印 上一主題 下一主題
收起左側

c語言作品 -> 鎖屏小工具 V2.0

[復制鏈接]
跳轉到指定樓層
樓主
ID:71922 發表于 2015-1-11 02:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
    花了兩天的時間,終于將其“覺醒”成功。嘎嘎~~~ 當設計1.0 版本的 沒有密碼驗證,心里就一直覺得很不舒服。覺得它不是一個完整的程序,雖然可以鎖定鍵盤、鼠標、屏幕...但卻連最基本的密碼驗證都沒有。這樣的防御形同虛設,那時夠糾結的...現在就看看完善之后的 V2.0 界面吧~~ 感覺舒服多了~~~嘎嘎...先不說它的功能強不強悍 至少它的功能完整的~~

設置界面:


鎖屏界面:



實現原理:
    利用HOOK 鉤子使鍵盤失效,利用ClipCursor(&rect); 函數限制鼠標移動的位置,屏蔽一些系統快捷鍵是通過修改注冊表實現的。
    WIN鍵是通過結束 explorer.exe 的進程實現屏蔽。同時由于explorer.exe 進程的結束,也激活了注冊表的相關鍵值生效。
    鎖定時所顯示的那張圖其實是一個隨屏幕大小而改變的對話框。對話框中加入了一個圖片控件而已。
    然后將利用SetWindowPos(&wndTopMost,0,0,w,h,SWP_SHOWWINDOW);將其置頂。

功能:
    鎖定【鼠標移動】、    屏蔽【鍵盤輸入】、屏蔽【注銷按鈕】、屏蔽【關機按鈕】、
    屏蔽【更改密碼】、屏蔽【任務管理器】、屏蔽【鎖定計算機】、屏蔽【系統快捷鍵】
    鎖屏時程序會設定開機自啟動,解屏時刪除開機自啟動,達到未輸入解屏密碼時,即使重啟之后程序仍會鎖屏!
    程序附帶自校驗,在一定的程度上防范惡意修改及病毒感染。

缺點:
    依靠第三方實現部分功能,不能自己實現...
    密碼保存是以明文的形式保存,加密算法的缺陷,導致加密后程序可能會在某些機器上出錯。
    而且由于使用了HOOK技術導致某些不負責任的安全軟件誤報為病毒程序.。這很大部分上影響用戶的使用。
    沒有使用資源釋放機制,是因為怕用戶誤會本是DLL木馬。所以導致多了一個 HookDll.dll   的文件出現。
    由于對MFC不太熟悉,所以密碼驗證方面的代碼寫的有點復雜...雖然這是個小程序,如果是中大型的程序在一定的程度下影響效率。
    代碼還是不夠精悍!某些函數定義下顯得不夠規范。.
    不能自定義圖像和其顯示的透明度。



以下是 HookDll.dll 源碼:
  1. =========================================================================================================

  2. #include <windows.h>

  3. #include <stdio.h>

  4. #include <TLHELP32.H>

  5. #pragma comment(linker, "/OPT:NOWIN98")


  6. #include <shlwapi.h>// 刪除子鍵需要  

  7. #pragma comment(lib, "shlwapi.lib")


  8. HHOOK g_hMouse;

  9. HHOOK g_hMouse1;


  10. #pragma data_seg("MySec")

  11. HWND g_hand = NULL;

  12. #pragma  data_seg()

  13. #pragma  comment(linker,"/section:MySec,RWS")


  14. void UnhHook();

  15. int Reg(int i);// 限制任務管理器

  16. DWORD Pid;// 當前進程pid

  17. DWORD WPid;// 激活窗口的pid

  18. DWORD Process(char Processname[]); // 遍歷進程

  19. int AUTODel(int Del)

  20. {

  21. char Key[]="鎖屏小工具";

  22. HKEY RegKey;

  23. if (Del)

  24. {

  25. if(RegOpenKeyEx(HKEY_CURRENT_USER, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run",

  26. 0, KEY_ALL_ACCESS, &RegKey) != ERROR_SUCCESS)

  27. return 1;

  28. if (!RegDeleteValue(RegKey,Key))

  29. {

  30. RegCloseKey(RegKey);

  31. return 1;

  32. }

  33. }

  34. else

  35. {

  36. if(RegOpenKeyEx(HKEY_CURRENT_USER, "密碼正確",0, KEY_ALL_ACCESS, &RegKey) == ERROR_SUCCESS)

  37. {

  38. SHDeleteKey(HKEY_CURRENT_USER,"密碼正確");

  39. SHDeleteKey(HKEY_CURRENT_USER,"開機啟動");

  40. RegCloseKey(RegKey);

  41. return 0;

  42. }

  43. else

  44. return 1;

  45. }

  46. RegCloseKey(RegKey);

  47. return 0;

  48. }


  49. void CALLBACK PasswordCmp(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)

  50. {

  51. if (!AUTODel(0))

  52. {

  53. if (!AUTODel(1))

  54. MessageBox(0,"刪除自啟動失敗!重啟后可能還會被鎖屏,請用安全工具清除本開機啟動項!","注意",MB_OK|MB_SYSTEMMODAL);

  55. KillTimer(hWnd,1);// 結束定時


  56. if (Reg(0))

  57. MessageBox(0,"解除對windows 安全限制失敗~~~請解除安全軟件對本軟件的攔截!解除攔截后再重新鎖屏后解鎖即可~~","Error",MB_SYSTEMMODAL);

  58. SendMessage(g_hand,WM_CLOSE,0,0); // 關閉窗口

  59. UnhHook();


  60. }

  61. }




  62. LRESULT CALLBACK MouseProc(

  63.   int nCode,      // hook code

  64.   WPARAM wParam,  // message identifier

  65.   LPARAM lParam   // mouse coordinates

  66.   )

  67. {

  68. return 1;

  69. }

  70. LRESULT CALLBACK KeyboardProc(

  71. int code,       // hook code

  72. WPARAM wParam,  // virtual-key code

  73. LPARAM lParam   // keystroke-message information

  74. )

  75. {

  76. /*//調試程序時使用

  77. if (VK_F2== wParam)

  78. {

  79. SendMessage(g_hand,WM_CLOSE,0,0);

  80. UnhHook();

  81. if (!AUTODel(1))

  82. MessageBox(0,"刪除自啟動失敗!重啟后可能還會被鎖屏,請用安全工具清除本開機啟動項!","注意",MB_OK|MB_SYSTEMMODAL);

  83. if (Reg(0))

  84. MessageBox(0,"解除對windows 安全限制失敗~~~請解除安全軟件對本軟件的攔截!解除攔截后再重新鎖屏后解鎖即可~~","Error",MB_SYSTEMMODAL);

  85. }

  86. */

  87. // 獲取當前激活窗口的進程PID

  88. GetWindowThreadProcessId(GetActiveWindow(), &WPid);

  89. // 與自身比較

  90. /* VK_0 - VK_9 are the same as ASCII '0' - '9' (0x30 - 0x39)

  91. * 0x40 : unassigned

  92. * VK_A - VK_Z are the same as ASCII 'A' - 'Z' (0x41 - 0x5A)

  93. *小鍵盤 0 - 9 (0x60 - 0x69)

  94. *13 回車鍵 || 8 退格鍵*/

  95. if (WPid == Pid) // 如果當前屬于窗口是本進程 則不屏蔽這些按鍵

  96. {

  97. if (wParam >= 0x30 && wParam <=0x5A || wParam >= 0x60 && wParam <= 0x69 || wParam == 13 || wParam == 8)

  98. {

  99. if (wParam != 0x40)

  100. {

  101. return CallNextHookEx(g_hMouse1, code, wParam, lParam) ;

  102. }

  103. }

  104. }

  105. return 1;

  106. }



  107. void SetHook(HWND hwnd)

  108. {

  109. GetWindowThreadProcessId(hwnd, &Pid);

  110. g_hand=hwnd;// 還是不HOOK 鼠標吧 會有忙狀態~~~

  111. //g_hMouse = SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("HookDll"),0);

  112. g_hMouse1 = SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,GetModuleHandle("HookDll"),0);

  113. DWORD ProcessID =  Process("explorer.exe");

  114. HANDLE Proceshandle = OpenProcess(PROCESS_ALL_ACCESS,FALSE,ProcessID);

  115. TerminateProcess(Proceshandle ,1);

  116.         SetTimer(hwnd,1,1,PasswordCmp);// 設置定時器

  117. if (Reg(1))

  118. {

  119. MessageBox(0,"注意!無法限制windows 安全,請解除安全軟件對本軟件的限制~","Error",MB_SYSTEMMODAL);

  120. }

  121. }


  122. void UnhHook()

  123. {

  124. //UnhookWindowsHookEx(g_hMouse);

  125. UnhookWindowsHookEx(g_hMouse1);

  126. //ClipCursor(NULL); //釋放

  127. ShellExecute(NULL,"open","explorer.exe",NULL,NULL,SW_SHOW);

  128. }


  129. int Reg(int i)

  130. {

  131. char Reg[] = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";

  132. char Regoff[] = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer";

  133. char Regz[] = "DisableTaskMgr";// 屏蔽任務管理器

  134. char RegLock[] = "DisableLockWorkstation";// 屏蔽鎖定計算機

  135. char Regnooff[] = "NoLogOff";// 屏蔽注銷

  136. char Regnoexit[] = "NoClose";// 屏蔽關機

  137. char RegnoKey[] = "NoWinKeys";// WIN+E、WIN+D、WIN+F、WIN+R等Windows快捷鍵

  138. //char RegnoRun[] = "RestrictRun";// 禁止允許任何程序

  139. char Nopassword[] = "DisableChangePassword";// 屏蔽更改密碼

  140. HKEY hkey,hkeyoff;

  141. DWORD Zhi=1;

  142. //if(RegCreateKeyEx(HKEY_CURRENT_USER,Reg,NULL,KEY_ALL_ACCESS ,&hkey))

  143. if(RegCreateKeyEx(HKEY_CURRENT_USER,Reg,0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hkey,NULL))

  144. {

  145. RegCloseKey(hkey);

  146. return 1;// 創建失敗則 返回1 提示錯誤

  147. }

  148. //if(RegCreateKeyEx(HKEY_CURRENT_USER,Regoff,NULL,KEY_ALL_ACCESS ,&hkeyoff))

  149. if(RegCreateKeyEx(HKEY_CURRENT_USER,Regoff,0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&hkeyoff,NULL))

  150. {

  151. RegCloseKey(hkeyoff);

  152. return 1;// 創建失敗則 返回1 提示錯誤

  153. }

  154. if (i)

  155. {

  156. // 屏蔽任務管理器

  157. if (RegSetValueEx(hkey,Regz,0,REG_DWORD,(CONST BYTE*)&Zhi,sizeof(Zhi)))

  158. {

  159. RegCloseKey(hkey);

  160. return 1;//設置失敗則返回1 提示錯誤

  161. }


  162. // 屏蔽鎖定計算機

  163. if (RegSetValueEx(hkey,RegLock,0,REG_DWORD,(CONST BYTE*)&Zhi,sizeof(Zhi)))

  164. {

  165. RegCloseKey(hkey);

  166. return 1;//設置失敗則返回1 提示錯誤

  167. }

  168. // 屏蔽注銷

  169. if (RegSetValueEx(hkeyoff,Regnooff,0,REG_DWORD,(CONST BYTE*)&Zhi,sizeof(Zhi)))

  170. {

  171. RegCloseKey(hkeyoff);

  172. return 1;//設置失敗則返回1 提示錯誤

  173. }

  174.         // 屏蔽關機

  175. if (RegSetValueEx(hkeyoff,Regnoexit,0,REG_DWORD,(CONST BYTE*)&Zhi,sizeof(Zhi)))

  176. {

  177. RegCloseKey(hkeyoff);

  178. return 1;//設置失敗則返回1 提示錯誤

  179. }

  180. // 屏蔽更改密碼

  181. if (RegSetValueEx(hkey,Nopassword,0,REG_DWORD,(CONST BYTE*)&Zhi,sizeof(Zhi)))

  182. {

  183. RegCloseKey(hkey);

  184. return 1;//設置失敗則返回1 提示錯誤

  185. }

  186. // 屏蔽系統快捷鍵

  187. if (RegSetValueEx(hkeyoff,RegnoKey,0,REG_DWORD,(CONST BYTE*)&Zhi,sizeof(Zhi)))

  188. {

  189. RegCloseKey(hkeyoff);

  190. return 1;//設置失敗則返回1 提示錯誤

  191. }

  192. RegCloseKey(hkeyoff);

  193. RegCloseKey(hkey);

  194. /*// 只修改內存 重啟后會失效 避免重啟后鎖屏程序無法運行

  195. if(RegCreateKeyEx(HKEY_CURRENT_USER,Regoff,0,0,REG_OPTION_VOLATILE,KEY_ALL_ACCESS,NULL,&hkeyoff,NULL))

  196. {

  197. RegCloseKey(hkeyoff);

  198. return 1;// 創建失敗則 返回1 提示錯誤

  199. }

  200. if (RegSetValueEx(hkeyoff,RegnoRun,0,REG_DWORD,(CONST BYTE*)&Zhi,sizeof(Zhi)))

  201. {

  202. RegCloseKey(hkeyoff);

  203. return 1;//設置失敗則返回1 提示錯誤

  204. }


  205. RegCloseKey(hkeyoff);

  206. */return 0;// 如果找到則返回0 提示成功

  207. }

  208. else// 解除限制

  209. {

  210. // 解除任務管理器限制

  211. if (RegDeleteValue(hkey,Regz))

  212. return 1;

  213. // 解除鎖定計算機限制

  214. if (RegDeleteValue(hkey,RegLock))

  215. return 1;

  216. // 解除鎖定注銷

  217. if (RegDeleteValue(hkeyoff,Regnooff))

  218. return 1;

  219. // 解除鎖定注銷

  220. if (RegDeleteValue(hkey,Nopassword))

  221. return 1;

  222. // 解除鎖定關機

  223. if (RegDeleteValue(hkeyoff,Regnoexit))

  224. return 1;

  225. // 解除系統快捷鍵限制

  226. if (RegDeleteValue(hkeyoff,RegnoKey))

  227. return 1;

  228. /*// 解除允許程序的權限

  229. if (RegDeleteValue(hkeyoff,RegnoRun))

  230. return 1;

  231. */return 0;

  232. }

  233. }


  234. DWORD Process(char Processname[])

  235. {

  236. PROCESSENTRY32 ProcessEnt = {0};

  237. HANDLE hPrOhandle;

  238. ProcessEnt.dwSize = sizeof(PROCESSENTRY32);

  239. hPrOhandle = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0);

  240. BOOL bRet = Process32First(hPrOhandle,&ProcessEnt);

  241. while (bRet)

  242. {

  243. if (strcmpi(Processname,ProcessEnt.szExeFile) == 0)

  244. {

  245. return ProcessEnt.th32ProcessID;

  246. }

  247. bRet = Process32Next(hPrOhandle,&ProcessEnt);

  248. }

  249. return 1;

  250. }

  251. 以下是 鎖定小工具 V2.0.exe 源碼:(由于是MFC設計的界面 代碼無法全部給出 只給出關鍵的代碼)

  252. =========================================================================================================

  253. 定義兩個全局變量

  254. HWND g_hwnd;    // 傳遞給DLL用的

  255. int LockTime = 3;// 輸入密碼錯誤三次 則凍結 3 分鐘

  256. 程序加載時:BOOL CMyDlg::OnInitDialog()

  257. HKEY RegKey;

  258. if(RegOpenKeyEx(HKEY_CURRENT_USER, "開機啟動",0, KEY_ALL_ACCESS, &RegKey) != ERROR_SUCCESS)

  259. {

  260. CLock dlg;

  261. dlg.DoModal();    // 創建 設置 子窗口界面

  262. }

  263. else    // 否則直接鎖屏

  264. RegCloseKey(RegKey);

  265. g_hwnd = m_hWnd; // 將本窗口的句柄傳遞給DLL

  266. // 創建線程 進行HOOK

  267. CreateThread(NULL,NULL,(LPTHREAD_START_ROUTINE)HOOK,NULL,NULL,NULL);

  268. DWORD WINAPI HOOK()

  269. {// 去掉鼠標忙狀態

  270. GetInputState();

  271. PostThreadMessage(GetCurrentThreadId(),NULL,0,0);

  272. MSGmsg;

  273. GetMessage(&msg, NULL, NULL, NULL);

  274. SetHook(g_hwnd);    // HOOK

  275. RECT rect; //定義個矩形

  276. /******鼠標只能在這個范圍內移動******/

  277. unsigned int w = ::GetSystemMetrics(SM_CXSCREEN);

  278. unsigned int h = ::GetSystemMetrics(SM_CYSCREEN);

  279. rect.bottom= h/3;

  280. rect.top= h/3;

  281. rect.right  = w-9;

  282. rect.left   = w-9;

  283. while(1)

  284. {     // 每隔100 毫秒鎖定一次,看你吖的移動鼠標啦~~~~

  285. ClipCursor(&rect);

  286. Sleep(100);

  287. }

  288. return 0;

  289. }

  290. // 界面透明化

  291. SetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE,GetWindowLong(this->GetSafeHwnd(),GWL_EXSTYLE)^0x80000);HINSTANCE hInst = LoadLibrary("User32.DLL");

  292. if(hInst)

  293. {

  294. typedef BOOL (WINAPI *MYFUNC)(HWND,COLORREF,BYTE,DWORD);

  295. MYFUNC fun = NULL;

  296. //取得SetLayeredWindowAttributes函數指針

  297. fun=(MYFUNC)GetProcAddress(hInst, "SetLayeredWindowAttributes");

  298. if(fun)fun(this->GetSafeHwnd(),RGB(255,255,255),240,2);

  299. FreeLibrary(hInst);

  300. }

  301. /*第二個參數是 設置透明色   第三個參數是 設置不透明度  255就是不透明  0就是全透明  第四個參數  是一個方式選擇  1表示讓第二個參數的顏色透明此時第三個參數無效  2表示全窗口透明此時第二個參數無效 */

  302. unsigned int w = ::GetSystemMetrics(SM_CXSCREEN);    // 獲取屏幕寬

  303. unsigned int h = ::GetSystemMetrics(SM_CYSCREEN);   // 獲取屏幕高

  304. SetWindowPos(&wndTopMost,0,0,w,h,SWP_SHOWWINDOW);    // 進行置頂操作

  305. CWnd *pWnd;

  306. pWnd = GetDlgItem( IDC_STATIC );    //獲取控件指針,IDC_STATIC為控件ID號

  307. pWnd->MoveWindow( CRect(0,22,w,h) );    // 移動 重設置控件為 w寬 h高

  308. SetDlgItemText(IDC_Password,"");

  309. pWnd = GetDlgItem( IDC_Password );   

  310. pWnd->MoveWindow( CRect(0,0,w,22) );    // 移動 重設置密碼控件為 w寬 h高

  311. 【鎖定】按鈕觸發的代碼:

  312. void CLock::OnLockPM()

  313. {

  314. CString temp;

  315. char Password[MAX_PATH];

  316. char tmp[MAX_PATH];

  317. int Cs = 1; // 測試使用

  318. GetDlgItemText(IDC_SPProssword,temp);

  319. strcpy(Password,temp);

  320. GetDlgItemText(IDC_QRProssword,temp);

  321. strcpy(tmp,temp);

  322. int len = strlen(Password)-1;

  323. for (int i=0; i<=len; i++)

  324. {

  325. if (Password[i] >= 0x30 && Password[i] <=0x5A || Password[i] >= 0x60 && Password[i] <= 0x69)

  326. {

  327. if (Password[i]!= 0x40)

  328. {

  329. Cs = 1;

  330. }

  331. }

  332. else

  333. Cs = 0;

  334. }

  335. if (Cs)

  336. {

  337. if ( strcmp(Password,tmp) == 0 && strlen(Password)!=0 && strlen(tmp)!=0)

  338. {

  339. if (!AUTO(1,NULL))// 開機啟動

  340. AfxMessageBox("由于權限原因,添加開機啟動項失敗!重啟后將無法鎖屏!請解除安全軟件對本程序的攔截");

  341. if(!AUTO(2,Password))// 存儲密碼

  342. {

  343. AfxMessageBox("無法驗證密碼~ 程序將退出~");

  344. exit(1);

  345. }

  346. PostMessage(WM_CLOSE);

  347. }

  348. else

  349. {

  350. if ( strlen(Password)==0 && strlen(tmp)==0 )

  351. AfxMessageBox("密碼不允許為空!");

  352. else

  353. AfxMessageBox("兩次輸入的密碼不匹配!");

  354. SetDlgItemText(IDC_SPProssword,"");// 清空

  355. SetDlgItemText(IDC_QRProssword,"");// 清空

  356. GetDlgItem(IDC_SPProssword)-> SetFocus(); // 設置光標在第一個文本框里

  357. }

  358. }

  359. else

  360. AfxMessageBox("鎖屏密碼只允許是 數字 或 字母 ~不允許包含其他的字符!");

  361. }

  362. 【使用上一次設置的密碼】按鈕觸發的代碼:

  363. void CLock::onPassword()

  364. {

  365. if (!AUTO(1,NULL))// 開機啟動

  366. AfxMessageBox("由于權限原因,添加開機啟動項失敗!重啟后將無法鎖屏!請解除安全軟件對本程序的攔截");

  367. PostMessage(WM_CLOSE);

  368. }

  369. 【刪除上一次設置的密碼】按鈕觸發的代碼:

  370. void CLock::OnDelPassword()

  371. {

  372. // TODO: Add your control notification handler code here

  373. if (!SHDeleteKey(HKEY_CURRENT_USER,"鎖屏小工具"))

  374. {

  375. GetDlgItem(IDC_Password)->ShowWindow(SW_HIDE);// 顯示按鈕

  376. GetDlgItem(IDC_DelPassword)->ShowWindow(SW_HIDE);// 顯示按鈕

  377. GetDlgItem(IDC_TS)->ShowWindow(SW_SHOW);

  378. AfxMessageBox("清除成功!");

  379. }

  380. }

  381. 解鎖時 回車觸發的代碼

  382. void CMyDlg::OnLand()

  383. {

  384. // TODO: Add your control notification handler code here

  385. char Ts[]="敖菜像焙涕扎救蜜昂睜到廢墻臍兆狹瘟幼敖菜像---";

  386. if (Scan(Ts))

  387. MessageBox(Ts,NULL,MB_OK|MB_SYSTEMMODAL);

  388. CString tmp;

  389. char Password[MAX_PATH]={0};

  390. char WBPassword[MAX_PATH]={0};

  391.         GetDlgItemText(IDC_Password,tmp);

  392. strcpy(WBPassword,tmp);

  393. HKEY RegKey;

  394. LPBYTE   Size=new  BYTE [MAX_PATH];   // 要足夠大

  395. DWORD type=REG_BINARY;

  396. DWORD cbData=256;

  397. if(RegOpenKeyEx(HKEY_CURRENT_USER, "鎖屏小工具",

  398. 0, KEY_ALL_ACCESS, &RegKey) ==  ERROR_SUCCESS)

  399. {

  400. if ( RegQueryValueEx(RegKey,"password",NULL,&type,Size,&cbData) == ERROR_SUCCESS)

  401. {

  402. strcpy(Password,(char *)Size);// 利用DQCDEXE 全局變量通知

  403. delete []Size;

  404. }

  405. else

  406. AfxMessageBox("讀取密碼失敗!");

  407. }

  408. else

  409. AfxMessageBox("打開指定的注冊表失敗!");


  410. if (strlen(WBPassword)==0)

  411. AfxMessageBox("請輸入解屏密碼!");

  412. else

  413. {

  414. if (strcmp(WBPassword,Password) == 0)

  415. {

  416. if (RegCreateKeyEx(HKEY_CURRENT_USER,"密碼正確",0,0,REG_OPTION_NON_VOLATILE,KEY_ALL_ACCESS,NULL,&RegKey,NULL) == ERROR_SUCCESS)

  417. {

  418. RegCloseKey(RegKey);

  419. }

  420. else

  421. AfxMessageBox("修改注冊表失敗,暫時無法解鎖");

  422. }

  423. else

  424. {

  425. char Test[35];

  426. LockTime--;

  427. if (LockTime == 0)

  428. {

  429. CEdit   *pEdit   =   (CEdit   *)GetDlgItem(IDC_Password);

  430. pEdit-> SetPasswordChar(0);// 去除密碼屬性

  431. GetDlgItem(IDC_Password)->EnableWindow(0);

  432. GetDlgItem(IDC_BUTTON1)->EnableWindow(0);

  433. SetDlgItemText(IDC_Password,"對不起,由于您連續輸入密碼錯誤 3 次,三分鐘內不允許輸入密碼!");

  434. AfxMessageBox("對不起,由于您連續輸入密碼錯誤 3 次,三分鐘內不允許輸入密碼!");

  435. Sleep(180000);// 掛起三分鐘

  436. GetDlgItem(IDC_Password)->EnableWindow(1);

  437. GetDlgItem(IDC_BUTTON1)->EnableWindow(1);

  438. GetDlgItem(IDC_Password)-> SetFocus(); // 設置光標在第一個文本框里

  439. pEdit-> SetPasswordChar('*');// 設置密碼屬性

  440. LockTime=3;

  441. }

  442. else

  443. {

  444. sprintf(Test,"輸入密碼錯誤!您還有 %d 次機會",LockTime);

  445. AfxMessageBox(Test);

  446. }

  447. SetDlgItemText(IDC_Password,"");

  448. }

  449. }

  450. }
復制代碼




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:71922 發表于 2015-1-11 02:30 | 只看該作者
鎖屏小工具 V3.0更新:

   5.21日 更新:有些機器上解屏之后會彈出【程序已運行...】的對話框,本來是想防止用戶啟動多次本程序,現在想想也就不必要啦..

    應網友們要求,解決了一些BUG,整個程序重新設計,全新的界面,并去除冗余代碼,新增一些人性化的功能,例如:通過快捷鍵快速鎖屏,系統空閑時鎖屏。鎖屏時關閉顯示器等...

本想再加入手機遠程鎖屏和解屏功能,但對HTTP協議還不夠熟悉,可能會花上好一段時間,為了我的作品盡善盡美就暫且放下了。

     在介紹新功能前,先感謝【寒栤ξ玄鉄ン QQ:7389187372】反饋 V2.0版本 在Win7下無法正常使用的問題以及屏蔽不了第三方桌面插件 如QQ桌面。關于這方面的BUG,由于個人原因,并沒有去實驗及分析并解決。V3.0 版本可能也不兼容Win7,至于第三方桌面插件也尚未測試過。鎖屏小工具 V3.0 在Windows XP下測試通過。


謝謝 【寒栤ξ玄鉄ン QQ:7389178372】【愛~~徘徊~  QQ:13985874494】反饋的建議和意見

謝謝 【東東 QQ:99567177092】在 V3.0 版本中幫忙測試軟件。

謝謝 【懶·。 wangmaokun1992@qq.com(113747741213)】、還有部分網友由于聊天記錄不小心刪除,所以有些網友并沒有在列,也一并感。原本只是一個練習作品,沒想到你們會喜歡,很謝謝你們的支持...



【注意】:由于本程序采用HOOK技術,可能會導致殺軟的誤殺及攔截,在使用本程序前請將其列入信任名單。



新增功能介紹:
            【密碼提示】:好幾個網友都是因為忘記密碼而聯系到我,而這個功能是【愛~~徘徊~  QQ:13985874494】提出的建議,覺得非常不錯,就增加了整個功能,用于忘記了密碼時可以根據自己設定的密碼提示信息得到印象。感謝【愛~~徘徊~ 】o(∩_∩)o ~~
            【鎖屏圖像覺得搞笑,認為 V2.0 鎖屏圖片看,認為看,索性增加可以自由鎖屏圖片功能了。同時支持修改透明度。
            系統空閑鎖屏】:想到可能網友經常離開自己電腦,但是不想自己電腦別人動,關機麻煩,雖然可以通過系統自帶屏幕保護方式加鎖,不夠個性,增加功能,設定時間例如1分鐘,電腦沒有操作時間達到1分鐘自動鎖屏。可以同時勾選【鎖屏時關閉顯示功能,達到省點目的。通過快捷鍵 Ctrl + Alt + Shift + F9 隱藏窗口,這樣不會占用桌面空間...覺得功能非常不錯。
           鎖屏關閉顯示器顧名思義,鎖屏時關閉顯示器啦,其實不算關閉顯示器,只是顯示器處于休眠狀態。
            【快速鎖屏】:設置想過設置可以通過 Ctrl + Alt + Shift + F8 快捷鍵快速鎖屏。一般設置密碼,然后隱藏窗口,出去時候按一下快捷鍵立即鎖屏。
            【隱藏窗口】:通過 Ctrl + Alt + Shift + F8 快捷鍵隱藏窗口

程序下載:
spxgjjxz.zip (271.66 KB, 下載次數: 29)


回復

使用道具 舉報

板凳
ID:146011 發表于 2016-11-3 22:50 | 只看該作者
我來看看
回復

使用道具 舉報

地板
ID:146011 發表于 2016-11-3 23:01 | 只看該作者
鎖屏小工具
回復

使用道具 舉報

5#
ID:311041 發表于 2018-4-18 17:38 | 只看該作者
有個不情之請,您可以分享源碼嗎,想學習
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩精品人成在线播放 | 日本视频在线 | 日韩国产精品一区二区三区 | 成人性生交大免费 | 夜夜爽99久久国产综合精品女不卡 | 日韩电影免费在线观看中文字幕 | 亚州av| 91精品久久久久久久久中文字幕 | 国产一区久久 | av在线二区 | 中文字幕在线一 | 欧美一区二区三区在线播放 | 欧美一区二区三区久久精品 | 国产日本精品视频 | 国产99久久精品一区二区永久免费 | 日本一区二区三区四区 | 欧美久久久久久 | 一区二区三区四区在线视频 | 精品国产一区二区在线 | 亚洲精品免费视频 | 国产精品永久久久久久久www | 天天插天天操 | 国产日韩精品视频 | www.日本国产 | 日本一区二区不卡 | 成人欧美一区二区三区在线观看 | 亚洲精品二三区 | 亚洲精品一区二区网址 | 久久久久久黄 | 久久99精品久久久久久 | 国产精品久久一区 | 午夜播放器在线观看 | 草久视频 | 欧美精品在线播放 | 97色在线视频 | 色视频www在线播放国产人成 | 91www在线观看 | 中文字幕亚洲视频 | 在线观看av网站永久 | 国产精品久久久久久久7电影 | 日韩高清国产一区在线 |