Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.94/47: Рейтинг темы: голосов - 47, средняя оценка - 4.94
weboman
 Аватар для Schtrich
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6

Работа с глобальным хуком

24.07.2012, 13:12. Показов 9994. Ответов 26

Студворк — интернет-сервис помощи студентам
Сабж. Знаю, в инете полно, какой рабочий, т.е. каким вы пользовались и у вас получилось?

п.с. хук имеется в виду глобальный, тот который будет срабатывать даже если пользователь находится в другом приложении?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.07.2012, 13:12
Ответы с готовыми решениями:

Прoблемa с хуком
Всем привет! Делаю прогу повторяющую действия, хочу сделать на воспроизведении действий возможность остановки воспроизведения, у меня...

Маленькая заминка с хуком клавиатуры
хук предоставил внизу, работает, но срабатывает при нажатии любой клавиши (вообще любой) nCode всегда = 0, а как собственно узнать тогда...

Работа с хуком по захвату мыши
Здравствуйте! Имеется вот такой вот интересный хук мыши: https://www.cyberforum.ru/post1413269.html При нажатии и отжатии мыши...

26
weboman
 Аватар для Schtrich
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
26.07.2012, 16:31  [ТС]
Студворк — интернет-сервис помощи студентам
SSTREGG, спасибо , а можешь сказать почему картинка не выводится если я ее с диска читаю?

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void KBDHook_KeyDown ( LLKHEventArgs e )
        {
            switch ( e.Keys )
            {
            case Keys.A:
                // pictureBox1.Visible = true; 
                test();
                break;
            case Keys.B:
                pictureBox1.Visible = false;
                break;
            }
        }
 
        void test()
        {
            
            Image img = Image.FromFile("test.bmp");
            pictureBox1.Image = img;
        }
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
26.07.2012, 16:49
AlienNation, для начала следует изменить свойство Visible PictureBox'а, т.к. я его в дизайнере по умолчанию в False выставил. А потом следует изменить тактику: не грузить постоянно, одно и тоже изображение, при нажатии на клавишу, это плохо скажется на производительности. Загрузи заранее, потом выводи.
1
weboman
 Аватар для Schtrich
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
26.07.2012, 16:56  [ТС]
Спасибо, разобрался!
0
20 / 4 / 1
Регистрация: 17.11.2009
Сообщений: 142
05.05.2014, 19:15
Подниму тему.
Если на ту же кнопку повесить вызов MessageBox.Show(""), вся система начинает зависать на несколько секунд после появления диалогового окна. Только потом отвисает.
Как-то можно это исправить?
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
05.05.2014, 21:45
Цитата Сообщение от m9yt Посмотреть сообщение
Как-то можно это исправить?
m9yt, не выводить модальные окна (вообще не выполнять дорогостоящих операций) в том потоке в котором происходит обработка хука.
В системе есть глобальный таймаут HKEY_CURRENT_USER\Control Panel\Desktop :: LowLevelHooksTimeout, по истечению которого Ваше приложение будет удалено из цепочки хуков (что и происходит).
0
20 / 4 / 1
Регистрация: 17.11.2009
Сообщений: 142
06.05.2014, 10:36
NickoTin, а по-другому никак? Просто я делаю в своем приложении горячие клавиши, и на некоторые из них обязательно повешены вызовы модельных окон.

Добавлено через 22 минуты
Хуки пришлось применить из-за того, что на форме имеется компонент DSOFramer, в котором открыт документ Word. В этом случае все комбинации клавиатуры перехватываются им. Может можно как-то организовать в данном случае перехват клавиш, не используя хуки?

Добавлено через 14 минут
Вот что нарыл на форуме насчет этого зависания:
Глобальный Хук на клавиатуру и MessageDlg
Но диалоговые окна мне точно нужны, это часть функционала системы.
0
Почетный модератор
Эксперт .NET
 Аватар для NickoTin
8729 / 3681 / 404
Регистрация: 14.06.2010
Сообщений: 4,513
Записей в блоге: 9
07.05.2014, 00:34
Цитата Сообщение от m9yt Посмотреть сообщение
Может можно как-то организовать в данном случае перехват клавиш, не используя хуки?
RegisterHotKey
Отловить нажатие сочетания клавиш глобально

Но если клавиша уже кем-то зарегистрирована, то зарегистрировать не получится.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.05.2014, 00:34

Обращение из потока к глобальным переменным
Здравствуйте. интересует такой момент есть код private void add() { Random rnd = new Random(); ...

Сделать глобальным generic класс
Добрый вечер! Возник такой вопрос. В программе использую дженерик класс Mapper<T>, в другом классе есть необходимость объявить его...

Проблема с хуком
Подскажите в чем проблема и как это можно решить? Создал хук на события мыши и некоторых клавиш, он их перехватывает но вместо одного...

Сделать указатель глобальным
есть указатель на структуру IL0 *pM; он объявлен в dog.h. Есть хидер cat.h в нем #include "dog.h" а в cat.cpp...

Проблема с глобальным массивом
Здравствуйте! Подскажите пожалуйста, как правильно обратится к глобальному массиву array. До этого прописал static , но программа...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru