| 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 |