解决部分电脑拖放功能失效的问题
本帖最后由 乐易论坛 于 2022-11-16 14:15 编辑{:2_33:}这个问题,实际上在易语言的时候就已经出现了.
主要的原因就是UAC隔离导致的..
因此的话,注册拖放功能之后,要用 ChangeWindowMessageFilterEx 进行改变
主要修改的是 w_wtl_ui_base.v 和 w_mfc_ui_base.v 2个文件
如果下个版本 吴总能加上最好 因为我电脑 没办法 测试这个问题.所以 不敢保证是否能够成功(理论上成功)
不能成功,肯定是我代码的问题,跟API没什么关系..
覆盖到 \plugins\vprj_win\classlib\sys\mfc_ui_base
CWnd* pWnd = GetMfcWndPtrWithValidHWnd ();
if (pWnd != NULL){
pWnd->DragAcceptFiles (rg_是否允许6);
HMODULE hUser32 = ::GetModuleHandle(L"User32.dll");
INT_P pChangeWindowMessageFilterEx = (INT_P)::GetProcAddress(hUser32, "ChangeWindowMessageFilterEx");
if(pChangeWindowMessageFilterEx <= 0) return ;
((INT_P(*)(INT_P,...))pChangeWindowMessageFilterEx)((INT_P)pWnd->m_hWnd,0X233,1,0);
((INT_P(*)(INT_P,...))pChangeWindowMessageFilterEx)((INT_P)pWnd->m_hWnd,0x4A,1,0);
((INT_P(*)(INT_P,...))pChangeWindowMessageFilterEx)((INT_P)pWnd->m_hWnd,0x49,1,0);
}
覆盖到\plugins\vprj_win\classlib\sys\wtl_ui_base
{:2_36:}之前抄易语言代码抄错了,导致少了参数 哈哈 重新修改了一下 自己在虚拟机测试了一下 是没什么问题的
附带上自己修改的 2个 文件请注意备份之前的文件,避免出错...
附带视频演示效果@飞扬工作室视频网址 https://www.bilibili.com/video/BV1gP411g77s/
已经修正,请下载覆盖压缩包内的文件:
好像WIN10不能用管理员模式 :):):):) suyan 发表于 2022-11-16 09:36
好像WIN10不能用管理员模式
{:2_34:}我一直都是管理员....{:2_34:} 大家有条件的可以帮助测试一下,如果能解决问题我就加到系统库里面去. 我这里没有问题没法测试确定. 感谢分享 来测试一下 来了。 无效,
1/带管理员权限,就会无法得到消息。 这个网上早就有资料了吧,右键以管理员身份运行此程序的时候就会无法拖放。
主要是两个 API,ChangeWindowMessageFilter 和 ChangeWindowMessageFilterEx
前者改全局,后者改指定窗口句柄
因为这两个 API 都是 Windows Vista 之后才能用,所以要自行定义
我这个写法不需要改动核心库的代码,不过火山修改了最好
Xelloss0618 发表于 2022-11-16 12:21
这个网上早就有资料了吧,右键以管理员身份运行此程序的时候就会无法拖放。
主要是两个 API,ChangeWindowM ...
手打,测试没问题。
页:
[1]
2