1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_shell.hxx"
26 
27 
28 //-----------------------------------------------------------
29 //	interface includes
30 //-----------------------------------------------------------
31 #include <com/sun/star/lang/XComponent.hpp>
32 #include <com/sun/star/registry/XSimpleRegistry.hpp>
33 #include <com/sun/star/system/XSystemShellExecute.hpp>
34 #include <cppuhelper/servicefactory.hxx>
35 
36 
37 #include <osl/file.hxx>
38 
39 //--------------------------------------------------------------
40 //	other includes
41 //--------------------------------------------------------------
42 #include <cppuhelper/servicefactory.hxx>
43 #include <rtl/ustring.hxx>
44 #include <sal/types.h>
45 #include <osl/diagnose.h>
46 
47 #include <stdio.h>
48 
49 #if defined _MSC_VER
50 #pragma warning(push, 1)
51 #endif
52 #include <windows.h>
53 #if defined _MSC_VER
54 #pragma warning(pop)
55 #endif
56 
57 //--------------------------------------------------------------
58 //	namesapces
59 //--------------------------------------------------------------
60 
61 using namespace	::rtl					;
62 using namespace	::cppu					;
63 using namespace	::com::sun::star::uno	;
64 using namespace	::com::sun::star::lang	;
65 using namespace std						;
66 using namespace com::sun::star::system;
67 
68 //--------------------------------------------------------------
69 //	defines
70 //--------------------------------------------------------------
71 
72 #define RDB_SYSPATH "D:\\Projects\\gsl\\shell\\wntmsci7\\bin\\applicat.rdb"
73 
74 //--------------------------------------------------------------
75 //	global variables
76 //--------------------------------------------------------------
77 
78 Reference< XMultiServiceFactory >	g_xFactory;
79 
80 
81 //--------------------------------------------------------------
82 //	main
83 //--------------------------------------------------------------
84 
85 
86 // int SAL_CALL main(int nArgc, char* Argv[], char* Env[]	)
87 int SAL_CALL main(int nArgc, char* Argv[], char*	)
88 {
89 	//-------------------------------------------------
90 	// get the global service-manager
91 	//-------------------------------------------------
92 
93     if ( nArgc < 4 )
94         return 0;
95 
96 	// Get global factory for uno services.
97 	OUString rdbName = OUString( RTL_CONSTASCII_USTRINGPARAM( RDB_SYSPATH ) );
98 	Reference< XMultiServiceFactory > g_xFactory( createRegistryServiceFactory( rdbName ) );
99 
100 	// Print a message if an error occurred.
101 	if ( g_xFactory.is() == sal_False )
102 	{
103 		OSL_ENSURE(sal_False, "Can't create RegistryServiceFactory");
104 		return(-1);
105 	}
106 
107 	printf("Creating RegistryServiceFactory successful\n");
108 
109 	//-------------------------------------------------
110 	// try to get an Interface to a XFilePicker Service
111 	//-------------------------------------------------
112 
113 	Reference< XSystemShellExecute > xSysShExec(
114         g_xFactory->createInstance( OUString::createFromAscii( "com.sun.star.system.SystemShellExecute" ) ), UNO_QUERY );
115 
116 	if ( !xSysShExec.is() )
117 	{
118 		OSL_ENSURE( sal_False, "Error creating SystemShellExecute Service" );
119 		return(-1);
120 	}
121 
122     //"c:\\winnt\\notepad.exe"
123     OUString cmd = OUString::createFromAscii( Argv[1] );
124     OUString param = OUString::createFromAscii( Argv[2] ); //c:\\winnt\\iis5.log
125 
126     try
127     {
128         xSysShExec->execute( cmd, param, atoi( Argv[3] ) );
129     }
130     catch( SystemShellExecuteException&  )
131     {
132         OSL_ENSURE( sal_False, "Error executing system command" );
133     }
134     catch( IllegalArgumentException& )
135     {
136         OSL_ENSURE( sal_False, "Invalid parameter" );
137     }
138 
139 	//--------------------------------------------------
140 	// shutdown
141 	//--------------------------------------------------
142 
143 	// Cast factory to XComponent
144 	Reference< XComponent > xComponent( g_xFactory, UNO_QUERY );
145 
146 	// Print a message if an error occurred.
147 	if ( xComponent.is() == sal_False )
148 	{
149 		OSL_ENSURE(sal_False, "Error shuting down");
150 	}
151 
152 	// Dispose and clear factory
153 	xComponent->dispose();
154 	g_xFactory.clear();
155 	g_xFactory = Reference< XMultiServiceFactory >();
156 
157 	printf("Test successful\n");
158 
159 	return 0;
160 }
161