Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Запрещение реакции на нажатие кнопки 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 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.061 c
15-1332793802
Юрий
2012-03-27 00:30
2013.03.22
С днем рождения ! 27 марта 2012 вторник


2-1338127419
Глеб
2012-05-27 18:03
2013.03.22
Перенос данных из дельфи в хмл


2-1337283963
TStas
2012-05-17 23:46
2013.03.22
Правая клавиша в ричЭдит


9-1193300178
SergGG
2007-10-25 12:16
2013.03.22
Перевод координат в OpenGL


15-1332016205
Юрий
2012-03-18 00:30
2013.03.22
С днем рождения ! 18 марта 2012 воскресенье