C# WindowFromPoint不';无法在64位.NET Framework上正常工作

C# WindowFromPoint不';无法在64位.NET Framework上正常工作,c#,.net,winforms,64-bit,C#,.net,Winforms,64 Bit,我用C#和.NET4.0编写了简易测试程序 [DllImport("user32.dll")] static extern IntPtr WindowFromPoint(int xPoint, int yPoint); Point pt = MousePosition; IntPtr w = WindowFromPoint(pt.X, pt.Y); 如果这个构建为32位,它就可以工作。但如果它构建为64位,则会返回一个不相关的窗口句柄。有解决方案或替代方案吗?对,那是行不通的。WindowF

我用C#和.NET4.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声明。

对,这不起作用。WindowFromPoint()不接受两个参数,只接受一个。一种类型为POINT的结构。您在32位代码中侥幸逃脱了这一厄运,因为它以不同的方式传递参数,所以在64位模式下运气不佳


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

我毫无疑问地接受了互联网上的建议。很遗憾,PInvoke.net也列出了两个有争议的备选方案,这是完全错误的:/我毫无疑问地接受了互联网上的建议。我将立即设置一个参数指向。遗憾的是,PInvoke.net也列出了两个经过参数论证的备选方案,这完全是错误的:/Windows XP Pro 64位-运行32位应用程序WindowFromPoint会从堆栈中删除2个32位整数,而不管文档中怎么说。hi Prl。请向官方或公认的权威机构证实声明。我们欢迎这样的声明作为评论,而不是回答。我很感激在代表1,你不能发表评论,但这不是一个“好的”或“可接受的”回答。@Pri,你发表了一个强有力的声明,但没有指出如何解决问题。试着为Tank2005提供一个替代方案来做他想做的事情,并提供一些参考或测试来证明你所说的。Windows XP Pro 64位-运行32位应用程序WindowFromPoint会从堆栈中删除2个32位整数,而不管文档中怎么说。hi Prl。请向官方或公认的权威机构证实声明。我们欢迎这样的声明作为评论,而不是回答。我很感激在代表1,你不能发表评论,但这不是一个“好的”或“可接受的”回答。@Pri,你发表了一个强有力的声明,但没有指出如何解决问题。试着为Tank2005提供一个替代方案来做他想做的事情,并提供一些参考或测试来证明你所说的。