использование WaitforSingleObject и CreateProcess

SergoM
Дата: 20.11.2007 14:10:44
Уважаемые!

использую данные функции, вызываю их на форме по нажатию кнопки.
CreateProcess вызывас с параметром SW_HIDE.
на форме есть еще контролы. так вот возникает вопрос. как сделать чтобы после вызова
WaitforSingleObject я мог перетягивать главную форму, мог позиционироваться в любой контрол мышой, и т.д. Код такой :
while (WaitforSingleObject(ProcessInfo.hProcess, 200) = WAIT_TIMEOUT) do
begin
objForm.repaint;
objForm.Show;
end;
пока не сделал
objForm.repaint;
objForm.Show;
так форма вообще не появлялась если по Alt + Tab закрывало другое приложение. как я понимаю в цикле надо поставить отправку всех сообщений (активизация приложения, таскание формы, позиционирование на контролы, и др.действия - если они делались). как это сделать?
S.PR
Дата: 20.11.2007 15:58:32
WaitforSingleObject приостанавливает работу запустившего потока
alex0
Дата: 20.11.2007 16:50:46
while (WaitforSingleObject(ProcessInfo.hProcess, 200) = WAIT_TIMEOUT) do Application.ProcessMessages;
Warstone
Дата: 20.11.2007 17:25:29
SergoM
Уважаемые!

использую данные функции, вызываю их на форме по нажатию кнопки.
CreateProcess вызывас с параметром SW_HIDE.
на форме есть еще контролы. так вот возникает вопрос. как сделать чтобы после вызова
WaitforSingleObject я мог перетягивать главную форму, мог позиционироваться в любой контрол мышой, и т.д. Код такой :
while (WaitforSingleObject(ProcessInfo.hProcess, 200) = WAIT_TIMEOUT) do
begin
objForm.repaint;
objForm.Show;
end;
пока не сделал
objForm.repaint;
objForm.Show;
так форма вообще не появлялась если по Alt + Tab закрывало другое приложение. как я понимаю в цикле надо поставить отправку всех сообщений (активизация приложения, таскание формы, позиционирование на контролы, и др.действия - если они делались). как это сделать?


А зачем тебе WaitForSingleObject?
S.PR
Дата: 20.11.2007 17:31:01
alex0
while (WaitforSingleObject(ProcessInfo.hProcess, 200) = WAIT_TIMEOUT) do Application.ProcessMessages;

см WaitForInputIdle