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

Вниз

Как перехватить нажатие 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2002.06.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
1-40018
mazepa
2002-06-01 00:40
2002.06.13
Access


14-40163
[NIKEL]
2002-05-10 00:27
2002.06.13
Интиресно узнать, делает кто в своих программах Пасхальные Яйца?


14-40188
Blackweber
2002-05-08 22:43
2002.06.13
HDD Samsung SpinPoint на 60 Gb 5400rpm


14-40180
bander_log
2002-05-13 11:17
2002.06.13
Проблема с графикой... Прикол такого характера...


7-40190
Comwad
2001-10-10 12:58
2002.06.13
Защита CD-R от копирования





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