Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TerminateProcess. ;How to use more then...


Andriy ©   (2003-07-19 15:39:00) 

Как сделать TerminateProcess, если я не знаю его ID, а только имя приложения, напр. “ Excel.exe”? Что-то похожее я нашёл в ToolsAPI , но не знаю как использовать эти свойства. Помогите, пожалуйста!!!!!!!!!!


Andriy   (2003-07-21 14:01:00) [1]

Спасибо всем!
Это заработало.
Следующий шаг к разрешению моей проблемы.
Мне нужно закрыть все Ексели, у которых нет форм.
Тоесть они торчат только в процессах.
Заранее спасибо.


ZZ   (2003-07-19 19:45:00) [2]

Ну вот опять с тем же вопросом...

sucer
Никак не могу понять смысла этого кода
aProcessHandle:=0;
aProcessHandle:=OpenProcess(PROCESS_TERMINATE,TRUE, data.th32ProcessID);
{if (ExtractFileName(paramstr(0))=ExtractFileName(path))and(ProcessID<>data.th32ProcessID) then
begin
// if (UpperCase(paramstr(1)[1])="S")or(UpperCase(paramstr(1)[2])="S") then SetWaveVolume($FFFFFFFF);
{TerminateProcess(aProcessHandle,0);
end; }
( aProcessHandle)

Ну вот опять с тем же вопросом...

sucer
Никак не могу понять смысла этого кода
aProcessHandle:=0;
aProcessHandle:=OpenProcess(PROCESS_TERMINATE,TRUE, data.th32ProcessID);
{if (ExtractFileName(paramstr(0))=ExtractFileName(path))and(ProcessID<>data.th32ProcessID) then
begin
// if (UpperCase(paramstr(1)[1])="S")or(UpperCase(paramstr(1)[2])="S") then SetWaveVolume($FFFFFFFF);
{TerminateProcess(aProcessHandle,0);
end; }
CloseHandle(aProcessHandle);


sucer   (2003-07-19 18:12:00) [3]

У меня 2 дня назад была похожая проблема вот мы ее и решили:
procedure KillProcessByName(FileName:string);
var
ProcessHandle,aProcessHandle: THandle;
ProcessID: DWORD;
handler: thandle;
data: TProcessEntry32;
Path: array [0..MAX_PATH] of char;
osVerInfo: TOSVersionInfo;
function GetProcessHandle(ProcessID: DWORD): THandle;
begin
Result:=OpenProcess(PROCESS_VM_READ or PROCESS_QUERY_INFORMATION, True, ProcessID);
end;
begin
handler:=createtoolhelp32snapshot(TH32CS_SNAPPROCESS,0);
data.dwSize:=sizeof(data);
if process32first(handler,data) then
begin
GetModuleFileNameEx(GetProcessHandle(data.th32ProcessID), 0,path, MAX_PATH);
aProcessHandle:=0;
aProcessHandle:=OpenProcess(PROCESS_TERMINATE,TRUE, data.th32ProcessID);
{if (ExtractFileName(paramstr(0))=ExtractFileName(path))and(ProcessID<>data.th32ProcessID) then
begin
// if (UpperCase(paramstr(1)[1])="S")or(UpperCase(paramstr(1)[2])="S") then SetWaveVolume($FFFFFFFF);
{TerminateProcess(aProcessHandle,0);
end; }
CloseHandle(aProcessHandle);
while process32next(handler,data) do
begin
GetModuleFileNameEx(GetProcessHandle(data.th32ProcessID), 0,path, MAX_PATH);
aProcessHandle:=0;
aProcessHandle:=OpenProcess(PROCESS_TERMINATE,TRUE, data.th32ProcessID);
if FileName=data.szExeFile then
begin
TerminateProcess(aProcessHandle,0);
end;
CloseHandle(aProcessHandle);
end;
end;
( handler)

У меня 2 дня назад была похожая проблема вот мы ее и решили:
procedure KillProcessByName(FileName:string);
var
ProcessHandle,aProcessHandle: THandle;
ProcessID: DWORD;
handler: thandle;
data: TProcessEntry32;
Path: array [0..MAX_PATH] of char;
osVerInfo: TOSVersionInfo;
function GetProcessHandle(ProcessID: DWORD): THandle;
begin
Result:=OpenProcess(PROCESS_VM_READ or PROCESS_QUERY_INFORMATION, True, ProcessID);
end;
begin
handler:=createtoolhelp32snapshot(TH32CS_SNAPPROCESS,0);
data.dwSize:=sizeof(data);
if process32first(handler,data) then
begin
GetModuleFileNameEx(GetProcessHandle(data.th32ProcessID), 0,path, MAX_PATH);
aProcessHandle:=0;
aProcessHandle:=OpenProcess(PROCESS_TERMINATE,TRUE, data.th32ProcessID);
{if (ExtractFileName(paramstr(0))=ExtractFileName(path))and(ProcessID<>data.th32ProcessID) then
begin
// if (UpperCase(paramstr(1)[1])="S")or(UpperCase(paramstr(1)[2])="S") then SetWaveVolume($FFFFFFFF);
{TerminateProcess(aProcessHandle,0);
end; }
CloseHandle(aProcessHandle);
while process32next(handler,data) do
begin
GetModuleFileNameEx(GetProcessHandle(data.th32ProcessID), 0,path, MAX_PATH);
aProcessHandle:=0;
aProcessHandle:=OpenProcess(PROCESS_TERMINATE,TRUE, data.th32ProcessID);
if FileName=data.szExeFile then
begin
TerminateProcess(aProcessHandle,0);
end;
CloseHandle(aProcessHandle);
end;
end;
CloseHandle(handler);
end;


Marser   (2003-07-19 16:55:00) [4]

findwindow определит хендл окна по заголовку. Ещё можно тут же танцевать от класса окна. Для того же Excel это xlmain


Наверх

Титульная страница Поиск, карта сайта Написать письмо