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());
}
#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());
}
相关文章推荐
- PPPOE登录程序四(connect动态库部分)
- PPPOE登录程序一(主程序部分locked)
- PPPOE登录程序二(启动进程部分plck)
- PPPOE登录程序五(配置程序部分)
- c# 编写winform登录注册程序(二,注册部分)
- 云盘小程序(Hbase数据库):注册,登录部分
- ASP MVC5.0 XML存取数据的登录程序(1) 注册部分
- 学生选课系统(登录界面部分程序)
- 同学让我做一个基于PPPOE的登录程序
- c# 编写winform登录注册程序(一,登录部分)
- Python学习笔记(控制台程序):模拟登录
- 第五部分 给程序添加退出事件
- 调试Flex 4程序-- 第三部分:变量视图,观察点,和定位到指定行命令
- 设A和B是两个单链表,其表中元素递增有序,使用一算法将A和B归并成一个案元素递减有序的单链表C(该程序中的功能包含了上几个博客中的部分功能)
- 与符号表分离程序或动态库, 如何用GDB调试
- 话单采集测试(第一次更新修正用例部分,更新了程序Bug追加了一些功能)
- 浅谈如何在C#Winform程序中正确使用登录窗体
- 新手教你学Spring MVC4.0+MyBatis+MySQL5.0实现简单用户注册登录程序(一)
- LoadRunner自带程序登录功能关联演示
- Android 6.0 ROOT 后部分程序无法检测 ROOT 权限问题