Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/25: Рейтинг темы: голосов - 25, средняя оценка - 4.80
 Аватар для QuadroX
21 / 21 / 2
Регистрация: 14.10.2009
Сообщений: 202

Заблокировать клавишу Windows

08.08.2010, 18:35. Показов 5273. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть у кого нибудь пример кода, позволяющего блокировать нажатия левой и правой кнопок Windows? Хочу создать себе программу на его основе. Буду очень благодарен.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.08.2010, 18:35
Ответы с готовыми решениями:

Заблокировать клавишу в Windows
У меня есть хороший клавиатурный хук(код ниже) При нажатии определенной клавиши, срабатывает моя программа, НО она также срабатывает и в...

Заблокировать клавишу
Добрый вечер,уважаемые форумчане!У меня произошла некоторая проблема с моим ноутбуком,а точнее с клавиатурой.Дня два назад сидел за своим...

Заблокировать клавишу в форме(1) после правельного ответа в другой(2) и возвращение в неё (1) или в начальную
Сталкнулся собственно с той проблемой что описано выше.Нужна помощь с реализацией,играть->вопрос лёгкий в 1ой котегории и при правельном...

4
 Аватар для Бельфегор
688 / 602 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
08.08.2010, 18:38
если по английски понимаешь, вот тут есть про блокирование разных коомбинаций и функций и WinKey тоже
1
 Аватар для QuadroX
21 / 21 / 2
Регистрация: 14.10.2009
Сообщений: 202
09.08.2010, 16:22  [ТС]
Цитата Сообщение от VelZeVuL Посмотреть сообщение
если по английски понимаешь, вот тут есть про блокирование разных коомбинаций и функций и WinKey тоже
Не помогло. С английским плохо наверное. Интересует не полное отключение этих клавиш, а блокирование нажатий во время запуска программы. По идее это легче реализовать.
0
 Аватар для Бельфегор
688 / 602 / 139
Регистрация: 08.05.2009
Сообщений: 1,098
09.08.2010, 17:14
добавляешь референсы

C#
1
2
 using System.Diagnostics;  
using System.Runtime.InteropServices;
добавляешь этот код перед конструктором формы (перед public form1())

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[StructLayout(LayoutKind.Sequential)] 
private struct KBDLLHOOKSTRUCT   
{
public Keys key;
public int scanCode;
public int flags;
public int time;
public IntPtr extra;
}
 private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam); 
 [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] 
private static extern IntPtr SetWindowsHookEx(int id, LowLevelKeyboardProc callback, IntPtr hMod, uint dwThreadId);  
 [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] 
 private static extern bool UnhookWindowsHookEx(IntPtr hook);  
 [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]  
private static extern IntPtr CallNextHookEx(IntPtr hook, int nCode, IntPtr wp, IntPtr lp);
 [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] 
 private static extern IntPtr GetModuleHandle(string name);  
 [DllImport("user32.dll", CharSet = CharSet.Auto)] 
 private static extern short GetAsyncKeyState(Keys key); 
 private IntPtr ptrHook; 
 private LowLevelKeyboardProc objKeyboardProcess;

в конструкторе формы пишешь это

C#
1
2
3
ProcessModule objCurrentModule = Process.GetCurrentProcess().MainModule;
objKeyboardProcess = new LowLevelKeyboardProc(captureKey); 
 ptrHook = SetWindowsHookEx(13, objKeyboardProcess, GetModuleHandle(objCurrentModule.ModuleName),0);
это метод который ловит нажатия клавиш и блокирует кнопки WinKney

C#
1
2
3
4
5
6
7
8
9
10
11
private IntPtr captureKey(int nCode, IntPtr wp, IntPtr lp)  
 {
if (nCode >= 0)  
 {  
 KBDLLHOOKSTRUCT objKeyInfo = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lp, typeof(KBDLLHOOKSTRUCT)); 
if (objKeyInfo.key == Keys.RWin || objKeyInfo.key == Keys.LWin) //вот тут и блокируется WinKey {   
 return (IntPtr)1;  
 } 
  } 
return CallNextHookEx(ptrHook, nCode, wp, lp);  
 }
для тог чтобы после закрытия твоей проги клавиша WinKey разблокировалась, идешь в деструкрор формы и пишешь

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
protected override void Dispose(bool disposing) 
 { 
 if (disposing && (components != null))
{ 
components.Dispose();  
 } 
 if (ptrHook != IntPtr.Zero) 
  {  
 UnhookWindowsHookEx(ptrHook);
 ptrHook = IntPtr.Zero;
}  
base.Dispose(disposing);
 }
в прицыпе есть другой способ, через удаление значения клавиши из реестра винды, но имхо он тебе не очень подходит
4
 Аватар для QuadroX
21 / 21 / 2
Регистрация: 14.10.2009
Сообщений: 202
09.08.2010, 19:24  [ТС]
Большое спасибо, что написал для меня довольно объемный код! =)

Это как раз то, что нужно.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
09.08.2010, 19:24
Помогаю со студенческими работами здесь

Сохранить клавишу активной на клавиатуре в Windows 10
При зажатии какой-либо клавиши на клавиатуре производится ввод символа до момента отпускания, все как надо. Но если при этом нажать другую...

Как программно нажать клавишу Windows?
Знаю подобных вопросов на форуме много, но все же прочитав большую их часть, я не нашел ответа, как же все таки программно нажать на...

Почему Windows так реагирует на клавишу alt
Всем привет. Вообщем есть фича в винде такая, как создание невидимой папки. И в процессе ее создания нужно проделать манипуляцию с именем...

Восстановление Windows 7, тыкая клавишу F9 во время загрузки BIOS
Всю жизнь было так: при загрузке с флешки были пункты "Восстановить" и "Выход" (выключить компьютер), а если тыкать F9, то есть запускать...

Заблокировать внешний ip на RDP (Windows Server 2008 r2)
Есть задача, заблокировать внешний ip (или диапазон ip) на роутере, чтобы c данных адресов небыло возможности обращаться к роутеру, сети. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru