Форум: "WinAPI";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизЗапрещение реакции на нажатие кнопки WIN на клавиатуре Найти похожие ветки
← →
dmitry_12_08_73 © (2008-11-28 13:12) [0]Приветствую, помогите с запретом нажатия кнопки WIN. Имеется ввиду не отображение меню Windows по нажатию кнопки WIN на клавиатуре.
← →
clickmaker © (2008-11-28 13:14) [1]SetWindowsHookEx(WH_KEYBOARD_LL
примеры наверняка есть в Инете
← →
dmitry_12_08_73 © (2008-11-28 13:15) [2]спасибо
← →
Anatoly Podgoretsky © (2008-11-28 13:32) [3]> dmitry_12_08_73 (28.11.2008 13:12:00) [0]
Самое надежное - пассатижи
← →
DVM © (2008-11-28 20:21) [4]
{******************************************************************************}
{* 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.
← →
МистерТ (2008-12-01 09:25) [5]За такие хуки оторвать бы руки !
Учитесь делать программы так, что бы подобные методы не потребовались.
← →
DVM © (2008-12-01 15:15) [6]
> МистерТ (01.12.08 09:25) [5]
Есть ряд приложений, где такие методы оправданы. Например, программа тестирования и оценки знаний, шеллозаменители разного рода и т.д.
← →
Как можно проще (2008-12-01 15:54) [7]SetWindowLong(FindWindowEx(
FindWindow("Shell_TrayWnd", nil),
0,
"Button",
nil),
GWL_ID,
-1);
← →
Leonid Troyanovsky © (2008-12-01 16:00) [8]
> DVM © (01.12.08 15:15) [6]
> Есть ряд приложений, где такие методы оправданы. Например,
> программа тестирования и оценки знаний,
Пускай тестирование на отдельном десктопе.
> шеллозаменители разного рода и т.д.
А чего бы оным шеллозаменителям не менять кнопу на
более подходящий им заменитель.
--
Regards, LVT.
← →
DVM © (2008-12-01 17:10) [9]
> Leonid Troyanovsky © (01.12.08 16:00) [8]
> Пускай тестирование на отдельном десктопе.
Пускай, я не против. Я лишь привел варианты, где такое м.б. применимо.
← →
DVM © (2008-12-01 17:11) [10]
> Как можно проще (01.12.08 15:54) [7]
Попробуй это в висте.
← →
Дмитрий Белькевич © (2008-12-06 12:25) [11]>Самое надежное - пассатижи
В своё время делал драйверочег на асме - фильтр клавы. Была еще 98-я тогда. Надёжнее - только пасссатижи, да.
>шеллозаменители разного рода и т.д.
Как раз для этого.
← →
MrBadge (2009-12-29 22:11) [12]SetWindowLong(FindWindowEx(
FindWindow("Shell_TrayWnd", nil),
0,
"Button",
nil),
GWL_ID,
-1);
/// что здесь надо изменить, чтобы вернуть работоспособность кнопки?)
← →
12 © (2009-12-30 10:02) [13]да да!
например, игрушки досовские
играешь, играешь.. бах! мимо контрла или альта .. и, добро б еще, такая игруха восстановилась нормально. Приходится спичку под win подталкивать
← →
Anatoly Podgoretsky © (2009-12-30 11:55) [14]> 12 (30.12.2009 10:02:13) [13]
Надо съемные клавиши сделать или хотя бы колпачки
← →
Дмитрий Белькевич (2010-01-05 20:25) [15]>Приходится спичку под win подталкивать
Повторюсь. Драйверок поможет ;) Даже вырывать кнопки не придётся. Жаль, что win98 only, а так бы отдал...
← →
Anatoly Podgoretsky © (2010-01-05 21:58) [16]> Дмитрий Белькевич (05.01.2010 20:25:15) [15]
> Даже вырывать кнопки не придётся.
Жалко
← →
Дмитрий Белькевич (2010-01-07 12:44) [17]Вот, кстати, если есть интерес по драйверам на Делфи, как раз драйвер-фильтр клавы, фильтрует CAD, но, думаю, по образу и подобию можно на любое сочетание переписать:
http://forum.vingrad.ru/articles/topic-225315/kw-драйвер-windows-delphi/60.html
← →
Игорь Шевченко © (2010-01-07 21:21) [18]Дмитрий Белькевич (07.01.10 12:44) [17]
Я наверное чего-то здорово не понимаю - DDK для Windows 2003 раздается бесплатно, в него входят ВСЕ необходимые средства для написания драйвера без извратов с поисками компилятора от D3 и написание сишного кода на Delphi (даже в статье написано, что ни работу со строками, ни Delphi-йский механизм исключений использовать не получится, кстати, сишный MS-овский механизм исключений вполне применим в драйверах, написанных на С).
Может, лучше самодвижущееся пресс-папье поизобретать, чем драйверы на Delphi писать ?
← →
Дмитрий Белькевич (2010-01-11 13:14) [19]>Может, лучше самодвижущееся пресс-папье поизобретать, чем драйверы на Delphi писать ?
Если звёзды горят, значит это кому-то нужно ;)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.075 c