我有一个用户正在Win7上运行我的Winforms应用程序。我的应用程序允许用户从打开的Excel电子表格中选择行,并将它们拖放到应用程序上。但是,该用户无法执行拖放。游标更改为"no“游标(带线的小圆圈),操作将不完成。
我正在研究拖放和Win7,以及我发现的所有指向UAC和/或UIPI的东西。我正在寻找一些解决方案,但不确定以下任何一种方法是否有效:
。
我不知道这是什么问题。我的应用程序通常运行在C:/Documents和Settings/.(C)/用户/.( Win7)。它是从物质跑出来的吗?拖放不工作是因为用户没有足够的权限运行我的应用程序吗?他的Excel和我的应用程序在不同的权限级别上吗?如果是这样,那又能做些什么呢?请注意,尽管我的应用程序允许用户直接拖动文件,但这也不起作用。
另外,我有没有办法让用户用其他应用程序来重现这个问题?有没有Win7附带的应用程序,他可以看到同样的问题。例如,可以使用记事本复制吗?
谢谢。
发布于 2010-12-20 17:41:44
由UIPI解释这个问题是一个很长的过程。这与用户是否作为管理员登录没有任何关系,这并不影响UAC,而且您的程序也将使用相同的帐户运行。UIPI阻止D+D的唯一方法是当你的程序被提升,而Excel没有被提升。
提升自己需要工作,而不是偶然的。您必须包含一个清单,以便用户获得UAC提示符,您将知道这一点。或者用户必须更改桌面快捷方式并勾选“以管理员身份运行此程序”选项,她知道这一点。虽然UIPI可以绕过Windows (ChangeWindowMessageFilter),但是它不能拖放,所以如果有任何提升,那么您就会陷入困境。最终的测试是简单地要求用户将UAC滑块放下来。
更可能的情况是,您的DragEnter事件处理程序对它看到的数据不满意,因此不分配e.Effect属性。如果您无法在站点上获得调试器,那么编写一个小的测试程序来记录e.Data.GetFormats()的值,再加上您用来检查drop是否可以接受的任何内容。别忘了显而易见的一点:用户只是在摸索拖拽。
https://stackoverflow.com/questions/4491998
复制相似问题