Учитывая тот же контент в системном буфере обмена, я запускаю следующие фрагменты:
Для 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 (в апплете):
Toolkit toolkit = Toolkit.getDefaultToolkit();
Clipboard clipboard = toolkit.getSystemClipboard();
for (DataFlavor df : clipboard.getAvailableDataFlavors()) {
System.out.println(df.getHumanPresentableName() + " " + df.getMimeType());
}
Удивительно для меня, но оба возвращают различное количество доступных форматов, и те, которые я получаю, по-видимому, также различны, например. определенный пользовательский формат данных интерпретируется как Java-изображение x-java, хотя это определенно не картинка какого-либо вида.
Кто-нибудь знает, почему это так или как я могу настроить это поведение?
По сути, я хотел бы получить доступ к данным в пользовательских форматах через буфер обмена в 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
Задача ещё не решена.
Других решений пока нет …