这是错误的的PInvoke user32.dll中的64位Windows,从64位应用程序? 我已经成功地做到了这一点很多次,从来没有一个错误,但它似乎是矛盾的。 我应该寻找user64.dll呢?
Answer 1:
该名user32.dll
是一种误导。 这是64位版本的user32.dll
你打电话。 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)
Answer 2:
没有user64.dll您刚才描述的,所以相同的代码需要在x86和x64工作.NET程序可以是不可知的CPU架构完全一样的原因。
如果你把你的程序在x86平台它仍然没有任何修改即可运行。
我想,当他们命名user32.dll中,他们没有考虑到这些情况。
文章来源: C# PInvoking user32.dll on a 64 bit system