2009-10-08 104 views
24

在64位Windows上从64位应用程序中唤醒user32.dll是否是错误的?我已经多次成功完成了这个任务,并且从来没有发生错误,但这似乎是矛盾的。我应该寻找user64.dll吗?C#在64位系统上使用user32.dll

回答

30

名称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) 
+0

它现在是误导,但它最初命名这样来区分16和32位不是吗?但他们很难改变名字,这会打破太多的东西...... – 2009-10-08 22:04:31

+0

是的。我清楚地记得我童年时代Windows 3.1中由“USER.EXE”引起的一般保护错误。 – 2009-10-08 22:14:33

+2

得爱如何在64位窗口中调用System32目录:-) – Justin 2009-10-08 22:43:49

0

没有为确切同样的原因没有user64.dll你只是描述.net程序可以不可知的CPU体系结构,所以相同的代码需要在x86和x64上工作。
如果您将程序运行到x86平台,它仍然可以不做任何修改地运行。
我想,当他们命名user32.dll他们没有考虑到这些情况。

相关问题