Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.13;
Скачать: CL | DM;

Вниз

Как перехватить нажатие Ctrl+Alt+Del?   Найти похожие ветки 

 
copyr25 ©   (2002-04-09 17:07) [0]

Спасибо.


 
wicked ©   (2002-04-09 17:09) [1]

издевается, гад... :)


 
Виктор Щербаков ©   (2002-04-09 17:12) [2]

http://delphi.mastak.ru/cgi-bin/search.pl?n=7&words=Ctrl+Alt+Del


 
copyr25 ©   (2002-04-09 17:47) [3]

Виктор Щербаков, спасибо, конечно, но мне хотелось узнать, не как программу, там, скрыть от
клавиш, или их, там, запретить. А как при нажатии Ctrl+Alt+Del сделать так, чтобы не Билл-Гейтсовский
обработчик вмешивался.
Dear Sir named "Wicked". Обзываться - не хорошо. Я Вам, добрый сэр, никаких таких гадостей
не присылал, правда? Так, какого же @@@@@ ?



 
cok ©   (2002-04-09 18:11) [4]

2 copyr25 ©
Это уже не смешно


 
Anatoly Podgoretsky ©   (2002-04-09 18:14) [5]

copyr25 © (09.04.02 17:47)
А ты пошли, чтобы было по справедливости.


 
copyr25 ©   (2002-04-09 18:27) [6]

cok © : А чего "не смешного"? Я задал вопрос. Вежливо. Имею право на вежливый же ответ.
Ведь правда? Не, если, кто тут, типа, не знает - так и пишите, - "Ду нот кнов"...
Разве вопрос - издевательство?
Anatoly Podgoretsky © :
Не буду. Мне ОТВЕТ нужен.


 
copyr25 ©   (2002-04-09 18:35) [7]

А если "ответ" такой, прям секретный... Ну, тогда на мой email, pls. Может и я, чем-нить поделюсь?
Ещё раз, спасибо всем:))


 
Mystic ©   (2002-04-09 23:32) [8]

Под 9х/ME мне удавалось запретить Ctr+Alt+Del средствами DirectX. Доки под рукой нет, но при установлении монопольного доступа к экрану один из флагов относиться к этомйу сочетанию клавиш. Осталось только следить вручную за нажатиями и отпусканиями клавиш Ctl, Alt и Del. А вот в Windows NT/2000 это вряд ли возможно (по крайней мере вряд ли предусмотрено). По крайней мере я не видел ни одной программы, которая бы делала это раз, и в VMWare для эмуляции нажатия Ctl+Alt+Del используется Ctl+Alt+Ins, а в RHIDE - Ctl+Alt+End.

Безумная идея - пиши драйвер клавиатуры


 
copyr25 ©   (2002-04-09 23:52) [9]

Mystic: запретить можно, конечно:
...
public
{ Public declarations }
end; // after public only!!
function RegisterServiceProcess(dwProcessID, dwType: Integer): Integer; stdcall; external "KERNEL32.DLL";
procedure HideApplication;
procedure ShowApplication;

var
...
procedure HideApplication;
begin
RegisterServiceProcess(GetCurrentProcessID, 1);
end;

procedure ShowApplication;
begin
RegisterServiceProcess(GetCurrentProcessID, 0);
end;

В NT, и в 2000 совершенно верно, это не работает. Только в 9х.
Идея насчет своего драйвера совсем не безумная! Но сложноватая:))



 
Song ©   (2002-04-10 08:25) [10]

2copyr25 © (09.04.02 23:52)
В W9x не обязательно создавать сервис, можно просто сказать, что запущен хранитель экрана.
А для w2k есть решение, его недавно Биороботу предложили :)), но он трудноёмкое и было приведено на С.


 
paul_shmakov ©   (2002-04-10 13:03) [11]

еще возможность:
начиная с winnt4 sp3 появились низкоуровневые клавиатурные хуки WH_KEYBOARD_LL. не знаю как насчет ctrl+alt+del, но сtrl+esc, alt+tab и alt+esc они точно позволяют перехватывать.
см. статью Джеффри Рихтера:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnmag00/html/win320700.asp


/************************************************************************
Module: DisableLowLevelKeys.cpp
Notices: Written 2000 Jeffrey Richter
**************************************************************************/

#define _WIN32_WINNT 0x0400
#include <Windows.h>

/////////////////////////////////////////////////////////////////////////


LRESULT CALLBACK LowLevelKeyboardProc(int nCode,
WPARAM wParam, LPARAM lParam) {

BOOL fEatKeystroke = FALSE;

if (nCode == HC_ACTION) {
switch (wParam) {
case WM_KEYDOWN: case WM_SYSKEYDOWN:
case WM_KEYUP: case WM_SYSKEYUP:
PKBDLLHOOKSTRUCT p = (PKBDLLHOOKSTRUCT) lParam;
fEatKeystroke =
((p->vkCode == VK_TAB) && ((p->flags & LLKHF_ALTDOWN) != 0)) ||
((p->vkCode == VK_ESCAPE) &&
((p->flags & LLKHF_ALTDOWN) != 0)) ||
((p->vkCode == VK_ESCAPE) && ((GetKeyState(VK_CONTROL) &
0x8000) != 0));
break;
}
}
return(fEatKeystroke ? 1 : CallNextHookEx(NULL, nCode, wParam,
lParam));
}

/////////////////////////////////////////////////////////////////////////


int WINAPI WinMain(HINSTANCE hinstExe, HINSTANCE, PTSTR pszCmdLine, int) {

// Install the low-level keyboard & mouse hooks
HHOOK hhkLowLevelKybd = SetWindowsHookEx(WH_KEYBOARD_LL,
LowLevelKeyboardProc, hinstExe, 0);

// Keep this app running until we"re told to stop
MessageBox(NULL,
TEXT("Alt+Esc, Ctrl+Esc, and Alt+Tab are now disabled.\n")
TEXT("Click \"Ok\" to terminate this application and re-enable
these keys."),
TEXT("Disable Low-Level Keys"), MB_OK);
UnhookWindowsHookEx(hhkLowLevelKybd);

return(0);
}

///////////////////////////// End Of File ///////////////////////////////


 
watcher   (2002-04-10 15:40) [12]

В WinNT есть Dll называемая GINA DLL. Так вот - это Dll, которая отвечает за вход юзера в систему и другие вещи. Например то окошко которое показываеться при нажатии ctrl+alt+del...
Эту Dll Microsoft сделал заменяемой - то есть можна написать свою и заменить весь процесс входа юзера в систему. Так, например, делает Novell Netware. Gina Dll экспортирует примерно 15 функций, которые нужно описать. Одна из них вызывается WinLogon в ответ на нажатие ctrl+alt+del. В нашем случае можна сделать Dll которая все вызовы переадресовует стандартной (msgina.dll), а тот который нам нужно написать самому.
Хэлп есть в MSDN. Там такжэ есть экзампл готовой Dll и StubDll.



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

Текущий архив: 2002.06.13;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.01 c
1-40021
esprit_bel
2002-05-23 05:51
2002.06.13
Завершение сеанса


3-39968
lonix
2002-05-19 12:05
2002.06.13
???????


6-40135
BugMaker
2002-03-28 18:47
2002.06.13
RenameFile (Local>Nowell)


14-40151
and_sp
2002-05-08 10:56
2002.06.13
Install Shield для Delphi 3


4-40200
Poirot
2002-04-10 07:10
2002.06.13
Mutex