hook问题

贪玩的老鼠 2009-07-30 04:35:16
我做了一个HOOK键盘DLL程序,有几点没弄清楚.

如果HOOK DLL是采用MFC DLL的话,
好象只能接收调用hook dll程序的DLL.
如果HOOK DLL采用的是win32 dll动态库
只要按键盘,它就能接收消息?
这是为什么啊?

还有就是,如果我采用win32 dll动态库
如果我导出的函数带有一个参数,就会出现错误(这个错误我明白,函数调用方式不一致).

于是我就改了一下
__declspec( dllexport ) void WINAPI fn(long n);

可在mfc中动态加载(注意是动态加载),找不到导出函数.
这是为什么啊?
...全文
127 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
rdsnow 2009-08-01
  • 打赏
  • 举报
回复
__declspec( dllexport ) void WINAPI fn(long n); 


因为你修改了调用约定,生成的 dll 也将修改函数名

可以在前面加上 extern "c"

用 def 定义输入函数名称也是好办法
net_control 2009-08-01
  • 打赏
  • 举报
回复
函数的定义有好几种方法的哈
flyoxs 2009-07-31
  • 打赏
  • 举报
回复
不懂HOOK,帮顶
贪玩的老鼠 2009-07-31
  • 打赏
  • 举报
回复
又沉下去了,自己顶一下
luckyboy101 2009-07-31
  • 打赏
  • 举报
回复
用dumpbin查看一下导出函数的名称
jcwinner 2009-07-31
  • 打赏
  • 举报
回复
个人也碰到过,只要用静态调用就没有问题,动态就有问题,情况不知。 帮顶!
zyq1600356618 2009-07-31
  • 打赏
  • 举报
回复
个人喜欢用导出文件导出函数,这样就不用管什么约定了...
还何以隐藏导出的函数名...

在工程目录下建一个个工程名一样的文件 ,后缀改为".def"的,然后加上几个字段导出就可以了,导出函数名不发生名字改编,可以用dumpbin或者dependencies查看导出函数

还可以用导出函数序号加载函数,那样就不用管函数名是啥样了
Ghost90 2009-07-30
  • 打赏
  • 举报
回复
不好意思没注意
这样呢?一C语言的 约定方式 导出
extern "C" __declspec( dllexport ) void WINAPI fn(long n);
贪玩的老鼠 2009-07-30
  • 打赏
  • 举报
回复
WINAPI就是_stdcall
Ghost90 2009-07-30
  • 打赏
  • 举报
回复
__declspec( dllexport ) void _stdcall WINAPI fn(long n);

应该约定以_stdcall方式导出函数。

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

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

试试用AI创作助手写篇文章吧