Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2009, 11:17   #1
S@fer
Форумчанин
 
Аватар для S@fer
 
Регистрация: 29.01.2009
Сообщений: 411
По умолчанию Запрет на закрытие чужого приложения

Добрый день.
Собсвенно сабж. Как запретить закрытие чужого приложения?
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
hwndHandle: THANDLE;
hMenuHandle: HMENU;
iPos: Integer;

begin
hwndHandle := FindWindow(nil, '1.txt - Блокнот');
if (hwndHandle <> 0) then
begin
hMenuHandle := GetSystemMenu(hwndHandle, FALSE);
DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND);
iPos := GetMenuItemCount(hMenuHandle);
Dec(iPos);
if iPos > -1 then
DeleteMenu(hMenuHandle, iPos, MF_BYPOSITION);
end;

end;
Данный код блокирует [X], и убирает из контекстного меню "Закрыть Alt+F4".
Но программу можно закрыть к примеру из Меню программы "Файл-->Выход", или из диспетчера.
Как можно перехватить событие закрытия программы и отменить его?
S@fer вне форума Ответить с цитированием
Старый 12.07.2009, 13:14   #2
lennon
Заблокирован
 
Регистрация: 18.11.2007
Сообщений: 254
По умолчанию

Цитата:
Сообщение от S@fer Посмотреть сообщение
Добрый день.
Как можно перехватить событие закрытия программы и отменить его?
Есть такая штука, специально было придумано микрософтом - Хуки. Перехъватываешь вызов функции которая завершает процессы, смотришь шо она закрывает возвращаешь другой результат, но сложнее сделать чем сказать подбробности про хуки в поисковике. самому такое ненужно было делать
lennon вне форума Ответить с цитированием
Старый 12.07.2009, 19:47   #3
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от lennon Посмотреть сообщение
Есть такая штука, специально было придумано микрософтом - Хуки. Перехъватываешь вызов функции которая завершает процессы, смотришь шо она закрывает возвращаешь другой результат
через стандартный механизм хуков это нельзя сделать, это называется перехватом API функций. А если использовать механизм хуков надо пререхватывать сообщения WM_CLOSE и WM_DESTROY

Последний раз редактировалось rpy3uH; 12.07.2009 в 19:51.
rpy3uH вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
закрытие чужого процесса Dimon Win Api 7 12.05.2010 12:01
Запрет на закрытие формы Хамяг Общие вопросы Delphi 10 09.01.2009 14:40
Запрет на закрытие окна Bayazet Общие вопросы Delphi 4 25.12.2008 11:29
Как определить путь чужого приложения? VVM Win Api 3 02.12.2008 18:22
Запрет на закрытие программы John_chek Общие вопросы Delphi 2 04.05.2007 11:39