给定系统剪贴板中的相同内容,我运行以下代码段:
对于 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