Buderus-trade.ru

Теплотехника Будерус
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Блокировка правой кнопки мышки в Excel

Блокировка правой кнопки мышки в Excel

Добрый день, уважаемые читатели блога! Сегодня отвечаю на вопрос одного из подписчиков — как заблокировать вызов контекстного меню (щелчок правой кнопкой мышки) на листе и книге Excel.

Самый простой и действенный способ — написать небольшой макрос. Пойдём по уже знакомому алгоритму вставки кода в элементы файла Excel. О том как найти вкладку «Разработчик» и добавлять код VBA в модули, листы и книги можно посмотреть в предыдущих статьях.

Блокируем лист
  • открываем вкладку «Разработчик»;
  • нажимаем кнопку «Visual Basic»;
  • два раза щёлкаем на имя листа где хотим заблокировать щелчок правой кнопки мыши (у меня это Лист1).

Блокировка правой кнопки мышки в Excel

Далее вставляем небольшой макрос:

Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Вся соль заключается в имени команды — перед щелчком правой кнопки мышки программа проверяет, а можно ли вообще щёлкать? В нашем случае аргумент Cancel имеет значение True, то есть программа проверила возможность блокировки и получила положительный ответ, заблокировано.

Будьте очень внимательны, если данный код разместить в модуле рабочей книги («Workbook») он не сработает.

Блокируем книгу

Для блокировки правой кнопки мышки на новых листах следует указать вот такой макрос:

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

Здесь изменена область — вместо листа работаем с книгой, и событие (SheetBeforeRightClick), действие и аргумент остались прежними.

Блокировка правой кнопки мышки в Excel

Если хотим, чтобы также выводилось некое сообщение к коду можно добавить всплывающее окно с сообщением.

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)

Cancel = True
MsgBox («Контекстное мею заблокировано!»)

Блокировка правой кнопки мышки в Excel

Теперь при щелчке будет выводиться сообщение.

Блокировка правой кнопки мышки в Excel

Счётчик нажатий правой кнопки мыши

Можно пойти дальше и показывать места где был совершён щелчок правой кнопкой мышки, вставляя в эти места надписи с номером нажатия. Код будет следующим. В нём мы избавимся от всплывающего окна и добавим счётчик.

Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
‘ Счетчик нажатий кнопки мыши
Static intCount As Integer
Dim x As Integer, y As Integer
Cancel = True

‘ Отображение текстового поля с количеством щелчков правой _
кнопкой мыши
x = Target.Left
y = Target.Top
intCount = intCount + 1
ActiveSheet.Shapes.AddTextbox(msoTextOrientationHorizontal, _
x, y, 35, 20).TextFrame.Characters.Text = intCount

Блокировка правой кнопки мышки в Excel

В код макроса добавлен счётчик щелчков правой кнопкой мыши, который определяет положение курсора (ячейки на которую он наведён) и порядковый номер (начиная с единицы) вызова контекстного меню. Результат будет следующим.

Читайте так же:
Pantum m5005 счетчик страниц

Блокировка правой кнопки мышки в Excel

Всё просто! Теперь можно блокировать контекстное меню разными способами! Всем удачи!

AHK: Счетчик кликов клавишей мыши в определенной области экрана

Помогите пожалуйста!
Нужен код для подсчета кликов мышью по кнопке в окне браузера.
В идеале хотелось, чтобы код сам определял эту область кнопки, по заранее сделанному её скрину. Так как кнопка не всегда находится на одном месте. При прокрутке, она немного смещается по вертикали.
Но если это будет проблемно исполнить, можно просто забить область на экране в код. и желательно, чтобы эта область была как то выделена, например рамкой в 1 или 2 пикселя
Сразу хочу предупредить, что я полный чайник в написании кода Фантазия работает, а языков не знаю

2 Ответ от __Михаил__ 2020-09-09 20:21:58

  • __Михаил__
  • Участник
  • Неактивен

Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана

Данный форум помогает в решении проблем.
Напишите свой код и если он кого-то заинтересует, то вам помогут решить ваши проблемы с ним.

3 Ответ от Jack 2020-09-09 20:48:37 (изменено: Jack, 2020-09-09 20:50:12)

  • Jack
  • Участник
  • Неактивен
  • Рейтинг : [ 0 | 0 ]
Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана

__Михаил__ я понимаю, что только помогают, но я вообще не разбираюсь в этом. Однажды я уже просил мне помочь и тоже без кода пришел, нашлись добрые люди, которые помогли мне с этим. Например здесь: http://forum.script-coding.com/viewtopic.php?id=9953
Хотелось бы верить, что и сейчас кто то отзовется

4 Ответ от __Михаил__ 2020-09-09 20:52:31

  • __Михаил__
  • Участник
  • Неактивен

Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана

Jack

Читал и видел, что за столько лет нет желания к самосовершенству.

5 Ответ от __Михаил__ 2020-09-09 20:55:06

  • __Михаил__
  • Участник
  • Неактивен
Читайте так же:
Схема подключения счетчика диск

Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана

В целом ничего сложного тут не вижу. Сейчас набросаю что-нибудь.

6 Ответ от Jack 2020-09-09 21:05:41

  • Jack
  • Участник
  • Неактивен
  • Рейтинг : [ 0 | 0 ]
Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана

__Михаил__ Я специалист в других сферах и просто нет банально времени вникать глубоко в эту тему. Вот взяли бы и помогли мне вместо того, чтобы упрекать меня в не компетентности

7 Ответ от Jack 2020-09-09 21:07:24

  • Jack
  • Участник
  • Неактивен
  • Рейтинг : [ 0 | 0 ]
Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана

__Михаил__ Спасибо, Мир не без добрых людей

8 Ответ от __Михаил__ 2020-09-09 21:32:05

  • __Михаил__
  • Участник
  • Неактивен

Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана

Важно: картинка не должна меняться, иначе не произойдёт её определение.

9 Ответ от __Михаил__ 2020-09-09 22:12:54

  • __Михаил__
  • Участник
  • Неактивен

Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана

Работает коряво, при многократном нажатии может перестать определять, фиг знает что делать))

10 Ответ от Jack 2020-09-10 09:18:43 (изменено: Jack, 2020-09-10 12:09:18)

  • Jack
  • Участник
  • Неактивен
  • Рейтинг : [ 0 | 0 ]
Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана

__Михаил__Может второй вариант осуществить? Просто считать клики в определенной области на экране. У меня тоже проблемы, моя кнопка меняет немного тон при наведении мыши на неё.
Или может кто-то другой поможет устранить проблему в коде?

11 Ответ от __Михаил__ 2020-09-11 21:13:47

  • __Михаил__
  • Участник
  • Неактивен

Re: AHK: Счетчик кликов клавишей мыши в определенной области экрана

Jack

Сделал по новому, теперь в виде нормальной проги, косяки возможно не все вычистил.

Событие mousePress на JavaScript и jQuery

Событие mousePress на JavaScript и jQuery

Здравствуйте, уважаемые читатели блога LifeExample.Столкнулся я на днях с одной элементарной задачей. Нужно было написать JavaScript, который бы увеличивал число в поле ввода, пока пользователь зажал кнопку мыши и держит ее. Другими словами, на странице имеется input со значением равным 0, рядом с инпутом расположен любой элемент, ну например кнопка с надписью "увеличить", когда нажимаем на "увеличить" число в инпуте увеличивается на +1 пока не отпустили кнопку мышки.

Читайте так же:
Javascript счетчик дней сколько прошло времени

Демо пример mousepress в javascritp

Наверняка 90% читателей сейчас подумало о том, нужно использовать onclick или просто click если это jQuery. К сожалению это не так, навесив на элемент событие click, оно выполнится лишь единожды при нажатии, а нужно выполнять действие, пока кнопка нажата без перерыва .

Как выяснилось в ходе изучения задачи, JavaScript предоставляет нам методы:

  • Mousemove — нажатие на кнопку мыши;
  • Mousedown — нажатие на кнопку мыши;
  • Mouseup — нажатая кнопка мыши отпущена;
  • Mouseleave – курсор покинул область объекта, либо фокус снялся;
  • Click — клик мыши;
  • Dblclick — двойной клик;
  • Contextmenu – контекстное меню.

Но среди доступных событий в JavaScript нет ничего похожего на mousepress или mousepressed. Поэтому суть задачи сводится к эмулированию события mousepress. По большому счету сделать это не сложно, так как мы можем отловить момент, когда пользователь нажал на кнопку и когда ее отпустил.

Для этого используем имеющиеся события Mousedown, Mouseup, Mouseleave и Settimeout.

Алгоритм для события Mousepress на JavaScript

Алгоритм эмулирования события mousepress на JavaScript с использованием jQuery выглядит таким образом:

  1. При нажатии на кнопку (Button) мыши (Mousedown) устанавливаем флаг (isDown = true).
  2. Пока флаг (isDown) стоит, выполняем какое либо действие (doAction) с заданным интервалом времени (Settimeout).
  3. Если кнопка отпущена (Mouseup) сбрасываем флаг (isDown = false).
  4. Если курсор покидает область кнопки (Button) при этом генерируя событие (Mouseleave) , сбрасываем флаг (isDown = false).

Вот и вся реализация mousepress и mousepressed на jQuery и Javascript.

Благодаря этому алгоритму можно реализовать удобный increment поля ввода. Кстати для еще большего удобства, лучше учесть возможность увеличения шага инкремента со временем нажатия.

Если произошло нажатие на кнопку и пользователь не отпускает ее первые 20 итераций, то шаг увеличится на 10, если после этого прошло еще 10 итераций, то шаг увеличится на 100 и так далее.

Читайте так же:
Счетчик импульсов с сумматором

Это ускорит процесс выбора нужного числа в поле, т.е. не придется ждать 5 минут пока счетчик накрутит 10000.

Надеюсь, данный материал по эмулированию mousepress на JavaScript поможет вам в реализации собственных задач.

Читайте также похожие статьи:

Чтобы не пропустить публикацию следующей статьи подписывайтесь на рассылку по E-mail или RSS ленту блога.

Счетчик нажатий кнопок мыши

Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.4.2008

Репутация: нет
Всего: нет

Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99

Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай — все едино". А. и Б. Стругацкие

Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.4.2008

Репутация: нет
Всего: нет

Профиль
Группа: Модератор
Сообщений: 20507
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453

Нигде в системе такая информация не считается и не хранится — по причине очевидной ее ненужности.
Точный подсчет средствами VB невозможен даже в рамках VB-приложения — всегда возможны пропуски событий. А опрашивать постоянно драйвер — закоматозить систему.

А нахрена вообще это?

О(б)суждение моих действий — в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция — Администрация форума.

Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.4.2008

Репутация: нет
Всего: нет

Профиль
Группа: Модератор
Сообщений: 20507
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453

О(б)суждение моих действий — в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция — Администрация форума.

Профиль
Группа: Участник
Сообщений: 145
Регистрация: 18.4.2006
Где: Краснодар

Репутация: 3
Всего: 4

Профиль
Группа: Участник
Сообщений: 5
Регистрация: 10.4.2008

Репутация: нет
Всего: нет

Когда начинал писать эту прогу — думал этот шаг один из простых будет.
По существу: Из главной формы кнопкой пуск вызывается другая форма. К компьютеру подключена ещё одна лазерная мышь которая находится в составе некого электронного устройства выполняющего измерение. Измерениеями и будут считаться перемещение курсора мыши по оси Х. Для фиксации момента в который нужно произвести измерени — нажимается кнопка мыши. Всего измерений 6 (шесть). В процессе измерений на форме появляются комментарии и прчий хелп так как может быть произведено не шесть а меньше измерений и этого достаточно. После нужного количества измерений (после шестого автоматически) — форма закрывается и управление в главную форму. После первого запуска приложения эта процедура можетповторяться неограниченное количество раз. Вот и необходимо подсчёт количества нажатий. И ещё вопрос. Как програмно енять чувствительность мыши?

Читайте так же:
Будут ли штрафы для тех кто не установил счетчики

А Static — предпологалось использовать для подсчёта нажатий- это же счётчик события, в моём случае.

Профиль
Группа: Модератор
Сообщений: 20507
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 453

Цитата(nonik @ 21.5.2008, 06:28 )
Static — предпологалось использовать для подсчёта нажатий- это же счётчик события, в моём случае.

О(б)суждение моих действий — в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция — Администрация форума.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • FAQ раздела лежит здесь!

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »

[ Время генерации скрипта: 0.1188 ] [ Использовано запросов: 21 ] [ GZIP включён ]

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector