我用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位,则会返回不相关的窗口句柄。有解决方案或替代方案吗?
答案 0 :(得分:8)
是的,那不行。 WindowFromPoint()做不取两个参数,它只需要一个。 POINT类型的结构。你完全意外地以32位代码逃脱了它,运气以64位模式运行,因为它以不同的方式传递参数。
使用pinvoke.net网站查找正确的pinvoke声明。