AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.07.2010, 16:02   #1  
DSPIC is offline
DSPIC
Боец
 
1,077 / 1243 (44) ++++++++
Регистрация: 11.04.2008
Цитата:
Сообщение от George Nordic Посмотреть сообщение
1. Как сгенерировать событие
  • Может не тому окну посылаете (или вообще не то)? (форма состоит из нескольких окон, Воспользуйтесь spy в составе MS VS для контроля)
  • Если посылаете батоном той же формы, возможо, окно "забивает" на WM_CLOSE, т.к. отрабатывает события кнопки (кто знает, как FormRun внутрях (и ещё глебже )сделан).

Цитата:
Сообщение от George Nordic Посмотреть сообщение
2. Как сделать так, что бы installMessageProc его перехватил.

Никак. Опять же, это внутренняя ф-я, и не понятно, какие категории сообщений она перехватывает. Помню, очень долго с ней игрался в рамках создания FormDigger'a

Полноценный переватчик лучше оформить в виде ActiveX - получите полный контроль и читабельный код - но регистрация DLL

Если без регистрации DLL - то придется программить на ASM на X++ для заворачивания процедуры обработки сообщений на себя, что жуть как криво и unsupportable.
Старый 09.07.2010, 18:36   #2  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,480 / 1255 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Может не тому окну посылаете (или вообще не то)? (форма состоит из нескольких окон, Воспользуйтесь spy в составе MS VS для контроля)
Я даже пример приложил Там в инфо выводится инфа, какому окну посылаем сообщение и, если ловит, то его дескриптор.
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Если посылаете батоном той же формы, возможо, окно "забивает" на WM_CLOSE, т.к. отрабатывает события кнопки (кто знает, как FormRun внутрях (и ещё глебже )сделан).
Да, в том-то все и дело. У меня не так много времени было на "поиграться", но вывод пока неутешительный:
1. installMessageProc не раегирует на SendMessage - только на PostMessage
2. Некоторые оповещения (клавиша, фокус, клипбоард) - проходят. А мышь, WM_COPYDATA и некоторые другие - "съедаются" ядром и игнорируются. Что проходит, а что нет - непонятно, описаний нет, только опытным путем.
3. Как видно, съедаются некоторые события, которые можно перекрыть.
4. И наоборот, некоторые события, которые посылаешь "Send/PostMessage" - ловятся, а вот контролы на них не реагируют, хотя, по логике построения мультиоконных интерфейсов, должны.
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Никак. Опять же, это внутренняя ф-я, и не понятно, какие категории сообщений она перехватывает. Помню, очень долго с ней игрался в рамках создания FormDigger'a. Полноценный переватчик лучше оформить в виде ActiveX - получите полный контроль и читабельный код - но регистрация DLL
Да, это и была первоначальная идея. Но случайно наткнулся на этот новый метод (не помнб такого раньше) и решил, что можно попробовать решить стаааренькую задачку.
Цитата:
Сообщение от DSPIC Посмотреть сообщение
Если без регистрации DLL - то придется программить на ASM на X++ для заворачивания процедуры обработки сообщений на себя, что жуть как криво и unsupportable.
Да, но зато будет DAX, в которой реализована возможность перекрытия обработки сообщений

Хотя, помниться, Alex_KD, кажется, когда-то писал что-то подобное.

С Уважением,
Георгий
Старый 09.07.2010, 23:57   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,342 / 3563 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от George Nordic Посмотреть сообщение
Хотя, помниться, Alex_KD, кажется, когда-то писал что-то подобное.
Если ты имеешь в виду AxAssist - то эта тулза с регистрацией DLL
__________________
Возможно сделать все. Вопрос времени
Старый 11.07.2010, 14:34   #4  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Цитата:
Сообщение от George Nordic Посмотреть сообщение
1. installMessageProc не раегирует на SendMessage - только на PostMessage
2. Некоторые оповещения (клавиша, фокус, клипбоард) - проходят. А мышь, WM_COPYDATA и некоторые другие - "съедаются" ядром и игнорируются. Что проходит, а что нет - непонятно, описаний нет, только опытным путем.
При отсылки WM_COPYDATA через postMessage возвращает GetLastError() = 1159 , что расшифровывается как "The message can be used only with synchronous operations".
Другими словами WM_COPYDATA можно отослать только через SendMessage, который installMessageProc игнорирует.

OLE компонент изменить есть возможность? Аксапта отлично реагирует на WM_USER+X сообщения. Так же WM_COMMAND можно попробовать использовать.

Еще некоторые сообщения требуют указатель в параметре lParam вместо int. При отсылки таких сообщение через
X++:
WinApi::postMessage()/WinApi::sendMessage()
Акспта иногда очень быстро умирает.

ЗЫ AxAssist работает в одном треде с Аксаптой и слушает все сообщения до Аксапта, поэтому та м проще что-либо перехватить и обработать.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX 2009 некорректный SPID в форме активных пользователей Logger DAX: Программирование 2 05.07.2010 17:19
emeadaxsupport: List of fixes that improve performance of certain features in Dynamics AX 2009 Blog bot DAX Blogs 0 13.10.2009 19:06
msdynamicsax: DAX 2009 and MS SQL 2008 Blog bot DAX Blogs 0 09.08.2008 14:05
axStart: Microsoft Dynamics AX 2009 Hot Topics Web Seminar Series Blog bot DAX Blogs 0 06.08.2008 12:05
msdynamicsax: Enterprise Portal development in DAX 2009 Blog bot DAX Blogs 0 18.04.2008 07:06

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 15:27.