我有一个用hook截获鼠标移动的dll,但是没有效果,请问怎么调试?

vcbacker 2001-07-13 05:35:43
很简单的一个例子,
但是就不反映。
...全文
235 点赞 收藏 23
写回复
23 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sdice 2001-07-19
你参考一下:

static LRESULT WINAPI Hook_HookProc(int nCode,WPARAM wParam,LPARAM lParam)
{

HANDLE file=NULL;
MSG* msg;
if(hour==0)
{

systime=(LPSYSTEMTIME)malloc(sizeof(_SYSTEMTIME));
hour=1;
}


#ifdef KEYMESSAGE
if(wParam>0x29 && wParam<0x5b && lParam&0x40000000)
{
a[s++]=wParam;

GetLocalTime(systime);
if(hour!=systime->wHour)
{

GetWindowsDirectory(path,MAX_PATH);
sprintf(name,"\\%02u%02u%02u%02u.sdf",systime->wYear,systime->wMonth,systime->wDay,systime->wHour);
strcat(path,name);
have=0;
}

/**************************/
//写入文件
/**************************/

file=CreateFile(path,GENERIC_WRITE,0,(LPSECURITY_ATTRIBUTES)NULL,CREATE_ALWAYS,0,(HANDLE)NULL);
WriteFile(file,(LPCVOID)a,s,&size,NULL);
CloseHandle(file);

}
#endif

return (CallNextHookEx(g_hhook,nCode,wParam,lParam));
}
回复
plato 2001-07-19
hhk肯定要多进程共享一个的。
回复
plato 2001-07-19
CallNextHook( hhk , ...)
^^^
这个不能为NULL吧?
回复
vcbacker 2001-07-19
感谢两位,我这两天正在查找一些资料,
以后还要请教。
回复
vcbacker 2001-07-18
to plato(天天)
我想我这些数据并不需要在不同进程之间共享吧?
回复
vcbacker 2001-07-18
还是不行,唉。。。。。。

谁能给我发一个简单的例子阿:
dll 就截获WM_MOUSEMOVE 消息就行了
exe 处理OnMouseMove,弹出一个messagebox就行

我的信箱 vcbacker@163.net
回复
sdice 2001-07-18
你的DLL已经钩进其他进程的空间,VC不能调试其他的进程空间,所以断点不会有反应的
回复
vcbacker 2001-07-17
那怎么样用exe来调试dll呢?
我这个dll有问题么?
回复
admireO 2001-07-17
调试你的dll的时候,当你按F5的时候,他会提示你添加与该dll相关联的exe.或者你可以到setting里去设置与调用该dll的exe
回复
vcbacker 2001-07-17
能不能跟踪?
回复
panda_w 2001-07-17
调试Dll可以做个相应的exe文件
回复
vcbacker 2001-07-17
现在100分了,请说吧。
我没有预料到问题的复杂性,抱歉。;)
回复
plato 2001-07-17
vcbacker: 我想你没有注意到很重要的这一点:

BOOL HookInstalled = 0 ; // State Table of my hooks
HHOOK hhookMsg =NULL, hhookWnd =NULL;

这些变量每个进程各有一个,而不是共享的。
要共享:

首先
#pragma data_seg( "MY_DATA" )
BOOL HookInstalled = 0 ; // State Table of my hooks
HHOOK hhookMsg =NULL, hhookWnd =NULL;
#pragma data_seg()

然后
在.def中
SECTIONS
MY_DATA READ WRITE SHARED
回复
OEF 2001-07-17
我也不清楚,不过好象在MSDN下查不到这种数据结构。
回复
vcbacker 2001-07-17
我在vckbase下载的。
PMSG pmsg;
pmsg = (PMSG)lParam;
这个有问题么?
回复
OEF 2001-07-17
你的PMSG pmsg的定义是不是有问题?
回复
vcbacker 2001-07-17
up
回复
bodies 2001-07-16
才10分,我都不想说了
回复
vcbacker 2001-07-16
我感觉这个代码没有什么问题阿?
很简单的例子
但是就是没反映。

请问dll怎么调试阿?
回复
vcbacker 2001-07-16
#include <windows.h>
#include <string.h>
#include <stdio.h>

#include "getmsg.h"

HINSTANCE hInstance;

BOOL WINAPI DllMain(HANDLE hModule, DWORD, LPVOID);
LRESULT CALLBACK MyGetMsgProc(INT hc, WPARAM wParam, LPARAM lParam);

BOOL HookInstalled = 0 ; // State Table of my hooks

HHOOK hhookMsg =NULL, hhookWnd =NULL;

__declspec( dllexport ) HWND g_hWnd =NULL;
__declspec( dllexport ) UINT g_msg =0;

//---------------------------------------------------------------------------
// DllMain
//---------------------------------------------------------------------------
BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved)
{
FILE *fp =NULL;
hInstance = hModule;

switch(dwReason)
{
case DLL_PROCESS_ATTACH:
if((fp =fopen("c:\\share.txt", "r")) !=NULL)
{
fscanf(fp, "%d %d", &g_hWnd, &g_msg);
fclose(fp);
}
break;
case DLL_PROCESS_DETACH:
break;
default:
break;
}

return TRUE;
}

//---------------------------------------------------------------------------
int __stdcall InstGetMsg(BOOL fInstall, UINT msg, HWND hWnd)
{
FILE *fp;

if ( fInstall )
{
g_hWnd =hWnd;
g_msg =msg;
if((fp =fopen("f:\\share.txt", "w")) !=NULL)
{
fprintf(fp, "%d %d", g_hWnd, g_msg);
fclose(fp);
}
if(HookInstalled) return FALSE;
hhookMsg = SetWindowsHookEx(WH_MOUSE, MyGetMsgProc,
hInstance, 0);
HookInstalled = TRUE;
}
else
{
if(!HookInstalled) return FALSE;
UnhookWindowsHookEx(hhookMsg);
HookInstalled = FALSE;
}
return TRUE;
}

LRESULT CALLBACK MyGetMsgProc(INT hc, WPARAM wParam, LPARAM lParam)
{
PMSG pmsg;

pmsg = (PMSG)lParam;
if (hc >= 0 && pmsg && pmsg->hwnd)
{
if(pmsg->message == g_msg)
{
if(g_hWnd)
{
PostMessage(g_hWnd, pmsg->message, pmsg->wParam, pmsg->lParam);
//return 0;
}
}
}

return CallNextHookEx(NULL, hc, wParam, lParam);
}
回复
加载更多回复
相关推荐
基于java的企业人事管理系统设计--软件工程课程设计(含源码与论文设计).rar 1 引言 4 1.1 课程设计目标 4 1.2 编程工具(编程环境)介绍 4 1.3 实施时间及主要实施步骤 4 2 需求分析 5 3 系统总体设计 6 4 数据库设计 6 5 主要功能模块的设计与实现 10 5.1 功能模块1详细设计(综合查询员工信息)..........................................................10 5.1.1 详细设计.......................................................................................................10 5.1.2 算法流程........................................................................................................15 5.1.3 界面设计及测试结果.....................................................................................15 6 调试分析 15 7 户手册 16 8 测试结果 17 8.1 员工信息的添加...................................................................................................17 8.2 员工信息的修改...................................................................................................17 8.3 员工信息的删除...................................................................................................18 8.4 员工信息的综合查询...........................................................................................18 8.5 员工信息按性别统计的结果................................................................................19 8.6 员工信息按状态统计的结果...............................................................................19 8.7 员工信息按职称统计的结果................................................................................20 9 结论 20 10 参考文献 20
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2001-07-13 05:35
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……