Java 为什么摇摆';s clipboard.getAvailableDataFlavors返回的选项比WinAPI EnumClipboardFormats少?

Java 为什么摇摆';s clipboard.getAvailableDataFlavors返回的选项比WinAPI EnumClipboardFormats少?,java,c++,swing,winapi,clipboard,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); } Clo

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

对于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(在小程序中):

令我惊讶的是,这两种格式返回的可用格式数量不同,而我得到的格式也明显不同,例如,某个自定义数据格式在java中被解释为x-java-image,尽管它肯定不是任何类型的图片

有人知道这是为什么,或者我如何调整这种行为吗? 基本上,我希望通过Java中的剪贴板访问自定义格式的数据,但它似乎不能立即工作

UPD: 以下是两个代码段针对所讨论的自定义数据格式给出的示例输出:

C++

爪哇


GetClipboardFormatName()
不适用于预定义格式,仅适用于使用
RegisterClipboardFormat()
注册的用户定义格式。话虽如此,如果您实际显示两种语言实际报告的格式列表,可能会有所帮助。@RemyLebeau谢谢您提供的信息!很高兴知道这一点,尽管它并没有真正影响到这个特定的问题,因为即使是可用格式的数量也是不同的,不管它们的实际名称是什么。我已将sampel输出添加到问题中。
Toolkit toolkit = Toolkit.getDefaultToolkit();
Clipboard clipboard = toolkit.getSystemClipboard();
for (DataFlavor df : clipboard.getAvailableDataFlavors()) {
  System.out.println(df.getHumanPresentableName() + " " + df.getMimeType());
}
+00049654       MDLSK
+00049156       Native
+00049155       OwnerLink
+00000003       OwnerLink
+00000014       OwnerLink
image/x-java-image image/x-java-image; class=java.awt.Image