由于UAC的限制,WM_DROPFILES只能由权限较低的APP拖拽到权限较高的APP,反之如果从权限较高的APP拖拽到低权限的APP上,WM_DROPFILES不会被发送到低权限的APP消息队列。所以,WM_DROPFILES会有时候变得不能响应。

解决的办法,使用ChangeWindowMessageFilter注册WM_DROPFILES这个MEESSAGE。

ChangeWindowMessageFilter是Vista以后的一个API,WinXP下并没有。

这个API在User32.dll中,使用时LoadLibrary,GetProcAddress得到函数地址就能使用。

1、在你的程序中添加以下函数:

//register global messages for vista win7 win8.1
typedef BOOL(WINAPI *_ChangeWindowMessageFilter)(UINT message, DWORD dwFlag);.
BOOL AllowMeesageForVistaAbove(UINT uMessageID, BOOL bAllow)
{
BOOL bResult = FALSE;
HMODULE hUserMod = NULL;
//vista and later
hUserMod = LoadLibrary(_T("user32.dll"));
if( NULL == hUserMod )
{
return FALSE;
} _ChangeWindowMessageFilter pChangeWindowMessageFilter =
(_ChangeWindowMessageFilter)GetProcAddress( hUserMod, "ChangeWindowMessageFilter");
if( NULL == pChangeWindowMessageFilter )
{
return FALSE;
}
bResult = pChangeWindowMessageFilter( uMessageID, bAllow ? 1 : 2 );//MSGFLT_ADD: 1, MSGFLT_REMOVE: 2 if( NULL != hUserMod )
{
FreeLibrary( hUserMod );
} return bResult;
}

2、头文件定义以下宏 :

#define MSGFLT_ADD 1

#define MSGFLT_REMOVE 2

3、在OnInitDialog中添加函数调用:

AllowMeesageForVistaAbove(SPI_SETANIMATION, MSGFLT_ADD);

//allow drop files
AllowMeesageForVistaAbove(WM_DROPFILES, MSGFLT_ADD);

WTL在Win8.1系统WM_DROPFILES无法响应的解决办法的更多相关文章

  1. VC++6.0在win8.1系统下运行失败的解决办法

    在win8.1系统下安装了VC++6,.0编译软件之后,发现打不开.出现下面的错误: 解决办法: 安装文件目录:Microsoft Visual Studio--common--MSDev98--Bi ...

  2. 关于win8/win8.1系统不能调节亮度的解决办法

    有时候我们重装了win8系统之后开始可以调节亮度,但是再重新安装了显卡驱动之后发现不能调节亮度了,解决办法就是添加一项注册表. 下载地址:http://7xnarc.com1.z0.glb.cloud ...

  3. 新装Linux系统没有网卡驱动的解决办法和步骤

    Linux下查看网卡驱动和版本信息 - CSDN博客 https://blog.csdn.net/guyan1101/article/details/72770424/ 检查网卡是否加载 - Linu ...

  4. Win8/Win10下程序经常无响应的解决办法

    如果你使用Win8/Win10系统时经常出现程序无响应的问题不仿试下如下解决办法. 表现症状: 任何程序都有可能出现无响应(记事本.Visual Studio.QQ.视频播放器等) 一旦一个程序出现未 ...

  5. 调用startActivityForResult,onActivityResult无响应的解决办法

    三种情况: 1.执行startActivityForResult,没等到被调用的 Activity 返回,onActivityResult() 就被执行了.找了很久,终于通过小道消息得知,这与 Act ...

  6. 转:安装MySQL遇到MySQL Server Instance Configuration Wizard未响应的解决办法

    问题:安装了MySQL之后进入配置界面的时候,总会显示“MySQL Server Instance Configuration Wizard未响应”,一直卡死. 解决办法:Win7系统中,以管理员的权 ...

  7. MySql卸载重新安装出现Start service没有响应的解决办法(64位)

    昨天因为自己手欠,不小心把mysql卸载了,于是又得重新安装,但是每次到了最后一步就报没有响应,于是就去寻找解决办法,如下就是啦! 安装Mysql卸载后又重新安装,每次到最后Start service ...

  8. Android ListView不响应OnItemClickListener解决办法

    有时候,当ListView中的每一个item是自定义的View时,有可能会导致ListView的OnItemClickListener的listener无法调用,请看如下情况: 如果你的自定义List ...

  9. Android的缓存图片不在系统图库中显示的解决办法

    Android的图库会在开机的时候扫描SD卡中的图片,视频等文件,有很多App的私有图片不想在图库中显示,就需要另外处理了. 解决办法:在缓存图片的文件夹中创建 .nomedia 文件. 1. &qu ...

随机推荐

  1. ant导入Zookeeper到Eclipse错误path contains invalid character

    首先在Zookeeper源码目录执行 ant eclipse 遇到错误 path contains invalid character 可以修改\zookeeper\build.xml 文件加入 &l ...

  2. centos6.6安装redis服务安装redis服务,对于discuz来说可以作为缓存使用,减轻服务器压力

    获取redis源码包 #wget http://download.redis.io/releases/redis-stable.tar.gz 解压缩 #tar xf  redis-stable.tar ...

  3. Ext JS 5的声明式事件监听

    在前文<在Ext JS 5使用ViewControllers>中,简单的介绍了Ext JS 5的一项重要改进——声明式事件监听.在本文,将深度探讨如何使用声明式事件监听啦简化应用程序的视图 ...

  4. Jenkins: 基础篇(环境配置)

    自动化领域比较有影响力的开源框架jenkins,确实比较强大,易用.很多公司将其用来做持续即成CI(continuous integration).为了拓展和强化自己的软件设计生态系统,也将很久前使用 ...

  5. NoSQL之基础篇

    NoSQL(NoSQL = Not Only SQL ),泛指非关系型的数据库.随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2. ...

  6. [原]Fedora Linux环境下的应用工具总结

    一.办公类软件 1.Office办公:WPS 二.网络通信类软件 1.浏览器:Chrome 2.远程桌面:rdesktop(适用于Windows系列) 三.操作系统设置与优化 1.3D桌面管理:Com ...

  7. [Hibernate] - Interceptors and events

    Hibernate的拦截器,有很大作用.比如要监控SQL的执行效率等. 参考文档: http://docs.jboss.org/hibernate/orm/3.5/reference/zh-CN/ht ...

  8. HackerRank "Chocolate in Box" !

    XOR -> 0 is the key (make it even pair): http://www.cnblogs.com/lautsie/p/3908006.html Something ...

  9. 【1-5】jQuery对象和DOM对象

    1 jQuery对象转化为DOM对象: var $cr = $("#cr");//获得jQuery对象 var cr = $cr[0];//转化为DOM对象 或者:var cr = ...

  10. Return 和 Break 的区别

    前段日子发布的负面情绪太多了,哦哦,其实我需要的是努力,努力提高自己的真实能力.经历了好多的鄙视否定,我已经没有最初那么敏感,心态平和了许多.我没有借口说基础不好了,一年了,要努力的话,那么我应该不会 ...