我用 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 位,将返回一个不相关的窗口句柄。是否有解决方案或替代方案?
最佳答案
是的,那行不通。 WindowFromPoint() 不接受两个参数,它只接受一个。 POINT 类型的结构。您在 32 位代码中侥幸逃脱了它,运气在 64 位模式下用完了,因为它以不同的方式传递参数。
使用 pinvoke.net 网站查找正确的 pinvoke 声明。
关于c# - WindowFromPoint 在 64 位 .NET Framework 上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12949753/