| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > Vb.net C#. Как отследить событие BeginShortcutMenuDefault ?

Vb.net C#. Как отследить событие BeginShortcutMenuDefault ?

Ответ
Поиск в этой теме
Непрочитано 12.12.2018, 14:30 #1
Vb.net C#. Как отследить событие BeginShortcutMenuDefault ?
p_sh
 
новичок
 
Ярославль
Регистрация: 19.06.2005
Сообщений: 3,415




задача: получить в своем модуле регистрацию на событие AcadDocumentClass.BeginShortcutMenuDefault

направьте мысль в нужное русло. грызу мануалы, но пока не победил.
__________________
хорошее - в обыденном

Последний раз редактировалось p_sh, 15.12.2018 в 07:58.
Просмотров: 2098
 
Непрочитано 12.12.2018, 15:16
#2
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,025


Цитата:
Сообщение от p_sh Посмотреть сообщение
направьте мысль в нужное русло
я в коде не копался, но если Вам потребовалось событие из COM, то наверное неплохо было бы сначала получить этот объект и уже в этом объекте подписываться на событие...
Хотя, мне кажется, что Вы что то делаете не так, если Вам потребовались эти инструменты. Может быть это не секрет и Вы опишите, что Вы хотите получить? Собственно саму задачу.
__________________
_бложиг
Boxa на форуме  
 
Непрочитано 12.12.2018, 16:26
#3
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,785


подозреваю, что блокировку "родного" КМ акада)
Сергей812 вне форума  
 
Автор темы   Непрочитано 12.12.2018, 16:43
#4
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,415


Цитата:
Сообщение от Boxa Посмотреть сообщение
но если Вам потребовалось событие из COM, то наверное неплохо было бы сначала получить этот объект и уже в этом объекте подписываться на событие...
подумаю как это сделать

Цитата:
Собственно саму задачу.
да хочу вместо КМ по умолчанию выводить форму с настраиваемыми кнопками (штук 25-49).
переписать https://dwg.ru/dnl/344
__________________
хорошее - в обыденном
p_sh вне форума  
 
Непрочитано 12.12.2018, 16:48
#5
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,025


http://bushman-andrey.blogspot.com/2012/10/autocad.html
__________________
_бложиг
Boxa на форуме  
 
Непрочитано 12.12.2018, 16:53
#6
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 6,785


25..49 кнопок на курсоре - как то странновато будет выглядеть)

----- добавлено через ~23 мин. -----
Можете отслеживать любое действие пользователя на клавиатуре и мыше (в контексте акада, естественно), если хук реализуете. Если еще событие Application.PreTranslateMessage - но в отличие от хука оно не все отслеживает, в свое время об этом еще Ривилис говорил на одном из форумов.
Сергей812 вне форума  
 
Автор темы   Непрочитано 12.12.2018, 21:07
#7
p_sh

новичок
 
Регистрация: 19.06.2005
Ярославль
Сообщений: 3,415


Заработала! но криво: нужно в каждом документе выполнять команду AddCOMDocEvent
а хотелось бы чтобы для любого активного документа

любимым методом копи-паст-модифи из гида.
http://docs.autodesk.com/ACD/2010/EN...45c08-2cf8.htm


Код:
[Выделить все]
Imports Autodesk.AutoCAD.Runtime
Imports Autodesk.AutoCAD.ApplicationServices
Imports Autodesk.AutoCAD.DatabaseServices

Imports Autodesk.AutoCAD.Interop
Imports Autodesk.AutoCAD.Interop.Common
Public Class Q
    '' Global variable for AddCOMEvent and RemoveCOMEvent commands
    Dim acAppCom As AcadApplication
    Dim acDocCom As AcadDocument

    <CommandMethod("AddCOMEvent")>
    Public Sub AddCOMEvent()
        '' Set the global variable to hold a reference to the application and
        '' register the BeginFileDrop COM event
        acAppCom = Application.AcadApplication
        ' AddHandler acAppCom.BeginFileDrop, AddressOf appComBeginFileDrop
        AddHandler acAppCom.BeginFileDrop, AddressOf appComBeginFileDrop
    End Sub
    <CommandMethod("AddCOMDocEvent")>
    Public Sub AddCOMDocEvent()
        '' Set the global variable to hold a reference to the application and
        '' register the BeginFileDrop COM event
        acDocCom = Core.Application.DocumentManager.MdiActiveDocument.GetAcadDocument 'Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.AcadDocument
        ' AddHandler acAppCom.BeginFileDrop, AddressOf appComBeginFileDrop
        AddHandler acDocCom.BeginShortcutMenuDefault, AddressOf appBeginShortcutMenuDefault
    End Sub

    <CommandMethod("RemoveCOMEvent")>
    Public Sub RemoveCOMEvent()
        '' Unregister the COM event handle
        RemoveHandler acAppCom.BeginFileDrop, AddressOf appComBeginFileDrop
        acAppCom = Nothing
    End Sub
    Public Sub RemoveCOMDocEvent()
        '' Set the global variable to hold a reference to the application and
        '' register the BeginFileDrop COM event
        ' AddHandler acAppCom.BeginFileDrop, AddressOf appComBeginFileDrop
        RemoveHandler acDocCom.BeginShortcutMenuDefault, AddressOf appBeginShortcutMenuDefault
        acDocCom = Nothing
    End Sub
    Public Sub appComBeginFileDrop(ByVal strFileName As String,
                               ByRef bCancel As Boolean)
        '' Display a message box prompting to continue inserting the DWG file
        If System.Windows.Forms.MessageBox.Show("AutoCAD is about to load " &
                            strFileName & vbLf &
                            "Do you want to continue loading this file?",
                            "DWG File Dropped",
                            System.Windows.Forms.MessageBoxButtons.YesNo) =
      System.Windows.Forms.DialogResult.No Then
            bCancel = True
        End If
    End Sub

    Public Sub appBeginShortcutMenuDefault(ByRef ShortcutMenu As Autodesk.AutoCAD.Interop.AcadPopupMenu)
        '' Display a message box 
        MsgBox("CMND")
    End Sub
End Class
__________________
хорошее - в обыденном

Последний раз редактировалось p_sh, 12.12.2018 в 21:20.
p_sh вне форума  
 
Непрочитано 12.12.2018, 21:36
#8
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,025


Подпишитесь на события создания или открытия документа и уже там выполняйте AddCOMDocEvent запоминая в каком документе это уже сделано, дабы не повторяться и не ловить ошибки.
__________________
_бложиг
Boxa на форуме  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > Vb.net C#. Как отследить событие BeginShortcutMenuDefault ?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AutoCAD. VB.NET. Не получается установить Block.Rotation. Ошибка Value must be non-zero Дмитрий Асташев .NET 7 28.08.2014 14:35
C# Как правильно повесить событие на открытие документа? Sfinks7s1 Программирование 4 23.07.2013 23:58
vb.net, AutoCAD + windows form Gelia .NET 6 23.03.2012 22:14
Acad 2009; .Net 3.5; UnknownCommand - первый раз после регистрации, событие всегда генерируется дважды. hwd .NET 4 31.03.2011 17:48
VB.NET и COM-сервер DEM .NET 4 21.03.2011 10:46