Страница: 1 |
Страница: 1 |
Вопрос: CreateProcessA
Добавлено: 12.02.07 21:07
Автор вопроса: Makes
Своей прогой запускаю консольный архиватор и жду завершения его работы. Все работает, все хорошо, но хотелось бы, чтобы при запуске архиватора не было видно черного окна cmd.exe. Как этого можно добиться?
Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessID As Long
dwThreadID As Long
End Type
Private Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Long
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
Private Declare Function CloseHandle Lib "kernel32" (ByVal _
hObject As Long) As Long
Private Declare Function CreateProcessA Lib "kernel32" (ByVal _
lpApplicationName As Long, ByVal lpCommandLine As String, ByVal _
lpProcessAttributes As Long, ByVal lpThreadAttributes As Long, _
ByVal bInheritHandles As Long, ByVal dwCreationFlags As Long, _
ByVal lpEnvironment As Long, ByVal lpCurrentDirectory As Long, _
lpStartupInfo As STARTUPINFO, lpProcessInformation As _
PROCESS_INFORMATION) As Long
Private Declare Function WaitForSingleObject Lib "kernel32" (ByVal _
hHandle As Long, ByVal dwMilliseconds As Long) As Long
Private Const INFINITE = -1&
Private Const NORMAL_PRIORITY_CLASS = &H20&
Dim strFilePath As String
Sub RunPause(strFilePath)
Dim Process As PROCESS_INFORMATION
Dim RunProg As STARTUPINFO
Dim RetVal
RunProg.cb = Len(RunProg)
RetVal = CreateProcessA(0&, strFilePath, 0&, 0&, 1&, _
NORMAL_PRIORITY_CLASS, 0&, 0&, RunProg, Process)
RetVal = WaitForSingleObject(Process.hProcess, INFINITE)
RetVal = CloseHandle(Process.hProcess)
End Sub
Private Sub Command1_Click()
RunPause ("C:\Rar.exe a C:\data C:\1.txt C:\2.txt -inul -m3")
MsgBox "Программа завершена", vbInformation, "Конец."
End
End Sub
Ответы
Всего ответов: 8
Номер ответа: 1
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #1
Добавлено: 13.02.07 00:33
Либо указываешь в lpDesktop имя другого десктопа, либо в wShowWindow SW_HIDE, либо перенаправляешь хандлы ввода/вывода hStdInput, hStdOutput, hStdError - по идее тогда окошко консоли появляться не будет.
Номер ответа: 2
Автор ответа:
Makes
Вопросов: 8
Ответов: 36
Профиль | | #2
Добавлено: 13.02.07 19:02
С десктопом помогло. Спасибо.
Номер ответа: 3
Автор ответа:
Stepan
Вопросов: 9
Ответов: 32
Профиль | | #3
Добавлено: 25.02.07 14:45
Подскажите, а что означает оператор -inul (все файлы кроме мр3)
Заранее спасибо.
Номер ответа: 4
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #4
Добавлено: 25.02.07 15:35
А не слабо ли почитать rar.txt в папке winrar в поисках ответа на этот вопрос?..
Номер ответа: 5
Автор ответа:
Stepan
Вопросов: 9
Ответов: 32
Профиль | | #5
Добавлено: 25.02.07 22:23
Точно, глупый вопрос
Номер ответа: 6
Автор ответа:
Антон
Вопросов: 0
Ответов: 1
Профиль | | #6
Добавлено: 13.08.08 12:31
создай константу
Private Const STARTF_USESHOWWINDOW& = &H1
а в функции RunPause
RunProg.dwFlags = STARTF_USESHOWWINDOW
RunProg.wShowWindow = 0
wShowWindow может принимать следующие заначения
0 - Window is hidden and focus is passed to the hidden window.
1 - Window has focus and is restored to its original size and position.
2 - Window is displayed as an icon with focus.
3 - Window is maximized with focus.
4 - Window is restored to its most recent size and position. The currently active window remains active.
6 - Window is displayed as an icon. The currently active window remains active.
Номер ответа: 7
Автор ответа:
Администратор
ICQ: 278109632
Вопросов: 42
Ответов: 3949
Web-сайт:
Профиль | | #7
Добавлено: 13.08.08 12:53
Давайте уже в правила добавим данный случай?
Номер ответа: 8
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #8
Добавлено: 14.08.08 07:04
Блин, а я уже обрадовался, какие люди пожаловали - Sharp, GSerg...