Kill 'Ctrl+Alt+Del'...
P.S. WinXP, Delphi6.
Существует ли возможность отключить сочетание 'Ctrl+Alt+Del'?
P.S. WinXP, Delphi6.
ну на Delhpi я не пробовал, а на с++ (под любое win32) можно ВСЁ... :)
Существует ли возможность отключить сочетание 'Ctrl+Alt+Del'?
P.S. WinXP, Delphi6.
Если я правильно тебя понял ты хочеш спрятать свое приложение от юзера.
Рецепт :
1.Добавь событие OnShow или OnCreate, а лучше OnPaint.
2.Добавь эти две строки :
ShowWindow(Handle,SW_HIDE);
ShowWindow(Application.Handle,SW_HIDE);
Первая прячет текущее окно, вторая все приложение.
Должно помочь.
Kirill imho Ap0k.
Существует ли возможность отключить сочетание 'Ctrl+Alt+Del'?
P.S. WinXP, Delphi6.
Сорри, еще вспомнил.
Значит так :
1.В Var добавь
Dummy : integer;
2.SystemParametersInfo( SPI_SCREENSAVERRUNNING, 1, @Dummy, 0);
Отключение Ctrl+Alt+Del.
Говорю сразу - это API прцедура.
Kirill imho Ap0k.
P.S.: Переходи на Delphi7 Ent.
Существует ли возможность отключить сочетание 'Ctrl+Alt+Del'?
P.S. WinXP, Delphi6.
Я так понял надо скрыть приложение от пользователя? Тогда причем тут Ctrl+Alt+Del, может заодно блокировать и Ctrl+Shift+Esc ? :D
Чайники, учитесь!
Как перехватить нажатие Ctrl+Alt+Del ?
19 апр 2002 (пятница), 09:33:35
copyr25 © (09.04.02 23:52)
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х.
Идея насчет своего драйвера совсем не безумная! Но сложноватая:))
--------------------------------------------------------------------------------
Для NT:
---------------------------------------------------------
начиная с 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 ///////////////////////////////