为什么Swing的clipboard.getAvailableDataFlavors返回的选项少于WinAPI EnumClipboardFormats?

时间:2013-06-11 15:39:13

标签: java c++ swing winapi clipboard

考虑到系统剪贴板中的相同内容,我运行以下代码段:

对于C ++:

if (OpenClipboard(NULL)) {
  for (int i = 0;;) {
    i = EnumClipboardFormats(i);
    if (i == 0)
      break;
    GetClipboardFormatName(i, buf, sizeof(buf)/sizeof(buf[0]));
    printf("%+09d\t%s\n", i, buf);
  }
  CloseClipboard();
}

对于Java(在Applet中):

Toolkit toolkit = Toolkit.getDefaultToolkit();
Clipboard clipboard = toolkit.getSystemClipboard();
for (DataFlavor df : clipboard.getAvailableDataFlavors()) {
  System.out.println(df.getHumanPresentableName() + " " + df.getMimeType());
}

令我惊讶的是,两者返回不同数量的可用格式,而我得到的格式显然也不同,例如某种自定义数据格式被解释为Java中的x-java-image,即使它绝对不是任何类型的图片。

有谁知道为什么会这样或我如何调整此行为? 基本上我想通过Java中的剪贴板访问自定义格式的数据,但它似乎不会马上工作。

UPD: 以下是两个片段为相关自定义数据格式提供的示例输出:

C ++

+00049654       MDLSK
+00049156       Native
+00049155       OwnerLink
+00000003       OwnerLink
+00000014       OwnerLink

爪哇

image/x-java-image image/x-java-image; class=java.awt.Image

0 个答案:

没有答案