📄 wordactivex2.java
字号:
package cn.com.chengang.swt.activex;
import java.io.File;
import java.net.URISyntaxException;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.ole.win32.OLE;
import org.eclipse.swt.ole.win32.OleAutomation;
import org.eclipse.swt.ole.win32.OleClientSite;
import org.eclipse.swt.ole.win32.OleFrame;
import org.eclipse.swt.ole.win32.Variant;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Menu;
import org.eclipse.swt.widgets.MenuItem;
import org.eclipse.swt.widgets.Shell;
public class WordActiveX2 {
public static void main(String[] args) throws URISyntaxException {
final Display display = Display.getDefault();
final Shell shell = new Shell();
shell.setSize(500, 450);
// ---------创建窗口中的其他界面组件-------------
shell.setLayout(new FillLayout());
OleFrame oleFrame = new OleFrame(shell, SWT.NONE);
// --------------------- 创建菜单----------------------------------
Menu bar = new Menu(shell, SWT.BAR);
shell.setMenuBar(bar);
// 创建菜单项
MenuItem menu1 = new MenuItem(bar, SWT.CASCADE);
menu1.setText("menu1");
MenuItem menu2 = new MenuItem(bar, SWT.CASCADE);
menu2.setText("menu2");
MenuItem menu3 = new MenuItem(bar, SWT.CASCADE);
menu3.setText("menu3");
// 将菜单项嵌入OLE容器
oleFrame.setFileMenus(new MenuItem[] { menu1 });
oleFrame.setContainerMenus(new MenuItem[] { menu2 });
oleFrame.setWindowMenus(new MenuItem[] { menu3 });
// --------------------- 创建菜单结束----------------------------------
File file = new File(WordActiveX1.class.getResource("a.doc").toURI());
final OleClientSite clientSite = new OleClientSite(oleFrame, SWT.NONE, file);
clientSite.doVerb(OLE.OLEIVERB_SHOW);
System.out.println(clientSite.getProgramID());
// 将打开的文件保存为另一个文件。因为用要到clientSite对象,所以把这段语句放在后面
menu1.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
File file = new File("c:\\b.doc");
boolean success = clientSite.save(file, true);
System.out.println(success ? "成功" : "失败");
}
});
// 调用Word控件的全选方法
menu2.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
OleAutomation automation = new OleAutomation(clientSite);
// 取得全选方法Select对应的id
int[] methodIDs = automation.getIDsOfNames(new String[] { "Select" });
int methodID = methodIDs[0];
System.out.println("methodID = " + methodID);
Variant result = automation.invoke(methodID);
System.out.println(result != null ? "调用成功" : "调用失败");
System.out.println(result);
automation.dispose();
}
});
// -----------------END------------------------
shell.open();
while (!shell.isDisposed()) {
if (!display.readAndDispatch())
display.sleep();
}
display.dispose();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -