Ой ли?Б@йан! Не бывает!
LRESULT WINAPI NewSASProc( HWND hSAS, UINT msg, WPARAM wParam, LPARAM lParam )
{
if( WM_HOTKEY == msg ){
// Поймали HOTKEY CAD (CSE) - выводим сообщение на десктоп "Default" и затем выходим
if( MAKELONG( MOD_CONTROL | MOD_ALT, VK_DELETE ) == lParam ){
MessageBoxEx( GetActiveWindow(), TEXT("Ctrl + Alt + Del"),
TEXT("SAS Hook"), MB_DEFAULT_DESKTOP_ONLY, 0 );
return 0;
}
if( MAKELONG( MOD_CONTROL | MOD_SHIFT, VK_ESCAPE ) == lParam ){
MessageBoxEx( GetActiveWindow(), TEXT("Ctrl + Shift + Esc"),
TEXT("SAS Hook"), MB_DEFAULT_DESKTOP_ONLY, 0 );
return 0;
}
}
// Вызываем стандартный обработчик
return CallWindowProc( g_OldSASProc, hSAS, msg, wParam, lParam );
}
BOOL WINAPI DllMain( HINSTANCE hinstDll, DWORD fdwReason, PVOID fImpLoad )
{
if( DLL_PROCESS_ATTACH == fdwReason ){
// Находим окно
g_hSASwnd = FindWindow( TEXT("SAS Window class"), TEXT("SAS window") );
// Заменяем обработчик
if( g_hSASwnd != NULL )
g_OldSASProc = (WNDPROC) SetWindowLong( g_hSASwnd, GWL_WNDPROC, (LONG) NewSASProc );
}
if( DLL_PROCESS_DETACH == fdwReason ){
// Возвращаем обработчик
if( g_hSASwnd != NULL )
SetWindowLong( g_hSASwnd, GWL_WNDPROC, (LONG) g_OldSASProc );
}
return TRUE;
}
Twister писал(а):Ой ли?Б@йан! Не бывает!
Процесс Winlogon при загрузке создает окно "SAS window", которое регистрирует HOTKEY для Ctrl+Alt+Del и Ctrl+Shift+Esc.
Все это дело можно перехватить.
Для перехвата необходимо внедрить DLL в процесс Winlogon, сабклассить указанное окно, и обрабатывать сообщение WM_HOTKEY:
- Код: Выделить всё
LRESULT WINAPI NewSASProc( HWND hSAS, UINT msg, WPARAM wParam, LPARAM lParam )
{
if( WM_HOTKEY == msg ){
// Поймали HOTKEY CAD (CSE) - выводим сообщение на десктоп "Default" и затем выходим
if( MAKELONG( MOD_CONTROL | MOD_ALT, VK_DELETE ) == lParam ){
MessageBoxEx( GetActiveWindow(), TEXT("Ctrl + Alt + Del"),
TEXT("SAS Hook"), MB_DEFAULT_DESKTOP_ONLY, 0 );
return 0;
}
if( MAKELONG( MOD_CONTROL | MOD_SHIFT, VK_ESCAPE ) == lParam ){
MessageBoxEx( GetActiveWindow(), TEXT("Ctrl + Shift + Esc"),
TEXT("SAS Hook"), MB_DEFAULT_DESKTOP_ONLY, 0 );
return 0;
}
}
// Вызываем стандартный обработчик
return CallWindowProc( g_OldSASProc, hSAS, msg, wParam, lParam );
}
Функция DllMain:
- Код: Выделить всё
BOOL WINAPI DllMain( HINSTANCE hinstDll, DWORD fdwReason, PVOID fImpLoad )
{
if( DLL_PROCESS_ATTACH == fdwReason ){
// Находим окно
g_hSASwnd = FindWindow( TEXT("SAS Window class"), TEXT("SAS window") );
// Заменяем обработчик
if( g_hSASwnd != NULL )
g_OldSASProc = (WNDPROC) SetWindowLong( g_hSASwnd, GWL_WNDPROC, (LONG) NewSASProc );
}
if( DLL_PROCESS_DETACH == fdwReason ){
// Возвращаем обработчик
if( g_hSASwnd != NULL )
SetWindowLong( g_hSASwnd, GWL_WNDPROC, (LONG) g_OldSASProc );
}
return TRUE;
}
Осталось дело за малым - внедрить DLL. Для этого нужны права администратора
if( DLL_PROCESS_DETACH == fdwReason ){
// Возвращаем обработчик
if( g_hSASwnd != NULL )
SetWindowLong( g_hSASwnd, GWL_WNDPROC, (LONG) g_OldSASProc );
}
Ну конечно, готовых ОСХ-ов для этого нет. Нужно поработать головой и ручками.Ну скажем так, решение весьма не простое. Это точнее.
Это для только дZенствующих...А ещё можно поставить свой драйвер в стек клавиатуры
Так, давайте по порядку. Если логическое ударение поставить на фразу надо осознанно, то фраза не верна, ибо DllMain с DLL_PROCESS_DETACH по-любому выполнится и при завершении процесса, и при выгрузке либы.Совсем необязательно - надо осознанно спровоцировать выгрузку dll.
Grey_of_Lagan писал(а):Twister писал(а):Ой ли?Б@йан! Не бывает!
Процесс Winlogon при загрузке создает окно "SAS window", которое регистрирует HOTKEY для Ctrl+Alt+Del и Ctrl+Shift+Esc.
Все это дело можно перехватить.
Для перехвата необходимо внедрить DLL в процесс Winlogon, сабклассить указанное окно, и обрабатывать сообщение WM_HOTKEY:
- Код: Выделить всё
LRESULT WINAPI NewSASProc( HWND hSAS, UINT msg, WPARAM wParam, LPARAM lParam )
{
if( WM_HOTKEY == msg ){
// Поймали HOTKEY CAD (CSE) - выводим сообщение на десктоп "Default" и затем выходим
if( MAKELONG( MOD_CONTROL | MOD_ALT, VK_DELETE ) == lParam ){
MessageBoxEx( GetActiveWindow(), TEXT("Ctrl + Alt + Del"),
TEXT("SAS Hook"), MB_DEFAULT_DESKTOP_ONLY, 0 );
return 0;
}
if( MAKELONG( MOD_CONTROL | MOD_SHIFT, VK_ESCAPE ) == lParam ){
MessageBoxEx( GetActiveWindow(), TEXT("Ctrl + Shift + Esc"),
TEXT("SAS Hook"), MB_DEFAULT_DESKTOP_ONLY, 0 );
return 0;
}
}
// Вызываем стандартный обработчик
return CallWindowProc( g_OldSASProc, hSAS, msg, wParam, lParam );
}
Функция DllMain:
- Код: Выделить всё
BOOL WINAPI DllMain( HINSTANCE hinstDll, DWORD fdwReason, PVOID fImpLoad )
{
if( DLL_PROCESS_ATTACH == fdwReason ){
// Находим окно
g_hSASwnd = FindWindow( TEXT("SAS Window class"), TEXT("SAS window") );
// Заменяем обработчик
if( g_hSASwnd != NULL )
g_OldSASProc = (WNDPROC) SetWindowLong( g_hSASwnd, GWL_WNDPROC, (LONG) NewSASProc );
}
if( DLL_PROCESS_DETACH == fdwReason ){
// Возвращаем обработчик
if( g_hSASwnd != NULL )
SetWindowLong( g_hSASwnd, GWL_WNDPROC, (LONG) g_OldSASProc );
}
return TRUE;
}
Осталось дело за малым - внедрить DLL. Для этого нужны права администратора
как я понял это на фсегда отключит "три кнопки" а мне надо тока на время работы проги)))) если это возможно то объясни как это сделать. спасиба
пробовал добавить в модуль но все становится красным и не работает...
keks-n писал(а):Twister
Я, наверное, недопонял код. Выгрузка dll происходит автоматически после завершения процесса, это да. Только вот если это winlogon.exe, тл это произойдёт во время шатдауна системы. Чтобы отключить во время её работы надо осознанно её выгружать. Где я не прав?
Конечно ты прав.Где я не прав?
Ну, если заняться демагогией, то не обязательно во время шатдауна. Винлогон прибить ни кто не запретит.тл это произойдёт во время шатдауна системы
keks-n писал(а):Grey_of_Lagan
Не моё, где взял, не помню, чисто случайно откопал в завалах:
http://share.fire-lines.ru/keks-n/DisableCAD.rar
Ну и где эта строчка?
При лоад.
Open "C:\windows\system32\taskmgr.exe" For Binary Lock Read Write As #1
И соответственно при анлоад
Close #1
че то не работает эта ссылка....(((( там вот что "Rar!л░F|▌Би▒щ⌡[#П іЯmПр
Eu6]mч<⌠▄JъgLО╛&ШYІT╞⌠В\©▓┴^╦dН\жМ!q╚╪е┌Cm+ы 5[М|" когда ты там был там было по другому?
Pasha47 писал(а):
- Код: Выделить всё
че то не работает эта ссылка....(((( там вот что "Rar!л░F|▌Би▒щ⌡[#П іЯmПр
Eu6]mч<⌠▄JъgLО╛&ШYІT╞⌠В\©▓┴^╦dН\жМ!q╚╪е┌Cm+ы 5[М|" когда ты там был там было по другому?
Правой кнопкой мышки по ссылке: Сохранить как....
У меня всё грузит.... Пробуй IE.
Сейчас этот форум просматривают: Google-бот, Yandex-бот и гости: 38