0

我已经创建了一个扩展,它执行以下操作:

当我使用命令行运行 Thinderbird 时,thunderbird -MyCustomParam1 "12345"我的扩展程序将打开一个撰写窗口并将参数添加"12345"到窗口中。

我使用的一些代码:

// In the calling code
var args = {
  param1: 12345,

};

args.wrappedJSObject = args;
var watcher = Components.classes["@mozilla.org/embedcomp/window-watcher;1"]
                            .getService(Components.interfaces.nsIWindowWatcher);
watcher.openWindow(null, url, windowName, features, args);


// In the window code
var args = window.arguments[0].wrappedJSObject;

当然使用正确的网址和功能。

现在我想做同样的事情,但是对于消息窗口和eml选择的 am 文件。

eml您可以像这样从命令行打开文件:(Thunderbird test.eml这将在新窗口中打开邮件)。

我想要的是以下内容:

Thunderbird test.eml -MycustomParam1 "1234"应该打开邮件,并将参数添加"1234"到屏幕,这样我就可以在文档窗口中访问它,就像示例 1 一样。

所以基本上我想要类似的东西watcher.openWindow,但是有一个给定的eml文件。

有任何想法吗?

4

1 回答 1

0

MsgOpenFromFile您可以在函数中看到这是如何完成的,它正在为 File / Open Saved Message 菜单项调用。您基本上必须获取eml文件(从文件路径获取 nsIFile 实例),将其转换为 URI,然后在打开消息窗口之前更改查询字符串:

uri.QueryInterface(Components.interfaces.nsIURL);
uri.query = "type=application/x-message-display";
watcher.openWindow(null, "chrome://messenger/content/messageWindow.xul", "_blank",
                   "all,chrome,dialog=no,status,toolbar", uri);
于 2012-06-12T08:21:45.203 回答