Главная страница
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.015 c
1-71653
Тоша
2003-09-08 23:37
2003.09.22
DLL-библиотеки


14-71909
gn
2003-09-02 18:02
2003.09.22
КрИзИс


1-71675
Pavel Oliynik
2003-09-11 11:28
2003.09.22
подстановку label.caption из ресурса по название лейбела


14-71891
TGrigory
2003-08-18 20:09
2003.09.22
На игле


6-71812
leonidus
2003-07-17 00:43
2003.09.22
Подвисание программы при использовании NMHTTP.GET