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

WaitForSingleObject

- функция WinAPI
Функции WinAPI
Выполняет ожидание указанного объекта.
Синтаксис
function WaitForSingleObject(
  Handle,
  Period
): Enum;

Параметры
Параметр Тип Описание
Handle Number дескриптор объекта
Period Number время ожидания в миллисекундах или INFINITE (бесконечно)

Возвращаемое значение
Значение Описание
WAIT_ABANDONED ожидание объекта преждевременно прервано
WAIT_FAILED неудачное завершение функции
WAIT_OBJECT_0 объект освободился
WAIT_TIMEOUT объект все еще занят
Пример 1 (JS+)
// Главная форма
frm=new TForm();
frm.Caption="JS+ - функция WinAPI WaitForSingleObject";
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;
}
Пример 2 (JS+)
// Консоль
cns=new TConsole();
cns.StartCmd="echo Для выхода введите команду exit";
cns.Open();

// Ожидать окончания процесса
WaitForSingleObject(cns.ProcessHandle,INFINITE);
Sound(800,400);
Пример 3 (JS+)
// Консоль
cns=new TConsole();
cns.StartCmd="echo Консоль автоматически закроется через 5 сек.";
cns.Open();

// Закрыть процесс через 5 сек.
WaitForSingleObject(cns.ProcessHandle,5000);
cns.Close();
Sound(800,400);
Совместимость
Windows API
См. также
JS+Руководство пользователя
Адрес этой страницы: http://jsplus.ru/MANUAL/JSPlus/WinAPI/Function/WaitForSingleObject.htm
© 2024,