OLE:嵌入微软word而不添加ins

时间:2015-06-04 09:43:51

标签: java ms-word swt ole

如此处Start Word without Add Ins所述,可以在没有&#34的情况下启动ms word;添加ins"或安全模式" 我想知道在我的SWT应用程序中是否也可以使用OLE嵌入单词?

现在我执行以下操作:

new OleControlSite(clientFrame, SWT.NONE, "Word.Document")

也许有另一个程序ID,类似于" Word.Document"强迫词开始而不添加ins? 也许有一个属性或设置可以实现这个目标?

1 个答案:

答案 0 :(得分:0)

此代码在eclipse论坛中,在加载单词后禁用加载项:
https://www.eclipse.org/forums/index.php/t/221747/

int idAddIns = application.getIDsOfNames(new String[] {"COMAddIns"})[0];
Variant addInsVar = application.getProperty(idAddIns);
OleAutomation addIns = addInsVar.getAutomation();

int countID = addIns.getIDsOfNames(new String[] {"Count"})[0];
Variant countVariant = addIns.getProperty(countID);

int addInsItemID = addIns.getIDsOfNames(new String[] {"Item"})[0];
for (int i = 1; i <= countVariant.getInt(); i++) {
    Variant addInsItemVariant = addIns.invoke(addInsItemID, new Variant[] {new Variant(i)});
    OleAutomation addInsItem = addInsItemVariant.getAutomation();

    int addInsItemConnectID = addInsItem.getIDsOfNames(new String[] { "Connect" })[0];
    if (addInsItem.getProperty(addInsItemConnectID).getBoolean()) {
        int addInsItemNameID = addInsItem.getIDsOfNames(new String[] { "ProgId" })[0];
        Variant addInsItemNameVariant = addInsItem.getProperty(addInsItemNameID);
        String name = addInsItemNameVariant.getString();                
        addInsItem.setProperty(addInsItemConnectID, new Variant(false));
    }
}

警告:它还会禁用应用程序外部的加载项,因此您可能希望在关闭应用程序后启用它。