Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
Внизdelphi Найти похожие ветки
← →
gans1 (2005-11-05 22:38) [0]Помогите! Как в Delphi програмным путем завершить процесс Explorer.exe желательно в примере. Заранее спасибо.
← →
programania © (2005-11-06 01:00) [1]
uses ...tlHelp32, shellApi, psApi,...
var
handler:thandle;
data:tagPROCESSENTRY32;
hProc:THandle;
function KillProcess(ProcessID: DWORD): boolean;
var
hProcess: THandle;
hToken: THandle;
Priv,PrivOld: TOKEN_PRIVILEGES;
cbPriv: DWORD;
dwError: DWORD;
begin
hProcess:=OpenProcess(PROCESS_TERMINATE,false,ProcessID);
if hProcess = 0 then
begin
cbPriv:=SizeOf(PrivOld);
// Для Win2k
OpenThreadToken(GetCurrentThread,TOKEN_QUERY or TOKEN_ADJUST_PRIVILEGES,false,hToken);
OpenProcessToken(GetCurrentProcess,TOKEN_QUERY or TOKEN_ADJUST_PRIVILEGES,hToken);
//
Priv.PrivilegeCount:=1;
Priv.Privileges[0].Attributes:=SE_PRIVILEGE_ENABLED;
LookupPrivilegeValue(nil,"SeDebugPrivilege",Priv.Privileges[0].Luid);
AdjustTokenPrivileges(hToken,false,Priv,SizeOf(Priv),PrivOld,cbPriv);
hProcess:=OpenProcess(PROCESS_TERMINATE,false,ProcessID);
dwError:=GetLastError;
cbPriv:=0;
AdjustTokenPrivileges(hToken,false,PrivOld,SizeOf(PrivOld),nil,cbPriv);
CloseHandle(hToken);
end;
TerminateProcess(hProcess,$FFFFFFFF);
CloseHandle(hProcess);
Result:=true;
end;
.........
handler:=createtoolhelp32snapshot(TH32CS_SNAPALL,0);
data.dwSize:=sizeOf(data);
if handler>0 then begin
if process32first(handler,data) then begin
repeat
if data.szExeFile="EXPLORER.EXE" then KillProcess(data.th32ProcessID);
until not process32next(handler,data);
end;
CloseHandle(handler);
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.11.20;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.039 c