Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 1133
Благодарности: 581

Профиль | Отправить PM | Цитировать


Цитата 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;

-------
Книги нужны, чтобы напоминать человеку, что его оригинальные мысли не так уж новы... Авраам Линкольн.


Отправлено: 22:32, 21-01-2010 | #896