Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1708 / 577 / 74
Регистрация: 10.04.2009
Сообщений: 9,291

Ворд как погасить появление контекстного меню по нажатию ПКМ

17.09.2019, 09:46. Показов 2519. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, код:
Visual Basic
1
2
3
4
5
Private Sub App_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean)
 
    Beep
   
End Sub
работает как нужно, при клике правой клавишей мыши (ПКМ) происходит звук - Beep, как погасить следом появляющееся от Ворда контекстное меню? нужно, чтобы оно не появлялось, спс

Добавлено через 16 минут
то есть нужно как я понимаю программно нажать левую клавишу мыши, вроде так?, как это сделать?, спс
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.09.2019, 09:46
Ответы с готовыми решениями:

Как организовать появление вкладки контекстного меню только на определенном листе?
Добрый день! Как организовать появление вкладки контекстного меню только на определенном листе? Добавлено через 4 часа 30 минут Есть...

Ворд выделение строки контекстного меню
здравствуйте, добавляю меню кодом: With .Controls.Add(msoControlButton) .Caption = "Печать невозможна, отсутствует...

При вызове контекстного меню ворд зависает
Когда выделяю в ворде 2007 (windows 7) текст потом нажимаю на правую кнопку мыши, появляются песочные часы, и они не исчезают, и так...

12
371 / 269 / 93
Регистрация: 18.11.2015
Сообщений: 1,001
17.09.2019, 09:53
Как добавить собственный пункт в контекстное меню Excel?
0
es geht mir gut
 Аватар для SoftIce
11274 / 4760 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
17.09.2019, 10:01
Лучший ответ Сообщение было отмечено Ципихович Эндрю как решение

Решение

Цитата Сообщение от Ципихович Эндрю Посмотреть сообщение
Visual Basic
1
2
3
Private Sub App_WindowBeforeRightClick(ByVal Sel As Selection, Cancel As Boolean)
Beep
End Sub
Visual Basic
1
2
3
Cancel = True
Beep
End Sub
0
1708 / 577 / 74
Регистрация: 10.04.2009
Сообщений: 9,291
17.09.2019, 10:05  [ТС]
Цитата Сообщение от SoftIce Посмотреть сообщение
Cancel = True
шоколадно, спс
0
1708 / 577 / 74
Регистрация: 10.04.2009
Сообщений: 9,291
18.09.2019, 09:24  [ТС]
здравствуйте, а как наоборот вызвать контекстное меню, то есть руками выделил текст, сделать программное нажатие ПКМ? спс
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
19.09.2019, 09:14
Visual Basic
1
2
3
4
Private Sub app_WindowSelectionChange(ByVal Sel As Selection)
    'MsgBox Sel, vbInformation
    Application.CommandBars(100).ShowPopup
End Sub
При изменении выделенного текста показывает меню.
0
1708 / 577 / 74
Регистрация: 10.04.2009
Сообщений: 9,291
19.09.2019, 09:28  [ТС]
Visual Basic
1
2
3
4
Private Sub app_WindowSelectionChange(ByVal Sel As Selection)
'MsgBox Sel, vbInformation
Application.CommandBars(100).ShowPopup
End Sub
спс, как бы в цвет, можете пояснить что означает цифра 100?
и недостаток в том, что выделил-меню показало, но меню потом пристало, как банный лист, всё время появляется при любом клике ЛЕВОЙ клавиши мыши, как избавиться? спс
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
19.09.2019, 09:42
100 это видимо индекс менюшки в общем списке.
Пристало потому что стоит на событии изменении выделенного текста. Надо условие задать при котором отображать.

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
 Прячем все что есть в этом меню
For Each cnt In Application.CommandBars(100).Controls
    cnt.Visible = False
    Next cnt
  
добавляем свои элементы меню  
    For i = 0 To 5
    Set MyPoint = Application.CommandBars(100).Controls.Add
    MyPoint.Caption = "item" + CStr(i)
    Next i
    
показываем
    Application.CommandBars(100).ShowPopup
1
1708 / 577 / 74
Регистрация: 10.04.2009
Сообщений: 9,291
19.09.2019, 09:52  [ТС]
Цитата Сообщение от Worldmaster Посмотреть сообщение
Надо условие задать при котором отображать.
так поставлено же условие-отображать после выделения текста, или не так?

Добавлено через 6 минут
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Прячем все что есть в этом меню
For Each cnt In Application.CommandBars(100).Controls
    cnt.Visible = False
    Next cnt
  
добавляем свои элементы меню  
    For i = 0 To 5
    Set MyPoint = Application.CommandBars(100).Controls.Add
    MyPoint.Caption = "item" + CStr(i)
    Next i
    
показываем
    Application.CommandBars(100).ShowPopup
как бы интересно, но это по клику ЛКМ-тем не менее как потом убрать, чтобы отстало
и добавляя строку .OnAction = "Script" - взлетит, добавит макрос для запуска пункта меню?
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
19.09.2019, 10:05
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub app_WindowSelectionChange(ByVal Sel As Selection)
    'MsgBox Sel, vbInformation
    ln = Len(Sel)
    If ln > 1 Then
    
    For Each cnt In Application.CommandBars(100).Controls
    cnt.Visible = False
    Next cnt
    
    For i = 0 To 5
    Set MyPoint = Application.CommandBars(100).Controls.Add
    MyPoint.Caption = "item" + CStr(i)
    MyPoint.OnAction = "MySub"
    MyPoint.Parameter = MyPoint.Caption
    Next i
    Application.CommandBars(100).ShowPopup
    End If
End Sub
 
Private Sub MySub()
    MsgBox CommandBars.ActionControl.Parameter, vbInformation
End Sub
Вот при выделении текста показывает сразу меню. Если надо по правой то в том же методе App_WindowBeforeRightClick надо выполнить эту функцию. Только там выделенный текст по другому гдето надо достать.
1
1708 / 577 / 74
Регистрация: 10.04.2009
Сообщений: 9,291
19.09.2019, 11:04  [ТС]
так и пристала менюшка как банный лист..., пробовал так, после её показа:
Visual Basic
1
2
3
4
 Sleep 500
    For Each cnt In Application.CommandBars(100).Controls
        cnt.Visible = False
    Next cnt
не помогло....
по идее через 0,5 секунды нужно программно нажать Esc и удалить меню, как? спс
0
1708 / 577 / 74
Регистрация: 10.04.2009
Сообщений: 9,291
20.09.2019, 13:58  [ТС]
всё же как сделать появление меню после выделения текста в Ворде не предложенного Application.CommandBars(100).Controls, а меню от Ворда?
Visual Basic
1
2
3
4
Private Sub App_WindowSelectionChange(ByVal Sel As Selection)
Application.CommandBars("Text").Controls(msoControlButton).ShowPopup
    'или
Application.CommandBars("Text").Controls.ShowPopup
не взлетает
0
 Аватар для Worldmaster
323 / 190 / 45
Регистрация: 25.08.2011
Сообщений: 1,263
20.09.2019, 15:10
Visual Basic
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
26
27
28
29
30
31
32
33
34
Private Declare Function SetCursorPos Lib "user32" (ByVal x As Long, ByVal y As Long) As Long
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Private Const MOUSEEVENTF_LEFTDOWN = &H2
Private Const MOUSEEVENTF_LEFTUP = &H4
Private Const MOUSEEVENTF_RIGHTDOWN As Long = &H8
Private Const MOUSEEVENTF_RIGHTUP As Long = &H10
 
Public Sub SingleClick()
  SetCursorPos 100, 100 'x and y position
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub
 
Public Sub DoubleClick()
  'Double click as a quick series of two clicks
  SetCursorPos 100, 100 'x and y position
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_LEFTUP, 0, 0, 0, 0
End Sub
 
Public Sub RightClick(x As Integer, y As Integer)
  'Right click
  SetCursorPos x, y 'x and y position
  mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
End Sub
 
Public Sub RightClick()
  'Right click
  mouse_event MOUSEEVENTF_RIGHTDOWN, 0, 0, 0, 0
  mouse_event MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0
End Sub
В коде документа:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private WithEvents app As Application
Dim mClass As New Class1
 
Private Sub Document_Open()
Set app = Application
End Sub
 
Private Sub app_WindowSelectionChange(ByVal Sel As Selection)
    ln = Len(Sel)
    If ln > 1 Then
    'Application.CommandBars("Standard").ShowPopup
    'SendKeys ("+{F10}")
    mClass.RightClick
    End If
End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.09.2019, 15:10
Помогаю со студенческими работами здесь

Вызов меню по нажатию ПКМ
Как выйзвать меню по нажатию правой кнопки мыши на форме?

Запрограммировать появление контекстного меню
Запрограммировать на ассемблере появление контекстного (всплывающее) меню на форме по нажатию правой кнопки. Организовать исполнение...

Не срабатывает запрет на появление контекстного меню в IE
Здравствуйте. Скажите пожалуйста, почему этот код работает везде, кроме IE (проверял на версии 7)? Что нужно сделать, чтобы запретить...

TreeView и всплывающее меню по нажатию ПКМ по элементу
У меня в treeView есть набор элементов. Возможно ли такое, что по нажатию ПКМ на элемент treeView, на этому элементе возникло доп.меню...

StringGrid: удалить строку по нажатию на пункт контекстного меню
Доброе время суток. Такой вопрос по StringGrid B Delphi: есть таблица StringGrid с несколькими строками, и нужно сделать так чтобы при...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
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
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru