Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
__Сергей__   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.043 c
6-1154718907
Tiberius
2006-08-04 23:15
2007.11.11
Заполнение html-форм


2-1192877256
P'ero
2007-10-20 14:47
2007.11.11
Как произвести поиск по всему компьютеру (конкретный вайл)?


2-1192450912
неугомонный
2007-10-15 16:21
2007.11.11
канвас в гриде


15-1191992179
Бакук
2007-10-10 08:56
2007.11.11
В России запретят CD-RW и DVD-RW


15-1191917876
031178
2007-10-09 12:17
2007.11.11
Компоненты





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский