从32位进程设置64位长窗口?

时间:2015-01-27 08:39:17

标签: windows winapi

我有一个32位应用程序需要将64位窗口长值设置为属于64位进程的窗口。当我尝试从32位进程调用SetWindowLong时,只设置64位值的低dword(我在调试64位进程时看到它),显然只返回64位值的低dword调用者(因为函数返回LONG,这是32位值)。函数SetWindowLongPtr不会导出32位版本的user32.dll。我试图反汇编SetWindowLongPtr源代码,看它是否只是syscall之上的一些层,但该函数实际上是巨大的,并调用其他几个未记录的函数。如何从32位进程设置64位窗口长值?不能将32位应用程序重建为x64目标。

1 个答案:

答案 0 :(得分:2)

有些事情你无法从32位仿真器中做到。这是其中之一。从64位进程调用SetWindowLongPtr以实现您的目标。您不必将整个应用程序转换为32位,但您需要一个64位进程来完成此特定任务。