您的位置:首页 > 其它

PPPOE登录程序三(lock动态库部分)

2010-08-20 14:00 162 查看
//虽然代码是自己写的,但是还是感觉ScanMasterWnd()这个函数蛮蠢的,这个函数要扩展成可以动态添加黑名单的功能。主意KeyboardProc函数里面如何屏蔽ALT+F4的,还有如何hook,本模块不是全局钩子。
#include <windows.h>
#include <tchar.h>

HHOOK g_hook;

void DisableAltF4Key();
void ShowTaskBar(bool isShow);

BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}

_declspec(dllexport) bool LockWnd(HWND wnd)
{
int width_screen=::GetSystemMetrics(SM_CXSCREEN);
int height_screen=::GetSystemMetrics(SM_CYSCREEN);

if(!::SetWindowPos(wnd,HWND_TOPMOST,0,0,width_screen,height_screen,SWP_SHOWWINDOW))
return 0;
DisableAltF4Key();
ShowTaskBar(0);

return 1;

}

void ShowTaskBar(bool isShow)
{
HWND hwnd;
if(isShow)
{
hwnd=::FindWindow(_T("Shell_TrayWnd"),NULL);
ShowWindow(hwnd,1);
}
else
{
hwnd=::FindWindow(_T("Shell_TrayWnd"),NULL);
ShowWindow(hwnd,0);
}
}

_declspec(dllexport) bool UnLockWnd(HWND wnd)
{

::ShowWindow(wnd,SW_HIDE);
::UnhookWindowsHookEx(g_hook);
ShowTaskBar(1);

return 0;
}

_declspec(dllexport) void ScanMasterWnd()
{
HWND hwnd1,hwnd2,hwnd3;
while(true)
{
hwnd1=::FindWindow(NULL,_T("注册表编辑器"));
hwnd2=::FindWindow(NULL,_T("windows 任务管理器"));
hwnd3=::FindWindow(NULL,_T("系统配置实用程序"));
::SendMessage(hwnd1,WM_CLOSE,0,0);
::SendMessage(hwnd2,WM_CLOSE,0,0);
::SendMessage(hwnd3,WM_CLOSE,0,0);
Sleep(500);
}
}

LRESULT CALLBACK KeyboardProc( int code,
WPARAM wParam,
LPARAM lParam
)
{
if(code<0)
return ::CallNextHookEx(g_hook,code,wParam,lParam);
if(wParam==VK_ESCAPE
||wParam==VK_F4&&(lParam>>29)==1
)
{
return 1;
}
return ::CallNextHookEx(g_hook,code,wParam,lParam);

}

void DisableAltF4Key()
{
g_hook=::SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,NULL,::GetCurrentThreadId());

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: