我有一个32位应用程序,需要设置一个64位窗口长的值,属于一个64位进程的窗口。 当我尝试从32位进程调用SetWindowLong时,只设置了64位值的低dword(我在debugging64位进程时看到了它),显然只有64位值的低dword被返回给调用者(因为函数返回LONG,这是32位值)。 函数SetWindowLongPtr不导出在32位版本的user32.dll中。 我试图反汇编SetWindowLongPtr源代码,看看它是否只是系统调用上面的一层,但function实际上是巨大的,并调用其他几个未公开的函数。 如何从32位进程设置64位窗口长整型值? 将32位应用程序重build为x64目标不是一个选项。
有些东西,你不能从32位模拟器。 这是其中之一。 从64位过程调用SetWindowLongPtr来实现您的目标。 你不必将整个应用程序转换为32位,但你需要一个64位的进程来完成这个特定的任务。