gpt4 book ai didi

c++ - QDrag 和 Skype 问题(仅限 win)

转载 作者:可可西里 更新时间:2023-11-01 10:48:46 26 4
gpt4 key购买 nike

我正在编写一个小文件/文件资源管理器,但在基于 qt 的应用程序与仅 Windows 平台上的 Skype 聊天窗口之间的交互方面遇到了问题。

当我尝试将文件(由 QDrag 提供的带有 file-urls mime 数据的文件)从我的应用程序拖放到 Skype 聊天窗口时,文件被发送了两次。我在尝试修改其中一个 Qt 拖放示例时遇到了同样的情况。

Skype 版本为 5.10.0.116。该错误可在 Qt 版本 4.7.3、4.8.1、4.8.3 上重现。

编辑:

尝试过多个应用之间的拖放交互

  • 我的应用 -> Explorer = ok
  • 我的应用程序 -> Notepad++ = ok(仅在一个选项卡中显示文件内容)
  • 我的应用程序 -> WinRar = ok(创建存档只有一个文件)
  • 我的应用程序 -> TotalCommander = ok
  • 我的应用程序 -> ICQ = ok(只发送了一个文件)
  • 我的应用程序 -> Clementine(基于 Qt 的音乐播放器)= ok(只有一个文件已添加到播放列表)
  • Explorer -> Skype = ok

但是

  • 我的应用 -> Skype - 文件发送了两次
  • Clementine -> Skype - 文件发送了两次

编辑 2:

此外,qt 创建的 mime 数据与 explorer 创建的不同。

Qt:

  • 0 "text/uri-list""file:///C:/Users/user/Pictures/myfile.ext"
  • 1 "application/x-qt-windows-mime;value="UniformResourceLocatorW""“...”(我用省略号替换了 QByteArray 的内容)

探索者:

  • 0 "application/x-qt-windows-mime;value="Shell IDList Array"""..."
  • 1 "application/x-qt-windows-mime;value="UsingDefaultDragImage""“……”
  • 2 "application/x-qt-windows-mime;value="DragImageBits"""..."
  • 3 "application/x-qt-windows-mime;value="DragContext"""..."
  • 4 "application/x-qt-windows-mime;value="DragSourceHelperFlags""“……”
  • 5 "application/x-qt-windows-mime;value="InShellDragLoop"""..."
  • 6 "text/uri-list""file:///C:/Users/user/Pictures/myfile.ext"

最佳答案

我明白了,如果是Qt就没有问题,就是Skype端的mime数据处理不对。除了“text/uri-list”,Qt 还提供了具有相同数据的“UniformResourceLocatorW”值(我不能否认,它添加的比 Qt 用户所能获得的要深得多)。 Skype 处理这两个值——“text/uri-list”和“UniformResourceLocatorW”,导致发送同一个文件两次。

关于c++ - QDrag 和 Skype 问题(仅限 win),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13120627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com