Цитата South:
может и простой, но работает дольше чем WaitForMultipleObjects,WaitForSingleObjects »
|
здесь ничего возразить не могу, просто не знаю, кто быстрее.
Цитата South:
я предложил использовать hProcess, который не будет освобожден, пока не вызван CloseHandle »
|
Согласен, но сразу забыл сказать, что PI.hProcess, не знаю почему, но именно в Inno показывает не верное значение, может где-то, что я не так сделал…
Это можно увидеть, если добавить сообщение в функцию _StartProc, пример:
Код:

ProcessName:= ExtractFileName(Filename);
ProcessId:= PI.dwProcessId;
MsgBox('Запущена программа: ' + ProcessName + #13#10 +
'PI.hProcess: ' + IntToStr(PI.hProcess) + #13#10 +
'_OpenProcess: ' + IntToStr(_OpenProcess(PROCESS_ALL_ACCESS, False, ProcessId)),
mbInformation, MB_OK);
_CloseHandle(PI.hProcess);
_CloseHandle(PI.hThread);
Цитата South:
в общем случае да, будет мертвым, а если его использовать как я предложил, то должен ожить »
|
теоретически да, но я не пробовал, врать не буду.
Цитата South:
а про таймер, ваша религия позволила вам использовать системные библиотеки, так почему же не использовать SetTimer и KillTimer »
|
Причём тут религия? Попробуйте, в стандартной версии SetTimer и у вас вылетит ошибка. Цель написания скрипта была, чтоб с ним можно было работать в разных версиях Inno и не тащить с собой в инсталляторе дополнительные библиотеки.
А так понятно, можно было написать отдельную dll'ку и всего это скрипта не надо, но этих dll'ок и так уже куча...
P.S.
Код:

const
PROCESS_ALL_ACCESS = $000F0000 or $00100000 or $FFF;