【发布时间】:2012-10-23 15:13:47
【问题描述】:
我正在尝试通过拖放将电子邮件从 Outlook 传输到 Eclipse RCP 应用程序。使用这个Code Snippet,我发现在从 Outlook 2010 到 Java 的拖放操作期间,会传输以下原生类型:
我需要完整的消息正文,因此在拖放操作期间提供的文本是不够的。我试图扩展 ByteArrayTransfer 以便将本机对象转换为 Java 对象,从而提供对电子邮件的访问。像 FileGroupDescriptor 这样的结构是原生的 C 结构。我尝试使用 JNA 将它们读出,但 JNA 无法将 C 结构转换为我的 Structure 类的对象。
我有两个问题:
- 我的 JNA 代码有什么问题?
- 有人知道在 Java 中读取原生拖放结构的更好方法吗?
扩展 ByteArrayTransfer 类的代码:
public class FileGroupDescriptor extends Structure {
public int cItems;
public FileDescriptor[] fgd;
public FileGroupDescriptor() {
super();
}
public FileGroupDescriptor(Pointer pointer) {
super(pointer);
}
}
public Object nativeToJava(TransferData transferData) {
if (transferData.type == 49478) {
Native.setProtected(true);
byte[] buffer = (byte[]) super.nativeToJava(transferData);
Memory memory = new Memory(buffer.length);
memory.write(0, buffer, 0, buffer.length - 1);
Pointer p = memory.getPointer(0);
FileGroupDescriptor groupDescriptor = new FileGroupDescriptor(p);
System.out.println(groupDescriptor.cItems);
}
return "";
}
【问题讨论】:
-
我目前正在开发一个名为 eclipsemail 的 eclipse 插件。有兴趣吗?
-
其实我不需要邮件客户端。我只想归档电子邮件。
-
它可以显示电子邮件。 nictate
-
它也能读出Windows OLE结构吗?
-
我们正在使用一种叫做 OutlookDD 的东西。我不确定我的队友在哪里找到它(我不确定它是否免费,我们可能会为此付费),它允许我们将消息作为 MSG 文件拖入 Java,包括所有内容。包是 de.wim.outldd,但是查看源文件,没有明显的版权细节可以说明从哪里获取它...
标签: java eclipse outlook swt jna