写一个基于全局消息钩子的键盘记录程序,遇到一个技术问题:怎样把远程DLL线程截获的键盘消息传递给主程序处理并显示。初步想出的解决方案是在主程序中建立一个函数用来接收截获的键盘消息并处理和显示,把这个函数的指针通过StartHook函数在挂钩子的时候传给远程DLL线程,远程DLL线程截获消息后通过这个指针调用主程序的函数进行消息处理。
一开始只考虑需要得到钩子函数的lParam值,于是写了一个只有一个参数的主程序函数:
在创建一个基于全局消息钩子的键盘记录程序时,作者遇到了如何将远程DLL线程捕获的键盘消息传递给主程序处理的问题。最初,通过传递函数指针来实现这一目标,但在扩展功能时,增加参数导致了程序崩溃。分析后发现是由于_cdecl和_stdcall调用约定的不同导致参数传递错误。通过在函数指针定义和调用处添加_stdcall修饰符,最终解决了这个问题。
写一个基于全局消息钩子的键盘记录程序,遇到一个技术问题:怎样把远程DLL线程截获的键盘消息传递给主程序处理并显示。初步想出的解决方案是在主程序中建立一个函数用来接收截获的键盘消息并处理和显示,把这个函数的指针通过StartHook函数在挂钩子的时候传给远程DLL线程,远程DLL线程截获消息后通过这个指针调用主程序的函数进行消息处理。
一开始只考虑需要得到钩子函数的lParam值,于是写了一个只有一个参数的主程序函数:

被折叠的 条评论
为什么被折叠?