KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jinterop > dcom > test > MSShell


1 package org.jinterop.dcom.test;
2
3 import java.net.UnknownHostException JavaDoc;
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 JavaDoc args[]) throws UnknownHostException JavaDoc, 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         //this will return a reference to the IUnknown of the Shell coclass.
33
IJIComObject comUnknown = (IJIComObject)comServer.createInstance();
34         
35         //now we query for the IShellDispatch interface
36
IJIComObject shellDispatch = (IJIComObject)comUnknown.queryInterface("D8F015C0-C278-11CE-A49E-444553540000");
37         
38         JICallObject callObject = new JICallObject(shellDispatch.getIpid());
39 // callObject.setOpnum(5);
40
// callObject.addInParamAsVariant(new JIVariant(new JIString("c:")),JIFlags.FLAG_NULL);
41
// Object result[] = shellDispatch.call(callObject);
42

43 // callObject.reInit();
44
// callObject.setOpnum(7);
45
// result = shellDispatch.call(callObject);
46

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 JavaDoc[] 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 // Not implemented by shell
68
// callObject.reInit();
69
// callObject.setOpnum(2);
70
// callObject.addOutParamAsType(JIInterfacePointer.class,JIFlags.FLAG_NULL);
71
// result = folder.call(callObject);
72
// test = ComFactory.createCOMInstance(shellDispatch,(JIInterfacePointer)result[0]);
73

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 JavaDoc.class,JIFlags.FLAG_NULL);
89         result = folderItems.call(callObject);
90         
91         int count = ((Integer JavaDoc)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             //VARIANT_BOOL is Boolean
120
callObject2.addOutParamAsType(Boolean JavaDoc.class,JIFlags.FLAG_NULL);
121             result = folderItem.call(callObject2);
122             
123             boolean isFileSystemObject = ((Boolean JavaDoc)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 JavaDoc.class),JIFlags.FLAG_NULL);
138             result = folderItem.call(callObject2);
139             System.out.print(" and size(in bytes) is: " + ((Integer JavaDoc)result[0]).intValue() + "\n");
140             
141         }
142         
143     }
144     
145     
146     
147     public static void main(String JavaDoc[] 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 JavaDoc e) {
160             // TODO Auto-generated catch block
161
e.printStackTrace();
162         } catch (JIException e) {
163             // TODO Auto-generated catch block
164
e.printStackTrace();
165         }
166     }
167
168 }
169
Popular Tags