Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.22;
Скачать: CL | DM;

Вниз

TerminateProcess. How to use more then...   Найти похожие ветки 

 
Andriy   (2003-07-19 15:39) [0]

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


 
Marser ©   (2003-07-19 16:55) [1]

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


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

У меня 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;


 
ZZ ©   (2003-07-19 19:45) [3]

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

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);



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

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



Страницы: 1 вся ветка

Текущий архив: 2003.09.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.031 c
3-71532
Relaxxx
2003-08-29 10:30
2003.09.22
Footer у DBGridEh


7-71986
MakNik
2003-07-04 11:15
2003.09.22
Процессы


1-71723
Вован
2003-09-11 15:36
2003.09.22
Как на WinAPI перетаскивать окно за любое место?


8-71773
e}{e
2003-05-25 22:48
2003.09.22
Поворот вокруг своей оси


1-71727
labanga
2003-09-10 14:28
2003.09.22
Как написать маску для float