GSerg, я как раз это видел, просто думал что моя проблема решается проще, оказалось что нет (:.
теперь я пытаюсь решить проблему при помощи CreateProcess как написано в
http://bbs.vbstreets.ru/viewtopic.php?t ... ateprocess Andrey Fedorov.
Его пример с notepad у меня работает, а вот почему-то мою строку Create Process запускать не желает, подозреваю что это из-за пробелов, но возможно и нет
Debug.Print strCommandLine дает вот что:
- Код: Выделить всё
D:\my_work\BuPr\arj.exe e -y D:\my_work\BuPr\BD\DE0405.ARJ D:\my_work\BuPr\BD\
- Код: Выделить всё
Public Function StartFile(ByRef strCommandLine As String, _
Optional ByRef bDebug As Boolean = False, _
Optional ByRef strCurrentDirectory As Variant, _
Optional ByRef hStdInput As Variant, _
Optional ByRef hStdOutput As Variant, _
Optional ByRef hStdError As Variant) As Long
Const WAIT_FAILED = -1, INFINITE = -1, WAIT_TIMEOUT& = &H102&
Const CREATE_NEW_CONSOLE = &H10, DETACHED_PROCESS = &H8
Dim s As String, lngDebug As Long, lngError As Long, iWait As Long
Dim lngStdInput As Long, lngStdOutput As Long, lngStdError As Long
Dim usrPI As PROCESS_INFORMATION, usrSI As STARTUPINFO
lngDebug = IIf(bDebug, CREATE_NEW_CONSOLE, DETACHED_PROCESS)
usrSI.cb = Len(usrSI)
If Not IsMissing(hStdInput) Then If hStdInput > 0 Then usrSI.hStdInput = hStdInput: usrSI.dwFlags = &H100
If Not IsMissing(hStdOutput) Then If hStdOutput > 0 Then usrSI.hStdOutput = hStdOutput: usrSI.dwFlags = &H100
If Not IsMissing(hStdError) Then If hStdError > 0 Then usrSI.hStdError = hStdError: usrSI.dwFlags = &H100
If 1 = CreateProcess(0, strCommandLine, 0, 0, 1, _
lngDebug, 0, s, usrSI, usrPI) Then
iWait = WAIT_TIMEOUT
Do
iWait = WaitForSingleObject(usrPI.hProcess, 20)
DoEvents
Loop Until iWait <> WAIT_TIMEOUT
If iWait = WAIT_FAILED Then
CloseHandle usrPI.hProcess
StartFile = -1
Else
GetExitCodeProcess usrPI.hProcess, lngError
CloseHandle usrPI.hProcess
If lngError <> 0 Then StartFile = lngError
End If
Else
StartFile = -1
End If
End Function
т.е. когда начинается проверка
- Код: Выделить всё
If 1 = CreateProcess(0, strCommandLine, 0, 0, 1, _
lngDebug, 0, s, usrSI, usrPI) Then
CreateProcess веозвращает 0, и своими силами я пока не могу справиться, подскажите что можно попробывать сделать ?