1 package org.jinterop.dcom.test; 2 3 import java.net.UnknownHostException ; 4 5 import org.jinterop.dcom.common.JIException; 6 import org.jinterop.dcom.common.JISystem; 7 import org.jinterop.dcom.core.IJIComObject; 8 import org.jinterop.dcom.core.JICallObject; 9 import org.jinterop.dcom.core.JIComServer; 10 import org.jinterop.dcom.core.JIFlags; 11 import org.jinterop.dcom.core.JIInterfacePointer; 12 import org.jinterop.dcom.core.JIProgId; 13 import org.jinterop.dcom.core.JISession; 14 import org.jinterop.dcom.core.JIString; 15 import org.jinterop.dcom.core.JIVariant; 16 import org.jinterop.dcom.win32.ComFactory; 17 18 public class MSShell { 19 20 JISession session = null; 21 JIComServer comServer = null; 22 23 MSShell(String args[]) throws UnknownHostException , JIException 24 { 25 session = JISession.createSession(args[1],args[2],args[3]); 26 comServer = new JIComServer(JIProgId.valueOf(session,"Shell.Application"),args[0],session); 27 } 28 29 30 void doStuff() throws JIException 31 { 32 IJIComObject comUnknown = (IJIComObject)comServer.createInstance(); 34 35 IJIComObject shellDispatch = (IJIComObject)comUnknown.queryInterface("D8F015C0-C278-11CE-A49E-444553540000"); 37 38 JICallObject callObject = new JICallObject(shellDispatch.getIpid()); 39 43 47 callObject.reInit(); 48 callObject.setOpnum(2); 49 callObject.addInParamAsVariant(new JIVariant(2),JIFlags.FLAG_NULL); 50 callObject.addOutParamAsType(JIInterfacePointer.class,JIFlags.FLAG_NULL); 51 Object [] result = shellDispatch.call(callObject); 52 JIInterfacePointer folderPtr = (JIInterfacePointer)result[0]; 53 IJIComObject folder = ComFactory.createCOMInstance(shellDispatch,folderPtr); 54 55 callObject = new JICallObject(folder.getIpid()); 56 callObject.setOpnum(0); 57 callObject.addOutParamAsObject(new JIString(JIFlags.FLAG_REPRESENTATION_STRING_BSTR),JIFlags.FLAG_NULL); 58 result = folder.call(callObject); 59 System.out.println("Current Folder: " + result[0]); 60 61 callObject.reInit(); 62 callObject.setOpnum(1); 63 callObject.addOutParamAsType(JIInterfacePointer.class,JIFlags.FLAG_NULL); 64 result = folder.call(callObject); 65 IJIComObject test = ComFactory.createCOMInstance(shellDispatch,(JIInterfacePointer)result[0]); 66 67 74 callObject.reInit(); 75 callObject.setOpnum(3); 76 callObject.addOutParamAsType(JIInterfacePointer.class,JIFlags.FLAG_NULL); 77 result = folder.call(callObject); 78 test = ComFactory.createCOMInstance(shellDispatch,(JIInterfacePointer)result[0]); 79 80 callObject.reInit(); 81 callObject.setOpnum(4); 82 callObject.addOutParamAsType(JIInterfacePointer.class,JIFlags.FLAG_NULL); 83 result = folder.call(callObject); 84 IJIComObject folderItems = ComFactory.createCOMInstance(shellDispatch,(JIInterfacePointer)result[0]); 85 86 callObject = new JICallObject(folderItems.getIpid()); 87 callObject.setOpnum(0); 88 callObject.addOutParamAsType(Integer .class,JIFlags.FLAG_NULL); 89 result = folderItems.call(callObject); 90 91 int count = ((Integer )result[0]).intValue(); 92 93 for (int i = 0;i<count;i++) 94 { 95 callObject.reInit(); 96 callObject.setOpnum(3); 97 callObject.addInParamAsVariant(new JIVariant(i),JIFlags.FLAG_NULL); 98 callObject.addOutParamAsType(JIInterfacePointer.class,JIFlags.FLAG_NULL); 99 result = folderItems.call(callObject); 100 IJIComObject folderItem = ComFactory.createCOMInstance(shellDispatch,(JIInterfacePointer)result[0]); 101 102 103 JICallObject callObject2 = new JICallObject(folderItem.getIpid()); 104 callObject2.setOpnum(2); 105 callObject2.addOutParamAsObject(new JIString(JIFlags.FLAG_REPRESENTATION_STRING_BSTR),JIFlags.FLAG_NULL); 106 result = folderItem.call(callObject2); 107 System.out.println("Name of Object: " + result[0]); 108 109 callObject2.reInit(); 110 callObject2.setOpnum(4); 111 callObject2.addOutParamAsObject(new JIString(JIFlags.FLAG_REPRESENTATION_STRING_BSTR),JIFlags.FLAG_NULL); 112 result = folderItem.call(callObject2); 113 System.out.println("Path of the Object: " + result[0]); 114 115 116 callObject2.reInit(); 117 callObject2 = new JICallObject(folderItem.getIpid()); 118 callObject2.setOpnum(9); 119 callObject2.addOutParamAsType(Boolean .class,JIFlags.FLAG_NULL); 121 result = folderItem.call(callObject2); 122 123 boolean isFileSystemObject = ((Boolean )result[0]).booleanValue(); 124 125 if (isFileSystemObject) 126 { 127 System.out.print(" and is part of file system\n"); 128 } 129 else 130 { 131 System.out.print(" and is not part of file system\n"); 132 } 133 134 callObject2.reInit(); 135 callObject2 = new JICallObject(folderItem.getIpid()); 136 callObject2.setOpnum(13); 137 callObject2.addOutParamAsObject((Integer .class),JIFlags.FLAG_NULL); 138 result = folderItem.call(callObject2); 139 System.out.print(" and size(in bytes) is: " + ((Integer )result[0]).intValue() + "\n"); 140 141 } 142 143 } 144 145 146 147 public static void main(String [] args) { 148 149 if (args.length < 4) 150 { 151 System.out.println("Please provide address domain username password"); 152 return; 153 } 154 JISystem.setAutoRegisteration(true); 155 try { 156 MSShell shell = new MSShell(args); 157 shell.doStuff(); 158 JISession.destroySession(shell.session); 159 } catch (UnknownHostException e) { 160 e.printStackTrace(); 162 } catch (JIException e) { 163 e.printStackTrace(); 165 } 166 } 167 168 } 169 | Popular Tags |