Четверг, 28.03.2024, 17:01 Приветствую вас Гость | Группа "Гости" 
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: Волк-1024  
delphicode » Delphi » Windows API в Delphi » alt f4
alt f4
gravitasДата: Пятница, 10.12.2010, 17:43 | Сообщение # 1
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Как запретить alt f4 на апи?

TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
dolphinДата: Пятница, 10.12.2010, 18:59 | Сообщение # 2
Администратор
Сообщений: 906
Статус: Offline
С помощью хука на клаву думаю. У кого ещё какие предложения?

Система: Windows 10 x64, Kali Linux
Среды программирования: Delphi 7, Delphi 10.x

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
gravitasДата: Пятница, 10.12.2010, 19:03 | Сообщение # 3
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Quote (dolphin)
С помощью хука на клаву думаю. У кого ещё какие предложения?

Код... И будет ли дллка тогда?


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
C@TДата: Пятница, 10.12.2010, 19:35 | Сообщение # 4
Авторитетный
Зарегистрирован: 06.03.2010
Группа: Модераторы
Сообщений: 265
Статус: Offline
самый простой способ:

procedure TRun.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := false;
end;

если форма написана на вин апи то:

function WindowProc (wnd: HWND; msg: integer; wparam: WPARAM; lparam: LPARAM):LRESULT;STDCALL;
begin
case msg of
WM_Destroy:
begin
PostQuitMessage (0);
Result := 0;
Exit;
end;

WM_CLOSE :
exit;

else
Result := DefWindowProc(wnd,msg,wparam,lparam);
end;
end;

или как вариант можно хуками, только емеет свои проблемы

//hHook:cardinal;

function SysMsgProc(code:integer;Wparam:word;Lparam:longint):longint;stdcall;
begin
//f8 - 115
//alt - 18
if (GetKeyState(18)<0) and (Wparam = 115) then
begin
MessageBoxA(0,'Nezya','Nezya',0);
end else
result:=CallNextHookEx(hHook,Code,Wparam,LParam);
end;

procedure TRun.Button1Click(Sender: TObject);
begin
hHook:=SetWindowsHookEx(WH_KEYBOARD,@SysMsgProc,HInstance,0);
end;

procedure TRun.Button2Click(Sender: TObject);
begin
UnhookWindowsHookEx(hHook);
end;

кстати этот код еще и является примером вызова глобального хука без длл-ки (только если закрывать другую прогу с помощью ALT-F4 тогда хук снимается)


 
gravitasДата: Суббота, 11.12.2010, 21:57 | Сообщение # 5
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Quote (C@T)
Code
function SysMsgProc(code:integer;Wparam:word;Lparam:longint):longint;stdcall;  begin  //f8 - 115  //alt - 18  if (GetKeyState(18)<0) and (Wparam = 115) then  begin  MessageBoxA(0,'Nezya','Nezya',0);  end else  result:=CallNextHookEx(hHook,Code,Wparam,LParam);  end;  procedure TRun.Button1Click(Sender: TObject);  begin  hHook:=SetWindowsHookEx(WH_KEYBOARD,@SysMsgProc,HInstance,0);  end;

Вот эт гуд. А теперь другой вопрос. Я попробовал вставить этот код в безформенное приложение и увидел, что без формы (даже динам созданной) код не работает. Как я понял, нужно, что бы нажатые клавиши были нажаты в окне формы. Как это обойти, если форма не предусмотрена?


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
dolphinДата: Понедельник, 13.12.2010, 16:11 | Сообщение # 6
Администратор
Сообщений: 906
Статус: Offline
alt f4 закрывает активное окно, посылает именно форме сообщение о закрытии, поэтому нет смысла прятать безформенное приложение о него.

Система: Windows 10 x64, Kali Linux
Среды программирования: Delphi 7, Delphi 10.x

Я не профессионал, я всего лишь любитель
Я не вредитель, я всего лишь теоретик
 
gravitasДата: Понедельник, 13.12.2010, 17:01 | Сообщение # 7
Авторитетный
Зарегистрирован: 01.05.2010
Группа: Пользователи
Сообщений: 385
Статус: Offline
Quote (dolphin)
alt f4 закрывает активное окно, посылает именно форме сообщение о закрытии, поэтому нет смысла прятать безформенное приложение о него.

В данном случае уже говориться не про alt f4


TheDeduction

Для ускорения получения ответов на ваши вопросы рекомендуется подкармливание в виде +'ов в рейтинг :)
 
XSPYДата: Четверг, 23.12.2010, 22:47 | Сообщение # 8
Продвинутый
Зарегистрирован: 28.01.2010
Группа: Пользователи
Сообщений: 263
Статус: Offline
проще будет(имхо)так:
просто дописать процедуру (цыкл,иф и т.п),которая при срабатывании на альт+ф4 будет просто блочить их.
пример работы с клавиатурой можно найти на дельфисурсе/


Я не крекер,а программист!
Я не преступник-я свободный человек!
Лучше один раз накодить,чем сто раз качать билды!
 
delphicode » Delphi » Windows API в Delphi » alt f4
  • Страница 1 из 1
  • 1
Поиск:

delphicode.ru © 2008 - 2024 Хостинг от uCoz