WindowFromPoint在64位.NET Framework上无法正常运行

Tan*_*005 1 .net c# 64-bit winforms

我用C#和.NET 4.0编写了简易测试程序.

[DllImport("user32.dll")]
static extern IntPtr WindowFromPoint(int xPoint, int yPoint);

Point pt = MousePosition;
IntPtr w = WindowFromPoint(pt.X, pt.Y);
Run Code Online (Sandbox Code Playgroud)

如果它建立为32位,它可以工作.但如果它构建为64位,则会返回不相关的窗口句柄.有解决方案或替代方案吗?

Han*_*ant 8

对,那不行.WindowFromPoint()并没有采取两个参数,只需要一个.POINT类型的结构.你完全意外地用32位代码逃脱了它,幸运的是在64位模式下运行,因为它以不同的方式传递参数.

使用pinvoke.net网站查找正确的pinvoke声明.