|
|
Выполняет ожидание указанного объекта.
Синтаксис
function WaitForSingleObject(
| Handle, | Period
| ): Enum;
|
Параметры
|
Параметр
| Тип
| Описание
|
Handle
| Number
| дескриптор объекта
|
Period
| Number
| время ожидания в миллисекундах или INFINITE (бесконечно)
|
|
Возвращаемое значение
|
Значение
| Описание
|
WAIT_ABANDONED
| ожидание объекта преждевременно прервано
|
WAIT_FAILED
| неудачное завершение функции
|
WAIT_OBJECT_0
| объект освободился
|
WAIT_TIMEOUT
| объект все еще занят
|
|
// Главная форма 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; }
|
// Консоль cns=new TConsole(); cns.StartCmd="echo Для выхода введите команду exit"; cns.Open();
// Ожидать окончания процесса WaitForSingleObject(cns.ProcessHandle,INFINITE); Sound(800,400);
|
// Консоль cns=new TConsole(); cns.StartCmd="echo Консоль автоматически закроется через 5 сек."; cns.Open();
// Закрыть процесс через 5 сек. WaitForSingleObject(cns.ProcessHandle,5000); cns.Close(); Sound(800,400);
|
Совместимость
Windows API
|
JS+ | Руководство пользователя
|
|
|
|
|
|