以管理员启动时拖放无效
-
在 Qt 中,如果程序以管理员权限启动。不能使用拖放。
这在 MFC 或 Win32 中是可以的。ChangeWindowMessageFilter 和 Ole IDropTarget 对 QT 没有任何作用。
如何解决?请不要告诉我取消管理员权限,我需要管理员权限才能做某事。
我设置 QApplication::setAttribute(Qt::AA_NativeWindows);和 setAttribute(Qt::WA_NativeWindow, true);等等其它,没有任何用处。
RegisterDragDrop 和 RevokeDragDrop 也试过了。
当我创建一个纯 Win32 窗口时,以管理员身份启动它,然后调用 ChangeWindowMessageFilter ,它可以接收拖放。
参考:
::ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
::ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD);
::ChangeWindowMessageFilter(0x49, MSGFLT_ADD);auto vNativeHandle = (HWND)this->effectiveWinId();
::DragAcceptFiles(vNativeHandle, TRUE);
::ChangeWindowMessageFilterEx(vNativeHandle, WM_DROPFILES, MSGFLT_ALLOW, nullptr);
::ChangeWindowMessageFilterEx(vNativeHandle, WM_COPYDATA, MSGFLT_ALLOW, nullptr);
::ChangeWindowMessageFilterEx(vNativeHandle, 0x49, MSGFLT_ALLOW, nullptr);
我发现这个(https://www.i4.cn/)软件也是用QT创建的,用admin启动,但是可以拖放文件。如果有人知道,也请帮助我。
-
在 Qt 中,如果程序以管理员权限启动。不能使用拖放。
这在 MFC 或 Win32 中是可以的。ChangeWindowMessageFilter 和 Ole IDropTarget 对 QT 没有任何作用。
如何解决?请不要告诉我取消管理员权限,我需要管理员权限才能做某事。
我设置 QApplication::setAttribute(Qt::AA_NativeWindows);和 setAttribute(Qt::WA_NativeWindow, true);等等其它,没有任何用处。
RegisterDragDrop 和 RevokeDragDrop 也试过了。
当我创建一个纯 Win32 窗口时,以管理员身份启动它,然后调用 ChangeWindowMessageFilter ,它可以接收拖放。
参考:
::ChangeWindowMessageFilter(WM_DROPFILES, MSGFLT_ADD);
::ChangeWindowMessageFilter(WM_COPYDATA, MSGFLT_ADD);
::ChangeWindowMessageFilter(0x49, MSGFLT_ADD);auto vNativeHandle = (HWND)this->effectiveWinId();
::DragAcceptFiles(vNativeHandle, TRUE);
::ChangeWindowMessageFilterEx(vNativeHandle, WM_DROPFILES, MSGFLT_ALLOW, nullptr);
::ChangeWindowMessageFilterEx(vNativeHandle, WM_COPYDATA, MSGFLT_ALLOW, nullptr);
::ChangeWindowMessageFilterEx(vNativeHandle, 0x49, MSGFLT_ALLOW, nullptr);
我发现这个(https://www.i4.cn/)软件也是用QT创建的,用admin启动,但是可以拖放文件。如果有人知道,也请帮助我。