JS+
Усиленный язык сценариев для Windows
с возможностью встраивания
в ваши приложения
О языке JS+ Справочник Скачать JS+ DLL
Контакты
СПРАВОЧНИК ПО ЯЗЫКУ JS+ Содержание

CreateProcess

- функция WinAPI
Функции WinAPI
Создает новый процесс и его главный поток. Затем новый процесс запускает указанный исполняемый файл в контексте безопасности вызывающего процесса.
Синтаксис
function CreateProcess(
  AppFileName,
  CommandLine,
  ProcessAttr,
  ThreadAttr,
  InheritHandles,
  CreationFlags,
  Environment,
  CurrentDir,
  StartupInfo,
  ProcessInfo
): Boolean;

Параметры
Параметр Тип Описание
AppFileName String исполняемый файл
CommandLine String командная строка
ProcessAttr TSecurity_Attributes атрибуты доступа процесса или null
ThreadAttr TSecurity_Attributes атрибуты доступа потока или null
InheritHandles Boolean признак наследования наследуемых дескрипторов
CreationFlags Enumset комбинируемые флаги создания процесса (см. ниже)
Environment TStrings новый блок конфигурации процесса
CurrentDir String текущий каталог процесса
StartupInfo TStartupInfo стартовая информация процесса
ProcessInfo TProcessInformation информация о процессе

Параметр CreationFlags
Значение Описание
CREATE_BREAKAWAY_FROM_JOB разрешить возможность не связывать новый процесс и его дочерние процессы с заданием родительского процесса
CREATE_DEFAULT_ERROR_MODE не наследовать новым процессом режим ошибки родительского процесса и установить для него текущий, заданный по умолчанию, режим ошибки
CREATE_NEW_CONSOLE если новый процесс запускает консольное приложение, использовать для него новую консоль
CREATE_NEW_PROCESS_GROUP назначить новый процесс корневым процессом группы нового процесса
CREATE_NO_WINDOW если новый процесс запускает консольное приложение, запустить его без консольного окна
CREATE_PRESERVE_CODE_AUTHZ_LEVEL выполнить код нового процесса без автоматических ограничений
CREATE_SUSPENDED отложить запуск первичного потока нового процесса до вызова функции ResumeThread
CREATE_UNICODE_ENVIRONMENT блок конфигурации, указанный в параметре Environment, использует символы Unicode
DEBUG_ONLY_THIS_PROCESS перенести отладку родительского процесса на новый процесс
DEBUG_PROCESS запустить новый процесс, как отлаживаемый родительским процессом
DETACHED_PROCESS если новый процесс запускает консольное приложение, не наследовать для него родительскую консоль, и отложить создание новой консоли до вызова функции AllocConsole
Возвращаемое значение
true в случае успеха или false в противном случае.
Пример (JS+)
// Главная форма
frm=new TForm();
frm.Caption="JS+ - функция WinAPI CreateProcess";
frm.Width =525;
frm.Height=375;

// Строка состояния
stb=new TStatusBar(frm);

// Кнопка
btn=new TButton(frm);
btn.Caption="Блокнот";
btn.Left=(frm.ClientWidth-btn.Width)/2;
btn.Top =(stb.Top-btn.Height)/2-15;
btn.Hint="Запустить приложение notepad.exe";
btn.ShowHint=true;
btn.OnClick=btn_Click;

// Переключатель
chb=new TCheckBox(frm);
chb.Text="ждать завершения работы приложения "+btn.Caption;
chb.Width=chb.TextWidth(chb.Text)+20;
chb.Left=(frm.ClientWidth-chb.Width)/2;
chb.Top =btn.Top+btn.Height+15;
chb.Checked=true;

stb.SimpleText=" Для запуска приложения нажмите кнопку "+
btn.Caption;

frm.ShowModal();

// Обработчик события OnClick
function btn_Click(btn)
{
  stb.SimpleText=" Запуск приложения ...";

  stb.SimpleText=(app_Exec("notepad.exe",SW_SHOWNORMAL,chb.Checked)) ?
  " Успешный запуск приложения" :
  " Ошибка при запуске приложения ";
}

function app_Exec(exec_Str,show_Mode,wait_Flg)
{
  var si=new TStartupInfo();
  var pi=new TProcessInformation();

  si.dwFlags=STARTF_USESHOWWINDOW;
  si.wShowWindow=show_Mode;

  if (CreateProcess(
      null,exec_Str,null,null,false,0,null,null,si,pi)==false)
    return false;

  CloseHandle(pi.hThread);

  if (wait_Flg) {
    WaitForSingleObject(pi.hProcess,INFINITE);
    CloseHandle(pi.hProcess);
  }

  return true;
}
Совместимость
Windows API
JS+Руководство пользователя
Адрес этой страницы: http://jsplus.ru/MANUAL/JSPlus/WinAPI/Function/CreateProcess.htm
© 2024,