![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
выполнение winExec [D7, Win2k]
stock © (2006-06-29 07:40:00)Здравствуйте !
Выполняю WinExec как
Result := (WinExec(PChar(firstStepImport), SW_HIDE) >= 32);
//firstStepImport is type string
Далее выполняются другие действия. Создаётся ощущение, что указанная строка выполняется асихронно. Если установить после неё точку останова, всё отрабатывается как ожидается. Удаляю точку останова - ошибка. Следующие шаги работают с данными, используемыми в этой строке. Может ли иметь место асинхронность ?
stock (2006-06-29 11:27:00) [1]Спасибо, Desdechado.
Desdechado (2006-06-29 11:16:00) [2]Вообще-то про GetMessage написано другое. Написано, что должен вызывать запускаемый процесс, а не запускающая его программа.
> для определения завершения процесса
Так тебе нужно дождаться завершения? Это ж совсем другая задача.
WaitForSingleObject
stock (2006-06-29 11:06:00) [3]Спасибо. А как использовать GetMessage для определения завершения процесса hWnd := WinExec(...) ?
Desdechado (2006-06-29 10:40:00) [4]Винда - система событийная. Здесь у нее происходит событие запуска программы. Когда она стартует и отработает, зависит от многих факторов: от мощи компа, от загруженности винды в настоящий момент и т.п.
И в примечании к WinExec в справке:
In Win32, the WinExec function returns when the started process calls the GetMessage function or a time-out limit is reached. To avoid waiting for the time out delay, call the GetMessage function as soon as possible in any process started by a call to WinExec.