1 package org.jinterop.dcom.test; 2 3 4 5 import java.net.UnknownHostException ; 6 7 import org.jinterop.dcom.common.JIException; 8 import org.jinterop.dcom.core.IJIComObject; 9 import org.jinterop.dcom.core.JIComServer; 10 import org.jinterop.dcom.core.JIInterfacePointer; 11 import org.jinterop.dcom.core.JIProgId; 12 import org.jinterop.dcom.core.JISession; 13 import org.jinterop.dcom.core.JIString; 14 import org.jinterop.dcom.core.JIVariant; 15 import org.jinterop.dcom.win32.ComFactory; 16 import org.jinterop.dcom.win32.IJIDispatch; 17 18 public class KainTest { 19 20 private JIComServer comServer = null; 21 private IJIDispatch dispatch = null; 22 private IJIComObject unknown = null; 23 24 public KainTest(String address, String [] args) throws JIException, UnknownHostException 25 { 26 JISession session = JISession.createSession(args[1],args[2],args[3]); 27 comServer = new JIComServer(JIProgId.valueOf(session,"Word.Application"),address,session); 28 } 29 30 public void startWord() throws JIException 31 { 32 unknown = comServer.createInstance(); 33 dispatch = (IJIDispatch)ComFactory.createCOMInstance(ComFactory.IID_IDispatch,unknown); 34 } 35 36 public void showWord() throws JIException 37 { 38 int dispId = dispatch.getIDsOfNames("Visible"); 39 JIVariant variant = new JIVariant(Boolean.TRUE); 40 dispatch.put(dispId,variant); 41 } 42 43 public void performOp() throws JIException, InterruptedException 44 { 45 String sDir = "c:\\tmp\\"; 46 String sInputDoc = sDir + "file_in.doc"; 47 String sOutputDoc = sDir + "file_out.doc"; 48 49 String sOldText = "[label:import:1]"; 50 String sNewText = "I am some horribly long sentence, so long that [insert bullshit here]"; 51 boolean tVisible = true; 52 boolean tSaveOnExit = false; 53 54 System.out.println(((JIVariant)dispatch.get("Version")).getObjectAsString().getString()); 55 System.out.println(((JIVariant)dispatch.get("Path")).getObjectAsString().getString()); 56 57 JIVariant variant = dispatch.get("Documents"); 58 JIInterfacePointer ptr = variant.getObjectAsInterfacePointer(); 59 IJIDispatch documents = (IJIDispatch)ComFactory.createCOMInstance(unknown,ptr); 60 JIString filePath = new JIString(sInputDoc); 62 JIVariant variant2[] = documents.callMethodA("open",new Object []{new JIVariant(filePath,true),JIVariant.OPTIONAL_PARAM 64 ,JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM, 65 JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM, 66 JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM, 67 JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM, 68 JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM}); 69 70 IJIDispatch document = (IJIDispatch)ComFactory.createCOMInstance(unknown,variant2[0].getObjectAsInterfacePointer()); 71 variant = dispatch.get("Selection"); 72 IJIDispatch selection = (IJIDispatch)ComFactory.createCOMInstance(unknown,variant.getObjectAsInterfacePointer()); 73 74 variant = selection.get("Find"); 75 IJIDispatch find = (IJIDispatch)ComFactory.createCOMInstance(unknown,variant.getObjectAsInterfacePointer()); 76 77 Thread.sleep(2000); 78 79 find.put("Text",new JIVariant(new JIString(sOldText))); 80 find.callMethodA("Execute",new Object []{JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM 81 ,JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM, 82 JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM, 83 JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM, 84 JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM, 85 JIVariant.OPTIONAL_PARAM}); 86 87 Thread.sleep(2000); 88 89 selection.put("Text",new JIVariant(new JIString(sNewText))); 90 selection.callMethodA("MoveDown",new Object []{JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM 91 ,JIVariant.OPTIONAL_PARAM}); 92 selection.put("Text",new JIVariant(new JIString("\nSo we got the next line including BR.\n"))); 93 94 variant = selection.get("Font"); 95 IJIDispatch font = (IJIDispatch)ComFactory.createCOMInstance(unknown,variant.getObjectAsInterfacePointer()); 96 font.put("Bold",new JIVariant(1)); 97 font.put("Italic",new JIVariant(1)); 98 font.put("Underline",new JIVariant(0)); 99 100 variant = selection.get("ParagraphFormat"); 101 IJIDispatch align = (IJIDispatch)ComFactory.createCOMInstance(unknown,variant.getObjectAsInterfacePointer()); 102 align.put("Alignment",new JIVariant(3)); 103 104 Thread.sleep(5000); 105 106 JIString sImgFile = new JIString(sDir + "image.png"); 107 selection.callMethodA("MoveDown",new Object []{JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM 108 ,JIVariant.OPTIONAL_PARAM}); 109 variant = selection.get("InLineShapes"); 110 IJIDispatch image = (IJIDispatch)ComFactory.createCOMInstance(unknown,variant.getObjectAsInterfacePointer()); 111 image.callMethodA("AddPicture",new Object []{new JIVariant(sImgFile),JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM 112 ,JIVariant.OPTIONAL_PARAM}); 113 114 JIString sHyperlink = new JIString("http://www.google.com"); 115 selection.put("Text",new JIVariant(new JIString("Text for the link to Google"))); 116 variant = selection.get("Range"); 117 IJIDispatch range = (IJIDispatch)ComFactory.createCOMInstance(unknown,variant.getObjectAsInterfacePointer()); 118 variant = document.get("Hyperlinks"); 119 IJIDispatch link = (IJIDispatch)ComFactory.createCOMInstance(unknown,variant.getObjectAsInterfacePointer()); 120 link.callMethod("Add",new Object []{range,sHyperlink,JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM}); 121 122 variant = dispatch.get("WordBasic"); 123 IJIDispatch wordBasic = (IJIDispatch)ComFactory.createCOMInstance(unknown,variant.getObjectAsInterfacePointer()); 124 wordBasic.callMethod("FileSaveAs",new Object []{new JIString(sOutputDoc)}); 125 126 dispatch.callMethod("Quit", new Object []{new JIVariant(-1,true),JIVariant.OPTIONAL_PARAM,JIVariant.OPTIONAL_PARAM}); 127 JISession.destroySession(dispatch.getAssociatedSession()); 128 } 129 130 public static void main(String [] args) { 131 132 try { 133 if (args.length < 4) 134 { 135 System.out.println("Please provide address domain username password"); 136 return; 137 } 138 KainTest test = new KainTest(args[0],args); 139 test.startWord(); 140 test.showWord(); 141 test.performOp(); 142 } catch (Exception e) { 143 e.printStackTrace(); 145 } 146 } 147 148 149 150 151 152 } 153 | Popular Tags |