本帖最后由 未名 于 2014-11-17 17:02 编辑
应用程序:链接: http://pan.baidu.com/s/1dD3YdpB 密码: ntkc
源码:链接: http://pan.baidu.com/s/1pJG4VKB 密码: avqk
小弟第一次发帖,不知道格式对不对。
————————————————————————————————————[C++] 纯文本查看 复制代码 #define _WIN32_WINNT 0x0500 // PKBDLLHOOKSTRUCT
#include <windows.h>
#include <time.h> //产生随机数
//设置g_hWnd共享,禁止dll拷贝
#pragma data_seg("MyHook")
HWND g_hWnd = NULL; //窗口句柄
#pragma data_seg()
#pragma comment(linker,"/section:MyHook,RWS")
HHOOK g_hlowKeyHook = NULL; //低级键盘钩子句柄
int flag = 0;
//定时器回调函数
void CALLBACK TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime)
{
int x, y;
x = GetSystemMetrics(SM_CXSCREEN); //屏幕宽度
y = GetSystemMetrics(SM_CYSCREEN); //屏幕高度
x = rand()%x; //产生随机点击位置
y = rand()%y; //随机位置
::SetCursorPos(x,y); //移动鼠标
}
//低级键盘钩子
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
PKBDLLHOOKSTRUCT LowKey = NULL; //该结构体包含底层键盘输入事件的信息
if (nCode == HC_ACTION) //HC_ACTION 表示有消息
{
LowKey = (PKBDLLHOOKSTRUCT)lParam;
switch (wParam)
{
case WM_KEYDOWN:
{
if (LowKey->vkCode == VK_F8) // 后门
{
//关闭定时器
if(KillTimer(g_hWnd,1))
{//关闭程序
SendMessage(g_hWnd, WM_CLOSE, 0, 0); //发送关闭主窗体消息
UnhookWindowsHookEx(g_hlowKeyHook); //卸载低级键盘钩子
}
}
else if (LowKey->vkCode == VK_SPACE)//用户按下空格
{
//关闭定时器
if (1 == flag)
{
KillTimer(g_hWnd,1);
flag = 0;
}
else
{
//建立定时器
SetTimer(g_hWnd,1,10,(TIMERPROC)TimerProc);
flag = 1;
}
}
break;
}
case WM_SYSKEYDOWN:
case WM_KEYUP:
case WM_SYSKEYUP:
default:
break;
}
}
return CallNextHookEx(g_hlowKeyHook,nCode,wParam,lParam); //传给下一个钩子
}
//安装钩子、开启定时器
void SetHook(HWND hWnd) //为了操作窗体,我们将主窗体的句柄传进去
{
g_hWnd = hWnd; //将主窗体句柄传给全局句柄,然后便于在上面的钩子过程中使用
//建立定时器
SetTimer(g_hWnd,1,10,(TIMERPROC)TimerProc);
srand(time(NULL)); //设置随机种子
flag = 1;
//安装低级键盘钩子
g_hlowKeyHook = SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,GetModuleHandle("GKeyBoardHook"),0);
}
大家好,我是win7系统,我也不知道xp系统无效的原因是什么,我把源代码放出来了。在1楼。理论上应该不会出现这样的问题额。。。。
鼠标停不下来,你可以启动任务管理器:
1、用Tab键+↓键,找到要关闭的进程。
2、按ATL+E关闭该进程。(这些快捷键全是win7的,可能xp不是这样)
|