我正在调试一个32位到64位平台的移植。仅在64位版本上,有一个错误导致其中一个窗口不能正确响应消息。因此,我并排运行它们,并尝试在它们上使用Spy++。
原来您不能在64位应用程序上使用Spy++ 32,反之亦然。事实证明,你不能同时运行Spy++ 32位和64位版本。
这到底是怎么回事,我该如何解决这个问题。有没有等价物可以同时拦截32位和64位版本的消息?
发布于 2013-10-03 00:19:33
Spy使用消息钩子截获消息。消息挂钩必须位于DLL中,并且不能将32位DLL加载到64位进程中(反之亦然)。至于不能同时运行两个版本,我怀疑这是因为钩子DLL使用相同的方法发送到应用程序,所以您只能有一个应用程序运行。
实现单个拦截器将非常困难,原因有两个:
SetWindowsHookEx不允许32位应用程序在64位进程中设置钩子(反之亦然),因此您需要两个exes (和两个‘ll)来实现这一点,同时还需要一些进程间通信机制来将结果传递给公共主机;https://stackoverflow.com/questions/19141132
复制相似问题