blob: bd08518c22ef1793b2e551de56ec246c68999686 [file] [log] [blame]
Attribute VB_Name = "RunServer"
'*************************************************************************
'
' Licensed to the Apache Software Foundation (ASF) under one
' or more contributor license agreements. See the NOTICE file
' distributed with this work for additional information
' regarding copyright ownership. The ASF licenses this file
' to you under the Apache License, Version 2.0 (the
' "License"); you may not use this file except in compliance
' with the License. You may obtain a copy of the License at
'
' http://www.apache.org/licenses/LICENSE-2.0
'
' Unless required by applicable law or agreed to in writing,
' software distributed under the License is distributed on an
' "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
' KIND, either express or implied. See the License for the
' specific language governing permissions and limitations
' under the License.
'
'*************************************************************************
Option Explicit
Private Declare Function WritePrivateProfileString Lib "kernel32" _
Alias "WritePrivateProfileStringA" _
(ByVal lpSectionName As String, _
ByVal lpKeyName As Any, _
ByVal lpString As Any, _
ByVal lpFileName As String) As Long
Const CWORD_DRIVER = "_OOoDocAnalysisWordDriver.doc"
Const CEXCEL_DRIVER = "_OOoDocAnalysisExcelDriver.xls"
Const CPP_DRIVER = "_OOoDocAnalysisPPTDriver.ppt"
Const CWORD_APP = "word"
Const CEXCEL_APP = "excel"
Const CPP_APP = "pp"
Const CSTART_FILE = "PAW_Start_Analysis"
Const CSTOP_FILE = "PAW_Stop_Analysis"
Sub Main()
Dim serverType As String
serverType = LCase(Command$)
If (serverType <> CWORD_APP) And (serverType <> CEXCEL_APP) And (serverType <> CPP_APP) Then
MsgBox "Unknown server type: " & serverType
GoTo FinalExit
End If
Dim fso As New FileSystemObject
Dim driverName As String
If (serverType = CWORD_APP) Then
driverName = fso.GetAbsolutePathName(".\" & CWORD_DRIVER)
ElseIf (serverType = CEXCEL_APP) Then
driverName = fso.GetAbsolutePathName(".\" & CEXCEL_DRIVER)
ElseIf (serverType = CPP_APP) Then
driverName = fso.GetAbsolutePathName(".\" & CPP_DRIVER)
End If
If Not fso.FileExists(driverName) Then
If (serverType = CWORD_APP) Then
driverName = fso.GetAbsolutePathName(".\Resources\" & CWORD_DRIVER)
ElseIf (serverType = CEXCEL_APP) Then
driverName = fso.GetAbsolutePathName(".\Resources\" & CEXCEL_DRIVER)
ElseIf (serverType = CPP_APP) Then
driverName = fso.GetAbsolutePathName(".\Resources\" & CPP_DRIVER)
End If
End If
If Not fso.FileExists(driverName) Then
WriteToLog fso, "ALL", "LaunchDrivers: Could not find: " & driverName
GoTo FinalExit
End If
If (serverType = CWORD_APP) Then
OpenWordDriverDoc fso, driverName
ElseIf (serverType = CEXCEL_APP) Then
OpenExcelDriverDoc fso, driverName
ElseIf (serverType = CPP_APP) Then
OpenPPDriverDoc fso, driverName
End If
FinalExit:
Set fso = Nothing
End Sub
Sub OpenWordDriverDoc(fso As FileSystemObject, driverName As String)
Dim wrdApp As Word.Application
Dim wrdDriverDoc As Word.Document
On Error GoTo HandleErrors
Set wrdApp = New Word.Application
Set wrdDriverDoc = wrdApp.Documents.Open(driverName)
wrdApp.Run ("AnalysisTool.AnalysisDriver.AnalyseDirectory")
If Err.Number <> 0 Then
WriteToLog fso, CWORD_APP, "OpenWordDriverDoc: " & Err.Number & " " & Err.Description & " " & Err.Source
End If
wrdDriverDoc.Close wdDoNotSaveChanges
wrdApp.Quit False
FinalExit:
Set wrdDriverDoc = Nothing
Set wrdApp = Nothing
Exit Sub
HandleErrors:
WriteToLog fso, CWORD_APP, "OpenWordDriverDoc: " & Err.Number & " " & Err.Description & " " & Err.Source
Resume FinalExit
End Sub
Sub OpenExcelDriverDoc(fso As FileSystemObject, driverName As String)
Dim excelApp As Excel.Application
Dim excelDriverDoc As Excel.Workbook
On Error GoTo HandleErrors
Set excelApp = New Excel.Application
Set excelDriverDoc = Excel.Workbooks.Open(driverName)
excelApp.Run ("AnalysisTool.AnalysisDriver.AnalyseDirectory")
If Err.Number <> 0 Then
WriteToLog fso, CEXCEL_APP, "OpenExcelDriverDoc: " & Err.Number & " " & Err.Description & " " & Err.Source
End If
excelDriverDoc.Close False
excelApp.Quit
FinalExit:
Set excelDriverDoc = Nothing
Set excelApp = Nothing
Exit Sub
HandleErrors:
WriteToLog fso, CEXCEL_APP, "OpenExcelDriverDoc: " & Err.Number & " " & Err.Description & " " & Err.Source
Resume FinalExit
End Sub
Sub OpenPPDriverDoc(fso As FileSystemObject, driverName As String)
Dim ppApp As PowerPoint.Application
Dim ppDriverDoc As PowerPoint.Presentation
Dim ppDummy(0) As Variant
On Error GoTo HandleErrors
Set ppApp = New PowerPoint.Application
ppApp.Visible = msoTrue
Set ppDriverDoc = ppApp.Presentations.Open(driverName) ', msoTrue, msoFalse, msoFalse)
ppApp.Run ("AnalysisDriver.AnalyseDirectory")
If Err.Number <> 0 Then
WriteToLog fso, CPP_APP, "OpenPPDriverDoc: " & Err.Number & " " & Err.Description & " " & Err.Source
End If
ppDriverDoc.Close
ppApp.Quit
FinalExit:
Set ppDriverDoc = Nothing
Set ppApp = Nothing
Exit Sub
HandleErrors:
WriteToLog fso, CPP_APP, "OpenPPDriverDoc: " & Err.Number & " " & Err.Description & " " & Err.Source
Resume FinalExit
End Sub
Sub WriteToLog(fso As FileSystemObject, currApp As String, errMsg As String)
On Error Resume Next
Static ErrCount As Long
Dim logFileName As String
Dim tempPath As String
tempPath = fso.GetSpecialFolder(TemporaryFolder).Path
If (tempPath = "") Then tempPath = "."
logFileName = fso.GetAbsolutePathName(tempPath & "\LauchDrivers.log")
ErrCount = ErrCount + 1
Call WritePrivateProfileString("ERRORS", currApp & "_log" & ErrCount, _
errMsg, logFileName)
End Sub