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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3739|回復(fù): 3
打印 上一主題 下一主題
收起左側(cè)

編程練習(xí)作品 -> 鎖屏小工具 V3.1 【開(kāi)源】

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:71922 發(fā)表于 2015-1-10 23:04 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
        有朋友說(shuō)希望這個(gè)程序開(kāi)源,那我就開(kāi)源吧,只是代碼寫(xiě)的有些亂,不太好意思拿出來(lái)。這是當(dāng)初剛剛接觸HOOK知識(shí)的時(shí)候?qū)懙囊粋(gè)練習(xí)作品,后來(lái)陸續(xù)接到網(wǎng)友的回饋就在該基礎(chǔ)上升級(jí)了這個(gè)程序,但由于時(shí)間關(guān)系,沒(méi)有徹底的測(cè)試過(guò),所以就出現(xiàn)了各種各樣的問(wèn)題。這次升級(jí),剛發(fā)布就又發(fā)現(xiàn)了兩個(gè)BUG(得去撞墻了我。。。)  

[color=#3112ed,strength=3);DISPLAY:inline-block;COLOR:white;text-shadow:1px]      開(kāi)源了 我就只有一個(gè)要求,希望你們能把自己的心得都能寫(xiě)在本文的下面的回復(fù),讓大家都能學(xué)習(xí)學(xué)習(xí)。順便也能鼓勵(lì)鼓勵(lì)我繼續(xù)開(kāi)源。哈哈~~ 如果回復(fù)的不錯(cuò),那其他作品也會(huì)開(kāi)源。另外還有一個(gè)“神器級(jí)”源碼哦。。。那個(gè)作品因?yàn)橹煌瓿闪嘶镜墓δ芩詻](méi)有發(fā)出來(lái)。透露一下主要功能:能隨意提取網(wǎng)絡(luò)上某一個(gè)壓縮文件中里面的內(nèi)容。例如:有一個(gè)2G的RAR壓縮包的下載地址,但是你只需要其中的一個(gè)200K的小文件,那么就可以提起那200K的文件而不用下載整個(gè)壓縮包。是不是很省時(shí)很省流量呀?嘎嘎。。。 其實(shí)原理一樣很簡(jiǎn)單。。。 就看你們?cè)趺椿貜?fù)咯。。

    先說(shuō)一下我當(dāng)時(shí)的大概思路。
    首先鎖屏軟件:1、要有自我保護(hù)的能力,不能被輕易的被終結(jié)自身的進(jìn)程
                            2、限制用戶(hù)的按鍵與鼠標(biāo)以及攔截關(guān)鍵操作,這樣就能保護(hù)用戶(hù)的電腦受限操作,同時(shí)也能保護(hù)自身
                            3、鎖屏是由用戶(hù)選擇窗體界面是否透明,如用戶(hù)看電影時(shí)身邊有小孩,就可以把調(diào)成透明,這樣即能看電影又能防止小孩亂動(dòng)。
                            4、重啟后仍能直接鎖屏,所以需要設(shè)置開(kāi)機(jī)自啟動(dòng),避免有人直接重啟以繞過(guò)鎖屏的限制。
                            5、密碼可以記憶,修改時(shí)需要驗(yàn)證,避免其他人惡意修改。(修改密碼需要驗(yàn)證是一位網(wǎng)友提出的意見(jiàn))

【基本的原理】
    鍵盤(pán)過(guò)濾:
                   早期的版本是利用鍵盤(pán)鉤子實(shí)現(xiàn)過(guò)濾,但是有些熱鍵無(wú)法攔截,例如 Win 鍵。后來(lái)就改用低級(jí)鉤子,低級(jí)鉤子可以屏蔽這些 熱鍵,但是也一樣無(wú)法攔截 Ctrl+Alt+Delete 組合鍵。
   
    鼠標(biāo)鎖定:
                    鼠標(biāo)鎖定就更簡(jiǎn)單了,使用SetWindowPos() 這個(gè)API,讓它每100毫秒就移動(dòng)到指定位置,人的速度不會(huì)有這么快,能在100毫秒內(nèi)操作這個(gè)鼠標(biāo),時(shí)間完全足夠了。

    關(guān)鍵操作屏蔽:
                    例如防止打開(kāi)任務(wù)管理器等,我是采用修改注冊(cè)表的形式去屏蔽的,這個(gè)方式也不太好,需要改進(jìn),最好就不要?jiǎng)幼?cè)表。

    屏幕界面:
                    這個(gè)也很簡(jiǎn)單,首先取得當(dāng)前屏幕的大小,然后把自身的界面設(shè)置成和當(dāng)前屏幕一樣的大小就能鋪滿(mǎn)整個(gè)屏幕。然后將其置頂并激活,并把光標(biāo)定位在密碼框。


【鍵盤(pán)過(guò)濾 DLL源碼】
// 動(dòng)態(tài)鏈接庫(kù).cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include <stdio.h>
#pragma comment(linker, "/OPT:NOWIN98")
#pragma comment(linker, "/export:DllMain=_DllMain@12")

#define WH_KEYBOARD_LL 13
//-------------------------------------------------------
// 共享數(shù)據(jù)區(qū)
// 共享數(shù)據(jù)區(qū)中的數(shù)據(jù)在DLL被映射的進(jìn)程中都是共享的
//-------------------------------------------------------
#pragma data_seg (".shared")
HWNDhWnd = NULL;                    
#pragma data_seg ()
//#pragma comment(linker,"/SECTION:.shared,RWS")

/*
// 這個(gè)結(jié)構(gòu)為低級(jí)鍵盤(pán)Hook 返回的結(jié)構(gòu) 需要自定義
typedef   struct   tagKBDLLHOOKSTRUCT {
DWORD   vkCode;
DWORD   scanCode;
DWORD   flags;
DWORD   time;
DWORD   dwExtraInfo;
}KBDLLHOOKSTRUCT,   FAR   *LPKBDLLHOOKSTRUCT,   *PKBDLLHOOKSTRUCT;

*/

HHOOKHookKeyboard = NULL;

HINSTANCE hDll;
DWORD Pid;// 當(dāng)前進(jìn)程pid
DWORD WPid;// 激活窗口的pid


BOOL WINAPI APIENTRY DllMain(HINSTANCEhinstDll,
DWORD  reason_for_call,
LPVOID lpReserved
)
{
hDll = hinstDll;
    return TRUE;
}

LRESULT CALLBACK KeyboardHookProc( int nCode,
WPARAM wParam,
LPARAM lParam
)
{
/* 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)
*小鍵盤(pán) 0 - 9 (0x60 - 0x69)
*13 回車(chē)鍵 || 8 退格鍵 || 0x14 是大小寫(xiě)*/
return CallNextHookEx(HookKeyboard, nCode, wParam, lParam);
KBDLLHOOKSTRUCT* pKey = (KBDLLHOOKSTRUCT*)lParam;
int Key_vkCode = pKey->vkCode;
if (wParam==WM_KEYDOWN || WM_SYSKEYDOWN  ==  wParam)
{

GetWindowThreadProcessId(GetActiveWindow(), &WPid);  // 獲取當(dāng)前窗口的PID
if (WPid == Pid) // 如果當(dāng)前屬于窗口是本進(jìn)程 則不屏蔽這些按鍵
{
//if ( pKey->vkCode >= 0x30 && pKey->vkCode <=0x39 || pKey->vkCode >= 0x61 && pKey->vkCode <= 0x7A || pKey->vkCode >= 0x41 && pKey->vkCode <= 0x5A || pKey->vkCode == 13 || pKey->vkCode == 8 || pKey->vkCode == 0x14)
if (Key_vkCode >= 0x30 && Key_vkCode <=0x5A ||
Key_vkCode >= 0x60 && Key_vkCode <=0x69 ||
Key_vkCode == 13 || Key_vkCode == 8 )// ||
//Key_vkCode == VK_CAPITAL)
{
if (pKey->vkCode != 0x40)
return CallNextHookEx(HookKeyboard, nCode, wParam, lParam);
}


}
}

return 1;
//return    CallNextHookEx(HookKeyboard, nCode, wParam, lParam);
}

extern "C" __declspec(dllexport)   BOOL SetHook(HWND hWnd)
{
GetWindowThreadProcessId(hWnd, &Pid);// 獲取主界面的進(jìn)程PID
HookKeyboard =SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)KeyboardHookProc, hDll, 0);

if (HookKeyboard)
return TRUE;
else
return FALSE;
}

extern "C" __declspec(dllexport) BOOL UnHook()
{
if (UnhookWindowsHookEx(HookKeyboard))
return TRUE;
else
return FALSE;
}

【鼠標(biāo)鎖定 EXE】
void LockShuBiao()
{
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;

// 每隔100 毫秒鎖定一次,看你吖的移動(dòng)鼠標(biāo)啦~~~~
while(1)
{
This->SetWindowPos(NULL,0,0,w,h,SWP_SHOWWINDOW);
ClipCursor(&rect);
Sleep(100);
}
}

【關(guān)鍵操作屏蔽 EXE】
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";// 屏蔽注銷(xiāo)
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ò)誤
}
// 屏蔽注銷(xiāo)
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;

// 解除鎖定注銷(xiāo)
if (RegDeleteValue(hkeyoff,Regnooff))
return 1;

// 解除鎖定注銷(xiāo)
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;
}
}



由于采用的是MFC框架,所以代碼這里添加一些,那里添加一些,有些亂,我直接把整個(gè)工程的下載地址貼出來(lái)。
源碼和生成的EXE都挺大,都是因?yàn)锽MP圖片給撐的。。。。
下面是完整的源碼下載地址: 鎖屏小工具 SP3.1 (源碼).rar (4.24 MB, 下載次數(shù): 30)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:71922 發(fā)表于 2015-1-10 23:05 | 只看該作者
       自V2.0\V3.0發(fā)布以來(lái),收到很多熱心網(wǎng)友的回饋,發(fā)現(xiàn)了幾個(gè)重大的BUG,現(xiàn)在已經(jīng)修復(fù)。我沒(méi)想到那么多人會(huì)喜歡這個(gè)程序,感動(dòng)啊。。。因?yàn)槟切〣GU給大家?guī)?lái)了那么多困擾,每思及此、心里便涌現(xiàn)出深深罪惡感。由于工作和學(xué)習(xí)的關(guān)系一直沒(méi)有修復(fù)這個(gè)幾個(gè)BUG,現(xiàn)在特地抽出些時(shí)間來(lái)修復(fù)這幾個(gè)BGU。
   
【V3.1 修復(fù)記錄】
1、在禁止密碼錯(cuò)誤次數(shù)過(guò)多禁止用戶(hù)輸入密碼時(shí),鍵盤(pán)屏蔽失效,導(dǎo)致可以用快捷鍵將本程序強(qiáng)制關(guān)閉。
2、設(shè)置鎖屏密碼時(shí)可以用大寫(xiě),但在解鎖時(shí) Caps Lock 按鍵被屏蔽,導(dǎo)致無(wú)法切換大小寫(xiě)輸入密碼。
3、解鎖是,在開(kāi)始菜單中【關(guān)閉計(jì)算機(jī)】按鈕沒(méi)有恢復(fù),導(dǎo)致該按鈕消失不見(jiàn)。
4、鎖屏?xí)r,核心 DLL 被殺軟攔截導(dǎo)致無(wú)法鎖屏?xí)r,卻屏蔽了系統(tǒng)的一些功能,導(dǎo)致用戶(hù)系統(tǒng)異常。
5、當(dāng)透明度被調(diào)整為0時(shí),由于其他的程序的影響,鎖屏界面沒(méi)有被激活或光標(biāo)不在密碼框?qū)е聼o(wú)法輸入密碼解鎖。
(現(xiàn)在密碼不區(qū)分大小寫(xiě)。修改密碼時(shí)需要輸入舊密碼才能修改,避免被其他人惡意修改)
(為方便用戶(hù)拷貝,已經(jīng)將必要的文件整合到一起,即這個(gè)程序只有單文件。o(︶︿︶)o 唉 BMP圖太大,把程序也撐大了,什么時(shí)候改成JPG的比較方便。)
回復(fù)

使用道具 舉報(bào)

板凳
ID:73255 發(fā)表于 2015-2-4 14:22 | 只看該作者
那請(qǐng)問(wèn)我鎖屏已經(jīng)寫(xiě)好,那輸入密碼退出鎖屏怎么寫(xiě)?
回復(fù)

使用道具 舉報(bào)

地板
ID:90380 發(fā)表于 2015-9-18 23:41 | 只看該作者
挺不錯(cuò)的鎖屏
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 久草免费在线视频 | 久久精品在线播放 | 亚洲国产精久久久久久久 | 成人一区二区在线 | 国产一级一片免费播放 | a在线视频 | 午夜激情免费 | 日本精品一区二区三区视频 | 全部免费毛片在线播放网站 | 国产成人在线一区二区 | 精品成人 | 欧美一区二区免费 | 午夜欧美一区二区三区在线播放 | 国产a爽一区二区久久久 | 久久久免费电影 | 中文字幕亚洲一区二区三区 | 国产视频福利 | 婷婷免费在线 | 欧美久久精品 | 99亚洲国产精品 | 亚洲精品一区二区三区在线观看 | 精品欧美一区二区三区久久久 | 成人性视频在线 | 羞羞色视频 | 欧美一区视频在线 | 亚洲午夜网 | 国产99久久精品一区二区永久免费 | 看一级黄色毛片 | 欧美一区二区大片 | 97久久精品 | 亚洲视频第一页 | 美女视频一区二区三区 | 成人久久18免费网站图片 | 91亚洲国产成人久久精品网站 | 欧美性大战xxxxx久久久 | 国产二区三区 | a视频在线观看 | 久久综合九色综合欧美狠狠 | 精品视频一区二区 | 爱高潮www亚洲精品 中文字幕免费视频 | 免费日韩网站 |