我的程序如下:
变量定义:
#pragma data_seg("Shared")
HHOOK g_hRecord = NULL;
HHOOK g_hPlayBack = NULL;
HINSTANCE g_hInstance = NULL;
#pragma data_seg()#pragma comment(linker, "/section:Shared,rws")static BOOL g_bCanPlay = TRUE;
static BOOL g_bCanRec = TRUE;
static BOOL g_bDelay = FALSE;
static EVENTMSG MsgBuffer[MAX_BUFFER_SIZE];
static int g_iRec, g_iPlay;Hook函数:
if (code < 0) {
return CallNextHookEx(g_hRecord, code, wParam, lParam);
}
else if (code == HC_SYSMODALOFF) {
g_bCanRec = TRUE;
}
else if (code == HC_SYSMODALON) {
g_bCanRec = FALSE;
}
else if ((g_bCanRec) && (code == HC_ACTION)) {
MsgBuffer[g_iRec] = *((PEVENTMSG)(lParam));
g_iRec++;
}
if (g_iRec == MAX_BUFFER_SIZE) {
UnhookWindowsHookEx(g_hRecord);
}
return TRUE;
我在程序结束后 我查看MsgBuffer为空 这是为什么?
变量定义:
#pragma data_seg("Shared")
HHOOK g_hRecord = NULL;
HHOOK g_hPlayBack = NULL;
HINSTANCE g_hInstance = NULL;
#pragma data_seg()#pragma comment(linker, "/section:Shared,rws")static BOOL g_bCanPlay = TRUE;
static BOOL g_bCanRec = TRUE;
static BOOL g_bDelay = FALSE;
static EVENTMSG MsgBuffer[MAX_BUFFER_SIZE];
static int g_iRec, g_iPlay;Hook函数:
if (code < 0) {
return CallNextHookEx(g_hRecord, code, wParam, lParam);
}
else if (code == HC_SYSMODALOFF) {
g_bCanRec = TRUE;
}
else if (code == HC_SYSMODALON) {
g_bCanRec = FALSE;
}
else if ((g_bCanRec) && (code == HC_ACTION)) {
MsgBuffer[g_iRec] = *((PEVENTMSG)(lParam));
g_iRec++;
}
if (g_iRec == MAX_BUFFER_SIZE) {
UnhookWindowsHookEx(g_hRecord);
}
return TRUE;
我在程序结束后 我查看MsgBuffer为空 这是为什么?
用memcpy()函数。
MsgBuffer[g_iRec] = *((PEVENTMSG)(lParam));
我觉得这句话就是把lParam的内容复制MsgBuffer[g_iRec] 应该不用memcpy的我看了自己的MsgBuffer发现里面有东西 但是就是程序不能跑起来
我看EVENTMSG结构的message项大多是256 512左右的消息请大家帮忙看看问题可能出在哪里