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

Вниз

Как запретить завершать свой приложение?   Найти похожие ветки 

 
dreamse   (2007-11-19 18:42) [0]

Пишу оболочку для ограничения запуска приложений и доступа пользователей к системным файлам.

Смысл в том что есть программы управления ( комп. клубы) которые при окончании сеанса выгружают все запущенные приложения.

т.е идёт метод terminated который и убивает оболочку.
Смысл сделать невозможным убить оболочку из других программ.
Элементарно перехватить метод Close можно поставив CanClose = false
но смысл перехватить именно метод terminate.

Была идея написать сервис который будет висеть в списке сервисов и загружать оболочку если её выгрузили, но программы блокировки выгружают все приложения по мере их запуска что приводит к постоянному миганию ( запуск - заверщение)

Это не зловредный код. Если не хотите подсказать здесь свяжитесь со мной через Email покажу и проект и оболочку :)

Жду ответов.


 
Сергей С.   (2007-11-19 21:32) [1]


> есть программы управления


> т.е идёт метод terminated


Галиматьища несусветная.


> Это не зловредный код


Да хоть доброполезный)

Логику - фтопку.


 
tesseract ©   (2007-11-20 10:56) [2]

Перехватывать WmCloseQuery и говорить что ни в жисть. против Kill ничего не сделаешь - это все.


 
dreamse   (2007-11-20 13:53) [3]

Не нужно так утвержжать. Знаю несколько приложений которые не выгружаються при методе terminate

> Сергей С.   (19.11.07 21:32) [1]

Не можешь подсказать лучше промолчи


 
Сергей М. ©   (2007-11-20 14:16) [4]


> при методе terminate


Методе какого объекта ?)


 
Dreamse   (2007-11-20 14:26) [5]

Например другая программа хочет завершить мою программу следующем кодом :


var
 dwResult: Longint; // This example was converted from C source.
begin
 // Not tested. Some "nil" assignments must be applied
 // as zero assignments in Pascal. Some vars need to
 // be declared (maxworktime, si, pi). AA.
 if CreateProcess(nil, CmdStr, nil, nil, FALSE,
   CREATE_NEW_CONSOLE, nil, nil, si, pi) then
 begin
   CloseHandle(pi.hThread);
   dwResult := WaitForSingleObject(pi.hProcess, maxworktime * 1000 * 60);
   CloseHandle(pi.hProcess);
   if dwResult <> WAIT_OBJECT_0 then
   begin
     pi.hProcess := OpenProcess(PROCESS_TERMINATE, FALSE, pi.dwProcessId);
     if pi.hProcess <> nil then
     begin
       TerminateProcess(pi.hProcess, 0);
       CloseHandle(pi.hProcess);
     end;
   end;
 end;
end;


Вызываеться метод TerminateProcess который и завершает моё приложение.
Вопрос : Как не дать завершиться моему приложению ?


 
Сергей М. ©   (2007-11-20 14:29) [6]


> Вызываеться метод TerminateProcess


TerminateProcess - это не метод.


> Как не дать завершиться моему приложению ?


Реализовать приложение как сервис и стартовать его от имени системы.



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

Форум: "Основная";
Текущий архив: 2008.07.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.066 c
15-1212653596
Виталик
2008-06-05 12:13
2008.07.20
Векторизация


2-1213704407
tey
2008-06-17 16:06
2008.07.20
работа со строкой


2-1213960748
DFT
2008-06-20 15:19
2008.07.20
изменение размеров родителя


2-1213966689
mefodiy
2008-06-20 16:58
2008.07.20
Удаленное подключение к серверу MySQL


2-1213871716
koss
2008-06-19 14:35
2008.07.20
Currency





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский