2

我用 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);

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

4

1 回答 1

10

对,那行不通。WindowFromPoint() 不需要两个参数,它只需要一个。POINT 类型的结构。你在 32 位代码中侥幸逃脱了它,运气在 64 位模式下用完了,因为它以不同的方式传递参数。

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

于 2012-10-18T08:45:30.383 回答