vb代码如下:
Private Sub MR_Curr_Click()
Dim ss$, ss1$, ss2$, PId As Long, PHandle As Long, PStat As Long
Dim TermCode As Long
Dim msg1 As String, MsgFlag As Integer, istat As Integer
MF_Save_Click ' save the current file
Close #1 ' close it
ss$ = App.Path & "\ses41.exe " & """" & SESFile & """"
' EXECUTE SES
Err.Clear
frmMain.MousePointer = vbHourglass
PId = Shell(ss$, 4)
If Err.Number > 0 Then
MsgBox "Error Number" & Str(Err.Number) & _
vbCrLf & Err.Description & _
vbCrLf & "Executing " & ss$
Err.Clear
GoTo RunErr
End If
PHandle = OpenProcess(PROCESS_QUERY_INFORMATION, False, PId)
If Err.Number > 0 Then
MsgBox "Error Number" & Str(Err.Number) & _
vbCrLf & Err.Description & _
vbCrLf & "Getting Process handle"
Err.Clear
End If
' Wait for SES to complete
Do
GetExitCodeProcess PHandle, PStat
DoEvents
Sleep 2000
Loop While (PStat = STILL_ACTIVE)
TermCode = PStat
' PStat = TerminateProcess(PHandle, 0&)
' PStat = CloseHandle(PHandle)
PStat = CloseHandle(PHandle)
MsgFlag = 64
Select Case TermCode
Case 0
msg1 = "Run Completed" & vbCrLf & "Status Unknown"
Case 100
msg1 = "Run Completed Successfully"
Case 99
msg1 = "Input Verification Successful"
Case 1 To 14
msg1 = "Failed Input Verification" & vbCrLf & "In Form " & Str(TermCode)
Case 15
msg1 = "Simulation Failed"
Case 16
msg1 = "Heat Sink Analysis Failed"
Case 101
msg1 = "Error Opening" & vbCrLf & "Input File" & vbCrLf & SESFile
Case 102
msg1 = "Error Opening" & vbCrLf & "Temporary Output File"
Case 103
msg1 = "Error Opening" & vbCrLf & "Restart Input File"
Case 104
msg1 = "Error Opening" & vbCrLf & "Restart Output File"
Case 105
msg1 = "Error ReOpening" & vbCrLf & "Temporary Output File" & vbCrLf & "for Input"
Case 106
msg1 = "Error Opening" & vbCrLf & "Formatted Output File"
Case Else
msg1 = "Execution Failed" & vbCrLf & "Exit Code: " & Str(TermCode)
MsgFlag = 16
End Select
MsgFlag = MsgFlag + 4
istat = MsgBox(msg1 & vbCrLf & "Review Listing?", MsgFlag, "Run Status")
If istat = vbYes Then
istat = Len(SESFile) - 3
If Mid$(SESFile, istat, 1) = "." Then
ss1$ = Left(SESFile, istat) + "tmp"
ss2$ = Left(SESFile, istat) + "prn"
Else
ss1$ = SESFile + ".tmp"
ss2$ = SESFile + ".prn"
End If
On Error Resume Next
Open ss1$ For Input As #88
If Err.Number = 0 Then
Close #88
Shell "notepad " & ss1$, 1
Else
Shell "notepad " & ss2$, 1
End If
End If
RunErr:
frmMain.MousePointer = vbDefault
End Sub
Private Sub MV_Reset_Click()
frmMain.Move (Screen.Width - iDgnW) / 2, (Screen.Width - iDgnW) / 2, iDgnW, iDgnH
TheFont = ""
TheFontSize = 0
End Sub
Private Sub tbDgnHr_Change()
Changed = True
End Sub
采用java语言调用时exe文件时,应将命令中的空格替换掉
cmd= cmd.replaceAll(" ","\" \"");
rt = Runtime.getRuntime();
proc = rt.exec("cmd /c " + cmd, null, dir);