C#在64位系统上使用user32.dll
问题描述:
在64位Windows上从64位应用程序中唤醒user32.dll是否是错误的?我已经多次成功完成了这个任务,并且从来没有发生错误,但这似乎是矛盾的。我应该寻找user64.dll吗?C#在64位系统上使用user32.dll
答
名称user32.dll
具有误导性。这是您拨打的user32.dll
的64位版本。 64位版本位于%windir%\System32\user32.dll
。
包含32位版本以兼容32位应用程序。它位于%windir%\SysWOW64\user32.dll
。您可以使用dumpbin
工具检查他们:
SYSTEM32 \ user32.dll中:
FILE HEADER VALUES
8664 machine (x64)
Syswow64资料\ user32.dll中:
FILE HEADER VALUES
14C machine (x86)
答
没有为确切同样的原因没有user64.dll你只是描述.net程序可以不可知的CPU体系结构,所以相同的代码需要在x86和x64上工作。
如果您将程序运行到x86平台,它仍然可以不做任何修改地运行。
我想,当他们命名user32.dll他们没有考虑到这些情况。
它现在是误导,但它最初命名这样来区分16和32位不是吗?但他们很难改变名字,这会打破太多的东西...... – 2009-10-08 22:04:31
是的。我清楚地记得我童年时代Windows 3.1中由“USER.EXE”引起的一般保护错误。 – 2009-10-08 22:14:33
得爱如何在64位窗口中调用System32目录:-) – Justin 2009-10-08 22:43:49