Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.04.2009, 02:55
dm-451 dm-451 вне форума
Прохожий
 
Регистрация: 23.04.2009
Сообщения: 9
Репутация: 10
По умолчанию Winexec и завершение процесса

Здравствуйте. Использую команду
Код:
WinExec('D:\program files\winrar\rar.exe a -f -hp[123] D:\\123.rar D:\\myfilename.txt',0);
для добавления файла в архив. Всё хорошо добавляется, но после выполнения в процессах висит Rar.exe. И, например, при попытке перезаписать архив - ругается, что этот архив используется другим приложением. Приходится вручную убивать процесс в диспетчере задач. Подскажите, пожалуйста, как это можно реализовать в делфи или какой-нибудь другой способ работы с архивами?
Заранее благодарен.
Ответить с цитированием
  #2  
Старый 24.04.2009, 11:03
Аватар для uberchel
uberchel uberchel вне форума
Прохожий
 
Регистрация: 25.02.2009
Сообщения: 18
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Держи!

Код:
// Не забудь поставить модуль в
implementation
uses TLhelp32;

// Функция KillTask
function KillTask(ExeFileName: string): integer;
const PROCESS_TERMINATE=$0001;
var ContinueLoop: BOOL; 
FSnapshotHandle: THandle;
FProcessEntry32: TProcessEntry32;
begin result := 0;  
FSnapshotHandle := CreateToolhelp32Snapshot (TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while integer(ContinueLoop)<> 0 do begin
if ((UpperCase(ExtractFileName(FProcessEntry32.szExeFile)) = UpperCase(ExeFileName)) or 
(UpperCase(FProcessEntry32.szExeFile) = UpperCase(ExeFileName))) then
Result := Integer(TerminateProcess(OpenProcess( PROCESS_TERMINATE, BOOL(0), FProcessEntry32.th32ProcessID), 0));
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);end;
CloseHandle(FSnapshotHandle); 
end;

//Вот твой код
WinExec('D:\program files\winrar\rar.exe a -f -hp[123] D:\\123.rar
D:\\myfilename.txt',0); 
KillTask('rar.exe'); // А вот так убиваем процесс

Последний раз редактировалось Admin, 24.04.2009 в 11:44.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 09:01.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025