我有一个32位应用程序需要将64位窗口长值设置为属于64位进程的窗口。当我尝试从32位进程调用SetWindowLong时,只设置64位值的低dword(我在调试64位进程时看到它),显然只返回64位值的低dword调用者(因为函数返回LONG,这是32位值)。函数SetWindowLongPtr不会导出32位版本的user32.dll。我试图反汇编SetWindowLongPtr源代码,看它是否只是syscall之上的一些层,但该函数实际上是巨大的,并调用其他几个未记录的函数。如何从32位进程设置64位窗口长值?不能将32位应用程序重建为x64目标。
答案 0 :(得分:2)
有些事情你无法从32位仿真器中做到。这是其中之一。从64位进程调用SetWindowLongPtr
以实现您的目标。您不必将整个应用程序转换为32位,但您需要一个64位进程来完成此特定任务。