![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрещение реакции на нажатие кнопки WIN на клавиатуре [D7, WinXP]
dmitry_12_08_73 © (2008-11-28 13:12:00)Приветствую, помогите с запретом нажатия кнопки WIN. Имеется ввиду не отображение меню Windows по нажатию кнопки WIN на клавиатуре.
Дмитрий Белькевич (2010-01-11 13:14:00) [1]>Может, лучше самодвижущееся пресс-папье поизобретать, чем драйверы на Delphi писать ?
Если звёзды горят, значит это кому-то нужно ;)
Игорь Шевченко (2010-01-07 21:21:00) [2]Дмитрий Белькевич (07.01.10 12:44) [17]
Я наверное чего-то здорово не понимаю - DDK для Windows 2003 раздается бесплатно, в него входят ВСЕ необходимые средства для написания драйвера без извратов с поисками компилятора от D3 и написание сишного кода на Delphi (даже в статье написано, что ни работу со строками, ни Delphi-йский механизм исключений использовать не получится, кстати, сишный MS-овский механизм исключений вполне применим в драйверах, написанных на С).
Может, лучше самодвижущееся пресс-папье поизобретать, чем драйверы на Delphi писать ?
Дмитрий Белькевич (2010-01-07 12:44:00) [3]Вот, кстати, если есть интерес по драйверам на Делфи, как раз драйвер-фильтр клавы, фильтрует CAD, но, думаю, по образу и подобию можно на любое сочетание переписать:
http://forum.vingrad.ru/articles/topic-225315/kw-драйвер-windows-delphi/60.html
Anatoly Podgoretsky (2010-01-05 21:58:00) [4]> Дмитрий Белькевич (05.01.2010 20:25:15) [15]
> Даже вырывать кнопки не придётся.
Жалко
Дмитрий Белькевич (2010-01-05 20:25:00) [5]>Приходится спичку под win подталкивать
Повторюсь. Драйверок поможет ;) Даже вырывать кнопки не придётся. Жаль, что win98 only, а так бы отдал...
Anatoly Podgoretsky (2009-12-30 11:55:00) [6]> 12 (30.12.2009 10:02:13) [13]
Надо съемные клавиши сделать или хотя бы колпачки
12 (2009-12-30 10:02:00) [7]да да!
например, игрушки досовские
играешь, играешь.. бах! мимо контрла или альта .. и, добро б еще, такая игруха восстановилась нормально. Приходится спичку под win подталкивать
MrBadge (2009-12-29 22:11:00) [8]SetWindowLong(FindWindowEx(
FindWindow('Shell_TrayWnd', nil),
0,
'Button',
nil),
GWL_ID,
-1);
/// что здесь надо изменить, чтобы вернуть работоспособность кнопки?)
Дмитрий Белькевич (2008-12-06 12:25:00) [9]>Самое надежное - пассатижи
В своё время делал драйверочег на асме - фильтр клавы. Была еще 98-я тогда. Надёжнее - только пасссатижи, да.
>шеллозаменители разного рода и т.д.
Как раз для этого.
DVM (2008-12-01 17:11:00) [10]
> Как можно проще (01.12.08 15:54) [7]
Попробуй это в висте.
DVM (2008-12-01 17:10:00) [11]
> Leonid Troyanovsky © (01.12.08 16:00) [8]
> Пускай тестирование на отдельном десктопе.
Пускай, я не против. Я лишь привел варианты, где такое м.б. применимо.
Leonid Troyanovsky (2008-12-01 16:00:00) [12]
> DVM © (01.12.08 15:15) [6]
> Есть ряд приложений, где такие методы оправданы. Например,
> программа тестирования и оценки знаний,
Пускай тестирование на отдельном десктопе.
> шеллозаменители разного рода и т.д.
А чего бы оным шеллозаменителям не менять кнопу на
более подходящий им заменитель.
--
Regards, LVT.
Как можно проще (2008-12-01 15:54:00) [13]SetWindowLong(FindWindowEx(
FindWindow('Shell_TrayWnd', nil),
0,
'Button',
nil),
GWL_ID,
-1);
DVM (2008-12-01 15:15:00) [14]
> МистерТ (01.12.08 09:25) [5]
Есть ряд приложений, где такие методы оправданы. Например, программа тестирования и оценки знаний, шеллозаменители разного рода и т.д.
МистерТ (2008-12-01 09:25:00) [15]За такие хуки оторвать бы руки !
Учитесь делать программы так, что бы подобные методы не потребовались.
DVM (2008-11-28 20:21:00) [16]
{******************************************************************************}
{* Module: DisableLowLevelKeys.cpp *}
{* Notices: Written 2000 Jeffrey Richter *}
{* *}
{* Translated by: Dmitry Muratov *}
{* 2008 *}
{******************************************************************************}
program DisableLowLevelKeys;
uses
Windows, Messages;
const
LLKHF_ALTDOWN = KF_ALTDOWN shr 8;
WH_KEYBOARD_LL = 13;
type
TKBDLLHOOKSTRUCT = record
vkCode: DWORD;
scanCode: DWORD;
flags: DWORD;
time: DWORD;
dwExtraInfo: DWORD;
end;
PKBDLLHOOKSTRUCT = ^TKBDLLHOOKSTRUCT;
var
hhkLowLevelKybd: HHOOK;
//------------------------------------------------------------------------------
function LowLevelKeyboardProc(nCode: integer; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
var
fEatKeystroke: boolean;
p: PKBDLLHOOKSTRUCT;
begin
fEatKeystroke := false;
if nCode = HC_ACTION then
begin
case wParam of
WM_KEYDOWN,
WM_SYSKEYDOWN,
WM_KEYUP,
WM_SYSKEYUP:
begin
p := PKBDLLHOOKSTRUCT(lParam);
fEatKeystroke := ((p^.vkCode = VK_LWIN) or (p^.vkCode = VK_RWIN)) or
((p^.vkCode = VK_TAB) and ((p^.flags and LLKHF_ALTDOWN) 0)) or
((p^.vkCode = VK_ESCAPE) and ((p^.flags and LLKHF_ALTDOWN) 0)) or
((p^.vkCode = VK_ESCAPE) and ((GetKeyState(VK_CONTROL) and $8000) 0)) or
((p^.vkCode = VK_F4) and ((p^.flags and LLKHF_ALTDOWN) 0));
end;
end;
end;
if fEatKeystroke then
result := 1
else
result := CallNextHookEx(0, nCode, wParam, lParam);
end;
//------------------------------------------------------------------------------
begin
// Install the low-level keyboard & mouse hooks
hhkLowLevelKybd := SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, hInstance, 0);
// Keep this app running until we're told to stop
MessageBox(0,
PChar('Alt+Esc, Ctrl+Esc, WIN, Alt+F4, and Alt+Tab are now disabled.' + #13#10 +
'Click "Ok" to terminate this application and re-enable these keys.'),
PChar('Disable Low-Level Keys'),
MB_OK);
// Remove hooks
UnhookWindowsHookEx(hhkLowLevelKybd);
end.
Anatoly Podgoretsky (2008-11-28 13:32:00) [17]> dmitry_12_08_73 (28.11.2008 13:12:00) [0]
Самое надежное - пассатижи
dmitry_12_08_73 (2008-11-28 13:15:00) [18]спасибо
clickmaker (2008-11-28 13:14:00) [19]SetWindowsHookEx(WH_KEYBOARD_LL
примеры наверняка есть в Инете