我有一个C#应用程序,需要使用runas进行提升才能运行某些功能.我现在遇到的问题是,我有一个拖放附加的图片框在runas之后无法正常工作.我整晚都在看帖子,所以我很熟悉原因.我还发现了很多关于通过过滤器接受这些消息的信息.http://msdn.microsoft.com/en-us/library/ms632675(v=VS.85).aspx
我还没有找到,我希望有人可以帮我解决这个问题,代码是如何以及在何处实现的.我一直在尝试各种方法,我无法让它工作.这是一段代码,试图让它工作.顺便说一句,我也尝试使用清单中的过滤器进行更改,但是也没有去过那里.在此先感谢任何人提供的帮助.
public partial class Form1 : Form
{
[DllImport("user32.dll", SetLastError = true)]
static extern IntPtr ChangeWindowMessageFilter(uint message, uint dwFlag);
public Form1()
{
InitializeComponent();
ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD);
ChangeWindowMessageFilter(0x0049, MSGFLT_ADD);
GetAndDisplayRights();
}
private const uint WM_DROPFILES = 0x233;
private const uint WM_COPYDATA = 0x004A;
private const uint WM_COPYGLOBALDATA = 0x0049;
private const uint MSGFLT_ADD = 1;
Run Code Online (Sandbox Code Playgroud)
这是不可能的,也没有解决方法.D + D不能将对象从一个未升级的对象中删除.UIPI(UAC的UI组件)阻止了这一点.ChangeWindowMessageFilter()变通方法不起作用,D + D不是基于消息的,它使用COM.WM_DROPFILES可以追溯到Windows 3,不再使用.
我怀疑Windows的未来版本提供了一种解决方法,从Windows 7开始就不可能.
| 归档时间: |
|
| 查看次数: |
1487 次 |
| 最近记录: |