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

Вниз

Как завершить процесс, доступ к которому закрыт ?   Найти похожие ветки 

 
__Сергей__   (2007-10-21 00:05) [0]

Есть программа, которая когда вешается - ее не закрыть. Из нее можно выйти только когда она работоспособна и не повисла. А ежели она зависла то ее ничем не взять (хотя ее ничем не взять и когда она не повисшая), пытаешься удалить процесс из списка процессов в таск менеджере, пишут отказано в доступе. Пытаешься то же самое через таск инфо - тоже отказ в доступе. пытаешься через процесс эксплорер - та же фигня.
Программа настолько бесит тем что когда она виснет приходится перезапускать машину или же запускать вторую ее копию, а прога давольно ресурсоемкая ...
Вобщем помогите пожалуйста, подскажите как можно убивать такие гадостные программы :(((
пробовал так :

procedure KillProgram(ClassName: PChar; WindowTitle: PChar);
const
PROCESS_TERMINATE = $0001;
var
 ProcessHandle : THandle;
 ProcessID: Integer;
 TheWindow : HWND;
begin
   TheWindow := FindWindow(PChar(ClassName), PChar(WindowTitle));
   GetWindowThreadProcessID(TheWindow, @ProcessID);
   ProcessHandle := OpenProcess(PROCESS_TERMINATE, FALSE, ProcessId);
   TerminateProcess(ProcessHandle,4);
end;


вообще ноль имоций...

Помогите пожалуйста :(


 
DrPass ©   (2007-10-21 00:30) [1]

Попробуй с помощью FarManager - он может грохнуть с debug-привилегиями


 
Игорь ©   (2007-10-21 09:45) [2]


> __Сергей__   (21.10.07 00:05)


Ну если Task Manager не может тогда наверно никто не сможет, попробуй с debug-привилегиями

function EnableDebugPrivilege(): Boolean;
var
 hToken: THandle;
 tp: TOKEN_PRIVILEGES;
 d: DWORD;
begin
 Result := False;
 if OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, hToken) then
 begin
   tp.PrivilegeCount:= 1;
   LookupPrivilegeValue(nil, "SeDebugPrivilege", tp.Privileges[0].Luid);
   tp.Privileges[0].Attributes:= $00000002;
   AdjustTokenPrivileges(hToken, False, tp, SizeOf(TOKEN_PRIVILEGES), nil, d);
   if GetLastError = ERROR_SUCCESS then
   begin
     Result := True;
   end;
   CloseHandle(hToken);
 end;
end;


 
korneley ©   (2007-10-21 10:00) [3]

А может все проще? Может сервис какой-нибудь сначала остановить, и все или само "уйдёт", или убъётся из таскманагера без пробемм?


 
korneley ©   (2007-10-21 10:01) [4]

пробемм = проблемм



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

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

Наверх




Память: 0.48 MB
Время: 0.021 c
2-1192471189
ryden
2007-10-15 21:59
2007.11.11
Выделение отдельного слова в RichEdit


15-1191956231
Vendict
2007-10-09 22:57
2007.11.11
PHP DMClient


9-1162945673
cxvxc
2006-11-08 03:27
2007.11.11
Спрайт OpenGL


11-1176185434
Dy1
2007-04-10 10:10
2007.11.11
не работает сохранение в jpeg


2-1192699591
DelphiCoder
2007-10-18 13:26
2007.11.11
Перевод Си -> Паскаль...