Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 23
1

Программное отключение мыши

16.06.2016, 14:27. Показов 1605. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Может кто подкинет идею, как программно отключить мышь.

BlockInput не подходит, поскольку он блокирует и клаву. А она мне нужна для работы приложения.
Также не подходят решения, которые по таймеру перемещают курсор в левый верхний угол (видел где-то такой пример).

Есть ещё какие-то варианты?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.06.2016, 14:27
Ответы с готовыми решениями:

Прпограммное отключение мыши, как?
Как программно отключить мышь?

Программное отключение\включение ADSL
Здравствуйте, есть ли у кого соображение по поводу, как программно отключить\включить ADSL интернет?

Chart как показывать координаты мыши по графику возле курсора мыши!
Chart как показывать координаты мыши по графику возле курсора мыши! Когда двигаешь мышкой по...

Вывести поточные координаты курсора мыши относительно формы и экрана, при нажатии на кнопку-реверсное изменение кнопок мыши C++
доброй ночи, уважаемые программисты, умные школьники, преуспевающие студенты, а также все участники...

11
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
16.06.2016, 15:03 2
Если это в пределах твоего приложения, тогда бросить компонент ApplicationEvents и в обработчике OnMessage блокировать все сообщения мыши.
0
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 23
16.06.2016, 15:04  [ТС] 3
Тоже к сожалению не подходит. Нужно контролировать весь рабочий стол. Приложение имитирует перемещение курсора и клики. Но если при этом случайно задеть мышь, то всё сбивается. Нужно на время работы главного цикла отлючить мышь. А после выполнения снова отдать управление юзеру.
0
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
16.06.2016, 15:20 4
Тогда ставить глобальный хук на мышь.
Сейчас пороюсь, что-то когда-то делал такое

Добавлено через 7 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
HHOOK hMouseHook = 0;
 
// ---------------------------------------------------------------------------
int __stdcall MouseProc(int nCode, DWORD wParam, DWORD lParam) // Блокировка мыши
{
    return 777;
}
 
//---------------------------------------------------------------------------
void __fastcall TForm2::FormCreate(TObject *Sender) {
    hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, (HOOKPROC) & MouseProc, GetModuleHandle(NULL), 0);
    if (hMouseHook) {
        this->Caption = "Mouse hook installed";
    }
}
 
//---------------------------------------------------------------------------
void __fastcall TForm2::FormDestroy(TObject *Sender) {
    if (hMouseHook && UnhookWindowsHookEx(hMouseHook)) {
        // Log("Mouse hook was successfully removed!");
    }
    else {
        // Log("Can not release mouse hook!");
    }
}
П.С. Проверял на CBuilder 2010 Win 7, за другие среды и операционки не отвечаю
3
управление сложностью
1687 / 1300 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
16.06.2016, 15:21 5
Цитата Сообщение от Maluda Посмотреть сообщение
Сейчас пороюсь, что-то когда-то делал такое
Буду вам очень признателен
0
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
16.06.2016, 15:23 6
Просьба для всех только в вирусне это не использовать и пакости не делать
0
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 23
16.06.2016, 15:45  [ТС] 7
Супер! Отличное решение.

PS. Не переживай, у меня приложение полезное. Автоматизирует действия для одной очень древней самописанной системы учёта в нашей фирме. Там +100500 кпопок, а реально нужно использовать только несколько. Пока по всем накликаешь, с ума сойти можно. На новый софт денег у шефа как всегда нету, а автоматизации хочется. Вот меня и посадили написать к нему маленькую утилиту, которая облегчит ввод данных )) Но наши тётки не могут понять, что при этом нельзя играть в косынку. Вот и нужно блокировать им мышь на время заполнения всех форм.
0
управление сложностью
1687 / 1300 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
16.06.2016, 15:56 8
Цитата Сообщение от todayz Посмотреть сообщение
PS. Не переживай, у меня приложение полезное. Автоматизирует действия для одной очень древней самописанной системы учёта в нашей фирме. Там +100500 кпопок, а реально нужно использовать только несколько. Пока по всем накликаешь, с ума сойти можно. На новый софт денег у шефа как всегда нету, а автоматизации хочется. Вот меня и посадили написать к нему маленькую утилиту, которая облегчит ввод данных )) Но наши тётки не могут понять, что при этом нельзя играть в косынку. Вот и нужно блокировать им мышь на время заполнения всех форм.
Так они вообще мышью не смогут пользоваться )))) будут ощущать себя калеками...
0
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 23
16.06.2016, 16:04  [ТС] 9
Так они вообще мышью не смогут пользоваться )))) будут ощущать себя калеками...
Ага, я уже представляю как они будут за мной табуном бегать и кричать что они не могут нормально работать. Косынка блин не раскладывается )))

Добавлено через 6 минут
Вроде всё на первый взгляд было отлично, но после выполнения кода

SetCursorPos(100, 200);

Мышь снова разблокируется (((
0
управление сложностью
1687 / 1300 / 259
Регистрация: 22.03.2015
Сообщений: 7,545
Записей в блоге: 5
16.06.2016, 17:05 10
Ну так обратно блокируйте
0
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
16.06.2016, 17:32 11
Цитата Сообщение от todayz Посмотреть сообщение
Мышь снова разблокируется (((
Проверил у себя
Цитата Сообщение от todayz Посмотреть сообщение
SetCursorPos(100, 200);
Мышь перемещается, но после этого находится в заблокированном состоянии.
Или тебе надо, чтобы она не реагировала на SetCursorPos?

мышь раз в секунду смещается, но пользователь не может на нее воздействовать,
она остаётся в заблокированном состоянии
C++
1
2
3
4
5
//---------------------------------------------------------------------------
void __fastcall TForm2::Timer1Timer(TObject *Sender) {
    static int iTest = 100, iTest2 = 100;
    SetCursorPos(iTest++, iTest2++);
}
0
0 / 0 / 0
Регистрация: 29.06.2015
Сообщений: 23
16.06.2016, 19:13  [ТС] 12
Мышь перемещается, но после этого находится в заблокированном состоянии.
Или тебе надо, чтобы она не реагировала на SetCursorPos?
Это странно. У меня она заблокирована ровно до тех пор, пока не сработает SetCursorPos.

Нет, мне как раз нужно, чтобы она реагировала на SetCursorPos но физически мышкой нельзя было управлять.
0
16.06.2016, 19:13
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.06.2016, 19:13
Помогаю со студенческими работами здесь

Отключение дисплея (программное)
Кто подскажет как отключить дисплей, а при нажатии любой кнопки или мыши, даже движении, затем...

Программное отключение функции
Добрый день! В книге EXCEL есть пользовательская функция: Function HasFormula(C As Range) As...

Программное отключение интернета
Всем привет, интересует такой вопрос: Можно кликами мышки выключать интернет в "Центре ...", в...

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


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru