Вы не можете перетаскивать произвольные объекты из одного в другой. Вы должны использовать формат, который оба понимают. В Java они называются DataFlavors, в Windows DataFormats (которые просто идентифицируются по имени в выигрышных формах .Net world)
Вот руководство для java end .
Вот документы MSDN, относящиеся к форматам данных
Можно пойти на очень низкий уровень и реализовать сложный код с обеих сторон для обработки довольно сложной связи между различными приложениями / платформами, но если вы просто хотите иметь возможность перетаскивать изображение из одного приложения в другое, вы найдете его проще начать с растровых изображений, поскольку они довольно универсальны.
Если вы действительно хотите, чтобы идентификатор вещи, представленной значком, был связан / диссоциирован, и вы хотите, чтобы это работало только между двумя приложениями, о которых идет речь, то просто передайте идентификатор в виде текста как обычно и пусть оба приложения воспринимают перетаскивание как событие, которое требует перехода и получения одного и того же значка и его отображения / удаления вместе с соответствующим обновлением.
Однако вам необходимо знать, было ли событие перетаскивания успешным (чтобы убрать значок и из перетаскиваемого приложения), это не так уж сложно.