Перехват событий document или Application

Автор Тема: Перехват событий document или Application  (Прочитано 5348 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Подскажите. Стандартного события для отслеживания нажатия
кнопки для классов document или Application не нашел.
Как быть если мне нужно обработать событие нажатия клавиши в AutoCAD.

Хочу попробовать через функцию SetWindowsHookEx. Пока что-то не получается.

Код - C# [Выбрать]
  1.       [System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint = "SetWindowsHookEx", SetLastError = true)]
  2.         static extern IntPtr SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, uint dwThreadId);
  3.  
  4. private delegate int HookProc(int code, IntPtr wParam, IntPtr lParam);
  5. ...
  6. IntPtr hMod = System.Runtime.InteropServices.Marshal.GetHINSTANCE(typeof(Autodesk.AutoCAD.ApplicationServices.Document).Module);
  7. hHook = SetWindowsHookEx(WH_KEYBOARD_LL, HookProcedure, hMod, 0)

Может кто сталкивался с подобной задачей.





Отмечено как Решение Алексей (IdeaSoft) 21-02-2017, 15:12:07

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Перехват событий document или Application
« Ответ #3 : 21-02-2017, 14:34:06 »
Ну и в догонку: https://www.codeproject.com/articles/5038/using-hooks-from-c
Я использовал эти методы вот здесь: http://adn-cis.org/forum/index.php?topic=1868.msg7609#msg7609
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Алексей (IdeaSoft)Автор темы

  • ADN
  • *
  • Сообщений: 1188
  • Карма: 9
    • idea-soft.ru
  • Skype: makar_govorun
Re: Перехват событий document или Application
« Ответ #4 : 21-02-2017, 15:12:44 »
Спасибо! Разобрался! Реально ответы помогли.

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Перехват событий document или Application
« Ответ #5 : 21-02-2017, 15:39:41 »
А Application.PreTranslateMessage не поможет?

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Перехват событий document или Application
« Ответ #6 : 21-02-2017, 16:07:33 »
А Application.PreTranslateMessage не поможет?
Когда-то обратил внимание, что далеко не все Windows'овские сообщения попадают в это событие. В том числе и клавиатурные.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Перехват событий document или Application
« Ответ #7 : 21-02-2017, 16:19:44 »
Я в одном из приложений использую это событие. За пару лет работы, вроде, никаких обращений от пользователей не было по поводу того, что не сработало что-то. Приложение отслеживает нажатие клавиш на клавиатуре (сам факт, без уточнения, какая клавиша нажата) и щелчки правой и левой кнопки мыши. В последней редакции еще добавил отслеживание перемещения мыши, пока отзывов не получал, тестируют.

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Перехват событий document или Application
« Ответ #8 : 21-02-2017, 16:26:23 »
Это событие - аналог acedRegisterWatchWinMsg/acedRemoveWatchWinMsg в ObjectARX.
Здесь было обсуждение: https://forums.autodesk.com/t5/objectarx/how-to-ask-for-a-password-on-the-command-line-of-autocad-2013/m-p/3649184/highlight/false
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Перехват событий document или Application
« Ответ #9 : 21-02-2017, 16:36:01 »
То есть, если я правильно понял, это событие дает сбои при вводе значений в командную строку? Что-то там как-то путано все и пестрит перекрестными ссылками :)

Онлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Перехват событий document или Application
« Ответ #10 : 21-02-2017, 16:38:26 »
Да. И причем еще зависит от типа "пристыковки" командной строки.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Re: Перехват событий document или Application
« Ответ #11 : 21-02-2017, 16:45:01 »
Ну в моем приложении это не критично, но на будущее учту, спасибо!