Функция CreateProcess
Declare Function CreateProcess Lib "kernel32" Alias CreateProcessA" ( _
ByVal lpApplicationName As String, _
ByVal lpCommandLine As String, _
lpProcessAttributes As Any, _
lpThreadAttributes As Any, _
ByVal bInheritHandles As Long, _
ByVal dwCreationFlags As Long, _
lpEnvironment As Any, _
ByVal lpCurrentDriectory As String, _
lpStartupInfo As STARTUPINFO, _
lpProcessInformation As PROCESS_INFORMATION) As Long
CreateProcess создает новый процесс и его главный поток. Новый процесс запускает заданный исполняемый файл.
- lpApplicationName
- Строка с завершающим нулевым символом, задающая модуль для исполнения. Может включать полное имя и путь файла или часть имени (в этом случае используется текущий диск и текущая папка)
- lpCommandLine
- Строка с завершающим нулевым символом, задающая командную строку. Система добавляет нулевой символ в командную строку (при необходимости обработайте эту ситуацию)
- lpProcessAttributes
- Структура SECURITY_ATTRIBUTES, определяющая атрибуты безопасности процесса, или ноль (замените объявление на ByVal as Long)
- lpThreadAttributes
- Структура SECURITY_ATTRIBUTES, определяющая атрибуты безопасности первичной нити процесса, или ноль (замените объявление на ByVal as Long)
- bInheritHandles
- Если равен True, то разрешено наследование всех описателей текущего процесса вновь созданного дочернего процесса
- dwCreationFlags
- Комбинация различных флагов
NORMAL_PRIORITY_CLASS = &H20& | Стандартный приоритет |
- lpEnvironment
- Указатель на блок окружения
- lpCurrentDriectory
- Путь к текущему каталогу нового процесса. vbNullString соответствует текущему каталогу на момент вызова функции
- lpStartupInfo
- Структура STARTUPINFO с дополнительной информацией, используемой при создании процесса
- lpProcessInformation
- Структура PROCESS_INFORMATION, заполняемая идентификаторами процесса и нити для нового процесса
Пример
' Запустим калькулятор
Dim pInfo As PROCESS_INFORMATION
Dim sInfo As STARTUPINFO
Dim sNull As String
Dim lSuccess As Long
Dim lRet As Long
sInfo.cb = Len(sInfo)
lSuccess = CreateProcess(sNull, _
"Calc.exe", _
ByVal 0&, _
ByVal 0&, _
1&, _
NORMAL_PRIORITY_CLASS, _
ByVal 0&, _
sNull, _
sInfo, _
pInfo)
MsgBox "Калькулятор запущен!"
lRet = TerminateProcess(pInfo.hProcess, 0&)
lRet = CloseHandle(pInfo.hThread)
lRet = CloseHandle(pInfo.hProcess)
MsgBox "Калькулятор закрыт!"
Смотри также
CloseHandle, ExitProcess, OpenProcess
Категория
Процессы, нити и потоки