Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: CreateProcessA Добавлено: 12.02.07 21:07  

Автор вопроса:  Makes
Своей прогой запускаю консольный архиватор и жду завершения его работы. Все работает, все хорошо, но хотелось бы, чтобы при запуске архиватора не было видно черного окна cmd.exe. Как этого можно добиться?


Option Explicit
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-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: domkratt.com
 Профиль | | #7
Добавлено: 13.08.08 12:53
Вопрос: CreateProcessA Добавлено: 12.02.07 21:07

Давайте уже в правила добавим данный случай?

Ответить

Номер ответа: 8
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #8 Добавлено: 14.08.08 07:04
Блин, а я уже обрадовался, какие люди пожаловали - Sharp, GSerg...

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам