Vista和Win7中,由于UIPI限制,高权限程序不能够接受低权限程序发来的消息,从而导致拖拽功能失效。
可以利用ChangeWindowMessageFilter这个API,将和拖拽相关的消息从UIPI消息过滤器中剔除来解决这个问题。
需要注意的是,解除过滤的消息不仅仅是WM_DROPFILES这一个,还有一个MessageID为0x0049的消息。
只有这两消息都从过滤器中剔出了,高权限下拖拽功能才好使。
ChangeWindowMessageFilter(0x0049, MSGFLT_ADD);
ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);