递归火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 8468|回复: 16
打印 上一主题 下一主题

[视窗] 解决部分电脑拖放功能失效的问题

[复制链接]

39

主题

320

帖子

3176

积分

贵宾

火山官方交流群:831858564

Rank: 9Rank: 9Rank: 9

积分
3176
QQ
跳转到指定楼层
楼主
发表于 2022-11-16 09:32:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 乐易论坛 于 2022-11-16 14:15 编辑

这个问题,实际上在易语言的时候就已经出现了.
主要的原因就是UAC隔离导致的..
因此的话,注册拖放功能之后,要用 ChangeWindowMessageFilterEx 进行改变

主要修改的是 w_wtl_ui_base.v 和 w_mfc_ui_base.v 2个文件



如果下个版本 吴总能加上最好 因为我电脑 没办法 测试这个问题.所以 不敢保证是否能够成功(理论上成功)
不能成功,肯定是我代码的问题,跟API没什么关系..

w_mfc_ui_base.v (327.64 KB, 下载次数: 6)   覆盖到 \plugins\vprj_win\classlib\sys\mfc_ui_base  
  1. CWnd* pWnd = GetMfcWndPtrWithValidHWnd ();
  2.     if (pWnd != NULL){
  3.         pWnd->DragAcceptFiles (rg_是否允许6);
  4.     HMODULE hUser32 = ::GetModuleHandle(L"User32.dll");
  5.     INT_P pChangeWindowMessageFilterEx = (INT_P)::GetProcAddress(hUser32, "ChangeWindowMessageFilterEx");
  6.     if(pChangeWindowMessageFilterEx <= 0) return ;
  7.     ((INT_P(*)(INT_P,...))pChangeWindowMessageFilterEx)((INT_P)pWnd->m_hWnd,0X233,1,0);
  8.     ((INT_P(*)(INT_P,...))pChangeWindowMessageFilterEx)((INT_P)pWnd->m_hWnd,0x4A,1,0);
  9.     ((INT_P(*)(INT_P,...))pChangeWindowMessageFilterEx)((INT_P)pWnd->m_hWnd,0x49,1,0);
  10.      }
复制代码


w_wtl_ui_base.v (325.04 KB, 下载次数: 7) 覆盖到  \plugins\vprj_win\classlib\sys\wtl_ui_base

之前抄易语言代码抄错了,导致少了参数 哈哈 重新修改了一下 自己在虚拟机测试了一下 是没什么问题的



附带上自己修改的 2个 文件  请注意备份之前的文件,避免出错...



附带视频演示效果  @飞扬工作室  视频网址 https://www.bilibili.com/video/BV1gP411g77s/




回复

使用道具 举报

62

主题

1674

帖子

8611

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8611
来自 13#
发表于 2022-11-16 16:58:39 | 只看该作者
已经修正,请下载覆盖压缩包内的文件: plugins.rar (688.18 KB, 下载次数: 34)
回复

使用道具 举报

47

主题

530

帖子

2935

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2935
沙发
发表于 2022-11-16 09:36:44 | 只看该作者
好像WIN10不能用管理员模式
回复

使用道具 举报

47

主题

886

帖子

4153

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
4153
板凳
发表于 2022-11-16 09:49:55 | 只看该作者
回复

使用道具 举报

39

主题

320

帖子

3176

积分

贵宾

火山官方交流群:831858564

Rank: 9Rank: 9Rank: 9

积分
3176
QQ
地板
 楼主| 发表于 2022-11-16 10:11:29 | 只看该作者
suyan 发表于 2022-11-16 09:36
好像WIN10不能用管理员模式

我一直都是管理员....
回复

使用道具 举报

62

主题

1674

帖子

8611

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8611
5#
发表于 2022-11-16 10:45:21 | 只看该作者
大家有条件的可以帮助测试一下,如果能解决问题我就加到系统库里面去. 我这里没有问题没法测试确定.
回复

使用道具 举报

41

主题

394

帖子

2792

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2792
6#
发表于 2022-11-16 10:59:51 | 只看该作者
感谢分享 来测试一下
火山学习交流群: 1027649189
回复

使用道具 举报

111

主题

613

帖子

2178

积分

金牌会员

Rank: 6Rank: 6

积分
2178
QQ
7#
发表于 2022-11-16 11:28:03 | 只看该作者
来了。         
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

111

主题

613

帖子

2178

积分

金牌会员

Rank: 6Rank: 6

积分
2178
QQ
8#
发表于 2022-11-16 12:12:19 | 只看该作者
无效,
1/带管理员权限,就会无法得到消息。
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

26

主题

1901

帖子

6928

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
6928
9#
发表于 2022-11-16 12:21:07 | 只看该作者
这个网上早就有资料了吧,右键以管理员身份运行此程序的时候就会无法拖放。
主要是两个 API,ChangeWindowMessageFilter 和 ChangeWindowMessageFilterEx
前者改全局,后者改指定窗口句柄
因为这两个 API 都是 Windows Vista 之后才能用,所以要自行定义
我这个写法不需要改动核心库的代码,不过火山修改了最好





回复

使用道具 举报

111

主题

613

帖子

2178

积分

金牌会员

Rank: 6Rank: 6

积分
2178
QQ
10#
发表于 2022-11-16 12:56:45 | 只看该作者
Xelloss0618 发表于 2022-11-16 12:21
这个网上早就有资料了吧,右键以管理员身份运行此程序的时候就会无法拖放。
主要是两个 API,ChangeWindowM ...

手打,测试没问题。
专业承接18-98岁xx的心理及生理教育辅导。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|递归火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-11-24 22:43 , Processed in 0.107537 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表