Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Chinese
  4. 以管理员启动时拖放无效
Forum Updated to NodeBB v4.3 + New Features

以管理员启动时拖放无效

Scheduled Pinned Locked Moved Unsolved Chinese
2 Posts 2 Posters 1.0k Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • xanaduX Offline
    xanaduX Offline
    xanadu
    wrote on last edited by
    #1

    在 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启动,但是可以拖放文件。

    如果有人知道,也请帮助我。

    K 1 Reply Last reply
    0
    • xanaduX xanadu

      在 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启动,但是可以拖放文件。

      如果有人知道,也请帮助我。

      K Offline
      K Offline
      khzimmer
      wrote on last edited by khzimmer
      #2
      This post is deleted!
      1 Reply Last reply
      0

      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • Users
      • Groups
      • Search
      • Get Qt Extensions
      • Unsolved