Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.08.2008, 11:14   #1
Killbrum
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 206
По умолчанию Удаление файла из процесса

Всем доброго времени суток! Вот я уже доделываю свою программку (вскоре выложу ее только она спецыфичная, лаунчер для игры) но вот столкнулся с проблемкой. Запускать файл я научился, а вот убивать файл из процесса незнаю как. Может ктото подскажет? Не свой процес убить надо (там бы просто Close) а чужой . Мне например надо чтоб сторонняя программа запускалась (для чита) а моя программа ее убивала(закрывала). Подскажите пожалуйста как закрывать чужеродные программы. Большое спасибо!
Killbrum вне форума Ответить с цитированием
Старый 28.08.2008, 11:35   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну помоему тут уже это сто раз обсуждалось
Вот ключевые слова:
TerminateProcess
CreateToolhelp32Snapshot
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.08.2008, 12:11   #3
Killbrum
Форумчанин
 
Регистрация: 05.12.2007
Сообщений: 206
По умолчанию

Большое спасибо! Будем искать
Killbrum вне форума Ответить с цитированием
Старый 28.08.2008, 12:38   #4
Terran
Участник клуба
 
Аватар для Terran
 
Регистрация: 28.11.2007
Сообщений: 1,521
По умолчанию

Зная имя процесса, вы его можете убить так:

Код:
Uses
   Tlhelp32, 
-----------
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;
//------------------------------------------------------//
Procedure TForm1.FormCreate(Sender: TObject);
Begin
KillTask('winamp.exe');
End;
Если процесс не защищённый, то этот код его порвёт "как Тузик грелку"

Так же можно завершать приложения зная заголовок окна:

Код:
Procedure TForm1.Timer1Timer(Sender: TObject);
Var
H: HWND;
Begin
H:=FindWindow(Nil, 'Заголовок окна');
If H=0 Then Exit;
PostMessage(H, WM_QUIT, 0, 0);
End;
Всегда рад помочь!
Terran вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление файла mopozoff Общие вопросы Delphi 1 13.06.2008 21:25
Удаление/закрытие процесса Djaconda Win Api 2 13.06.2008 13:11
Удаление файла Македонский Общие вопросы Delphi 5 06.09.2007 11:46
Удаление строки из файла Македонский Общие вопросы Delphi 5 29.08.2007 15:40
Удаление записи с файла werser Помощь студентам 8 27.06.2007 06:25