发布网友 发布时间:2024-08-07 05:24
共3个回答
热心网友 时间:2024-08-15 00:28
你可以只用一个进程解压所有文件,这样就不用循环了:热心网友 时间:2024-08-15 00:28
下面代码可以准确等待winrar解压完毕后继续下一个解压,始终只有1个unrar.exe进程:Option Explicit
Private Declare Function WaitForSingleObject Lib "kernel32" _
(ByVal hHandle As Long, ByVal dwMilliseconds As Long) _
As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal _
dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Private Const INFINITE = -1&
Private Const SYNCHRONIZE = &H100000
Sub RarExect(Rarml As String, Optional WindowStyle As VbAppWinStyle = vbNormalFocus) '等待winrar解压结束
Dim TaskID As Long ' Task-ID des DOS-Fensters
Dim ProcID As Long ' Prozess-ID des DOS-Fensters
TaskID = Shell(Rarml, WindowStyle)
DoEvents
ProcID = OpenProcess(SYNCHRONIZE, False, TaskID)
Call WaitForSingleObject(ProcID, INFINITE)
End Sub
Private Sub Command1_Click()
Dim i As Long
For i = 0 To 400
DoEvents
Label1 = "正在解压:" & i & ".rar"
'ileString = i & ".rar"
Call RarExect("unrar.exe " & " X " & "C:\复件成语故事\" & FileString & StrTxtFile & " C:\复件成语故事\" & "jy\", vbHide)
Next i
End Sub
热心网友 时间:2024-08-15 00:33
Result = Shell("unrar.exe " & " X " & "C:\复件成语故事\" & FileString & StrTxtFile & " C:\复件成语故事\" & "jy\", vbHide)