首页| 论坛| 消息

标题:Qt 为什么管理员权限下无法进行拖拽,但是MFC却可以呢?
作者:lwei24
日期:2023-05-12 15:29
内容:

如题,各位大佬们,Qt的拖拽功能为什么在管理员权限下无法进行,但是MFC却可以呢?有什么办法可以突破这个限制呢?


#1 [zhangxin 05-12 17:05]
我也发现这个问题了,查了一下说是以管理员权限运行时,程序与Explorer不是平等关系了,所以接收不到消息,找到的是VC的解决方式,没找到QT的
#2 回 zhangxin 的帖子 [lwei24 05-12 18:13]
zhangxin:我也发现这个问题了,查了一下说是以管理员权限运行时,程序与Explorer不是平等关系了,所以接收不到消息,找到的是VC的解决方式,没找到QT的 (2023-05-12 17:05) 
是的,之前我还想通过VC的方式在Qt上去解决管理员权限运行时拖拽的问题。但是试了很久都没有成功。原本以为都是C/C++,按理说技术没有国界,可是却不能满足管理员权限运行时拖拽。这样,对于开发者来说,或许没有多大的影响,但是对于用户来说,简直是不理解,直接就会认为是软件的问题……
#3 回 zhangxin 的帖子 [lwei24 05-12 18:15]
zhangxin:我也发现这个问题了,查了一下说是以管理员权限运行时,程序与Explorer不是平等关系了,所以接收不到消息,找到的是VC的解决方式,没找到QT的 (2023-05-12 17:05) 
请问在windows环境下,不考虑硬件环境,只考虑应用层技术,你还碰到什么类似这样VC能做到的,Qt不能做到的问题吗?
#4 回 lwei24 的帖子 [zhangxin 05-14 00:24]
lwei24:请问在windows环境下,不考虑硬件环境,只考虑应用层技术,你还碰到什么类似这样VC能做到的,Qt不能做到的问题吗? (2023-05-12 18:15) 
基本上VC能干的Qt都能干吧,有些原生的东西,Qt实现起来比VC麻烦一些,有遇到过一些,但是忽然让我罗列出来,还真想不出来了
#5 [ragtime 05-15 11:31]
如果是拖拽文件的话
可以参考如下代码
void CMainWindow::initDropFileMSG()
{
HWND hwnd = (HWND)this->winId();
CHANGEFILTERSTRUCT chfit1 = { sizeof(CHANGEFILTERSTRUCT) };
CHANGEFILTERSTRUCT chfit2 = { sizeof(CHANGEFILTERSTRUCT) };
//消息过滤,允许低权限往高权限发消息
ChangeWndMessageFilterOk(hwnd, WM_DROPFILES, MSGFLT_ALLOW, &chfit1);
ChangeWndMessageFilterOk(hwnd, 0x0049, MSGFLT_ALLOW, &chfit2);
RevokeDragDrop((HWND)this->winId()); //先注销qt本身的拖拽
DragAcceptFiles(hwnd, TRUE); //允许接收拖拽文件消息
}

<< 1 2 >> (1/2)

回复 发表
主题 版块