Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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.067 c
15-1330893003
Юрий
2012-03-05 00:30
2013.03.22
С днем рождения ! 5 марта 2012 понедельник


3-1277448717
pavel_guzhanov
2010-06-25 10:51
2013.03.22
Можно ли сравнить два набора данных?


2-1336748580
Chahlik
2012-05-11 19:03
2013.03.22
Интерполяция. Помогите!!!


15-1340635894
AlexDn
2012-06-25 18:51
2013.03.22
Где взять доменное имя?


15-1339316192
MastaK
2012-06-10 12:16
2013.03.22
Игра Sokoban





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский