Главная страница
    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.073 c
15-1191389045
Игорь Шевченко
2007-10-03 09:24
2007.11.11
Новости от Codegear


6-1173882512
tytus
2007-03-14 17:28
2007.11.11
Indy_10 Как правильно отключить клиента?


4-1178464604
sinus
2007-05-06 19:16
2007.11.11
Запустить программу от имени другого пользователя


9-1162828267
Алена
2006-11-06 18:51
2007.11.11
OpenGl


2-1192184520
inex
2007-10-12 14:22
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский