Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Проблема с консольными приложениями

6.5K
28 ноября 2005 года
a.k.a Throne
39 / / 07.08.2005
Здорово, программеры! Есть достаточно серьезная проблема: Я пишу прогу для CD-ripping-а. После того как CDA конвертируется в WAV, а затем с помощью LAME(lame.exe) - WAV в MP3. Но есть BIG-PROBLEM - в WAV кодируются все файлы сразу, т.е lame.exe запускается по несколько раз. Как узнать, когда произошло завершение работы lame.exe для кодирования следующих файлов. Для запуска я использую ShellExecute.
303
29 ноября 2005 года
makbeth
1.0K / / 25.11.2004
Цитата:
Originally posted by a.k.a Throne
Здорово, программеры! Есть достаточно серьезная проблема: Я пишу прогу для CD-ripping-а. После того как CDA конвертируется в WAV, а затем с помощью LAME(lame.exe) - WAV в MP3. Но есть BIG-PROBLEM - в WAV кодируются все файлы сразу, т.е lame.exe запускается по несколько раз. Как узнать, когда произошло завершение работы lame.exe для кодирования следующих файлов. Для запуска я использую ShellExecute.


Необходимо использовать не ShellExecute, а CreateProcess, полученный handle использовать в WaitForSingleObject.

6.5K
30 ноября 2005 года
a.k.a Throne
39 / / 07.08.2005
Ты не мог бы по подробнее, а то у меня нет Windows SDK?
303
01 декабря 2005 года
makbeth
1.0K / / 25.11.2004
Цитата:
Originally posted by a.k.a Throne
Ты не мог бы по подробнее, а то у меня нет Windows SDK?


Код:
function ExecuteAndWait(AFileName: string): boolean;
var si: TStartupInfo;
    pid: TProcessInformation;
begin
    ZeroMemory(@si, SizeOf(si));
    si.cb:=SizeOf(si);
    Result:=CreateProcess(AFileName, // имя файла
                  '',            // командная строка
                  nil,           // SecurityAttributes для процесса
                  nil,           // SecurityAttributes для главного потока процесса
                  false,         // inherit handles?
                  0,             // flags
                  nil,           // environment
                  nil,           // текущая директория
                  si,
                  pid)
   if Result then
   begin
       WaitForSingleObject(pid.hProcess, INFINITE);
       CloseHandle(pid.hProcess);
   end;
end;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог