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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.11.2006, 10:02   #1  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Lightbulb WinApi challenge: Editor hotkeys
Очень хочется приделать к редактору много всякиз вкусных штук, но довольно неудобно их вызывать через EditorScripts.

Сейчас я пользуюсь макросами AutoHotkey для этого, причем имитирую нажатия клавиш, что хреновато работает при переключении раскладки. Хотелось бы работать с контекстными меню по именам пунктов. Например, чтобы скрипт выглядел так:

Нажатие клавиши APPS
В появившемпся попапе выбрать Scripts
В появившемпся попапе выбрать Templates
и так далее.

Я вижу что в форуме появилось много людей, знающих чем lpsz отличается от void* - может они чем-то помогут?
За это сообщение автора поблагодарили: mazzy (5).
Старый 23.11.2006, 12:28   #2  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
А вариант получить Editor e подходит? Только в этом случае все равно надо немного дописывать EditorScripts ....
Старый 23.11.2006, 12:48   #3  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Я не очень понял, как получить Editor e вне EditorScripts. Общая задача сделать так, чтобы при нажатии на Alt+C выделенный кусок кода был закомментирован, например. Сейчас это решено так:
Код:
; Alt+C comment
#IfWinActive, ahk_class AxaptaClientClassName
~!c::
      SendInput,{APPSKEY}s{vk43sc02E}{ENTER}{vk43sc02E}   
Exit

; Ctrl+Alt+C uncomment
#IfWinActive, ahk_class AxaptaClientClassName
~^!c::
     SendInput,{APPSKEY}sc{ENTER}u 
Exit
То есть просто посылка в приложение последовательности клавиш. Если клавиатурная локаль - русская, то глючит
Старый 23.11.2006, 13:35   #4  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Я делал примерно так:

Alt-C отлавливал через ActiveX. В форме ставится таймер, чтобы потом поймать записанный Editor.
Далее находим активное MDI окошко, если это Редактора - шлем в него Alt-M (вызов EditorScripts).
В EditorScripts дописывался метод, который вызывается первым (вроде showProperties) в нем ставлю проверку - если Alt-M съэмулирован мной - записываю Editor e и выхожу, если не мной - все работает как обычно.
После отработки таймера - делаю с Editor e все что хочу.

К сожалению не могу пока показать код....переустанавливаюся =)
Старый 20.02.2007, 12:49   #5  
alex55 is offline
alex55
MCTS
MCBMSS
 
224 / 145 (5) +++++
Регистрация: 13.02.2007
Адрес: Москва
Цитата:
Сообщение от Alex_KD Посмотреть сообщение
Я делал примерно так:

Alt-C отлавливал через ActiveX. В форме ставится таймер, чтобы потом поймать записанный Editor.
Далее находим активное MDI окошко, если это Редактора - шлем в него Alt-M (вызов EditorScripts).
В EditorScripts дописывался метод, который вызывается первым (вроде showProperties) в нем ставлю проверку - если Alt-M съэмулирован мной - записываю Editor e и выхожу, если не мной - все работает как обычно.
После отработки таймера - делаю с Editor e все что хочу.

К сожалению не могу пока показать код....переустанавливаюся =)
Если уже переустановили - можно ли код увидеть?
ActiveX для перехвата реализуете вне Аксапты?
Старый 22.02.2007, 12:23   #6  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Код тут:
Получение экземпляра текущего Editor

Для получения Editor e ненужен ActiveX.
Старый 23.11.2006, 13:42   #7  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
ALT+M не работает при ошибках компиляции - лучше пользоваться Apps
В принципе, можно сделать скрипт, который всегда будет первым и будет играть роль диспетчера для других.

Только как к нему добраться - enter посылать? А как тогда добраться до Scripts
Старый 23.11.2006, 14:01   #8  
Alex_KD is offline
Alex_KD
Участник
AxAssist
MCBMSS
Соотечественники
 
522 / 362 (14) ++++++
Регистрация: 06.07.2006
Адрес: Melbourne, Down Under
Цитата:
Сообщение от belugin Посмотреть сообщение
ALT+M не работает при ошибках компиляции - лучше пользоваться Apps
В принципе, можно сделать скрипт, который всегда будет первым и будет играть роль диспетчера для других.

Только как к нему добраться - enter посылать? А как тогда добраться до Scripts
Странно...у меня работатет. Но как альтернатива есть еще кнопка на тулбаре, аналогичная Alt-M, ну или Apps.
После того как мы получили Editor e нам никакие Scripts уже не нужны.
Старый 14.12.2006, 15:14   #9  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Есть такая программа PowerPro, где то 2Мб и не требует установки. Позволяет сделать кучу полезных вещей. В том числе, позволяет на горячие клавиши вешать скрипты.

Скрипт для комментирования выделенного фрагмента кода:

Цитата:
local myclip=clip.get
clip.set("")
clip copy
code=clip.get

commentedCode = ""

local fHandle = File.Open("c:\\pp_ax_comment.tmp", "w")
File.WriteString(fHandle, code)
File.Close(fHandle)

local fHandle = File.Open("c:\\pp_ax_comment.tmp", "r")
For (not File.EOF(fHandle))
codeLine = File.ReadLine(fHandle)
commentedCode = commentedCode ++ "// " ++ codeLine
EndFor
File.Close(fHandle)

clip.set(commentedCode)
clip paste
Если программа заинтересует, то на yahoo есть список рассылки, посвященной этой программе. Кроме того, в дистрибутиве программы есть неплохая помощь как по возможностям программы, так и по встроенному языку. Предупреждаю сразу - программа не из простых и за 10 минут разобраться не получится.
Старый 15.12.2006, 09:09   #10  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Дык намакросить я и сам могу - я хочу вызывать скрипты редактора, которые могут что-то узнать о потрохах аксапты. Например как мне с помощью PowerPro (или не важно чего - я вот, например, Autohotkey пользуюсь) вырать пункт из контекстного меню
Старый 15.12.2006, 15:00   #11  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Надо смотреть конкретное приложение и конкретный случай. Этот пункт меню хоткей имеет? Тогда можно послать в Аксапту коомбинацию клавиш.
Можно еще попробовать поиграться с окнами и сообщениями им. Что-то типа:

Цитата:
[power pro code]
local mainwin=window("firstwindow","c=mainclass")
local subs=win.childhandlelist(mainwin,"c=subclass")
Старый 15.12.2006, 15:35   #12  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
дык у меня конкретный вопрос: я посылаю {apps} в редактор аксапты - каким образом мне раздобыть handle контекстного меню, которорый потом возникает и выбрать из него пункт - а на чем реализовать - другой вопрос, хоть на pywinauto
Старый 15.12.2006, 15:44   #13  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Цитата:
хоть на pywinauto
wow, спасибо
Старый 29.03.2007, 16:52   #14  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Сделал. Перехватывает контекстное меню, анализирует структуру и посылает ему необходимое количество клавиш перемешений
База знаний ERP : Axapta / Макросы Auto Hotkey
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Axapta WinAPI::SewWindow... кто знает как? UNRW DAX: Программирование 2 26.09.2008 15:28
Dynamics AX Geek: Finding files with WinAPI Blog bot DAX Blogs 0 28.10.2006 16:40
WinAPI. Ссылка (POINT) третьего уровня вложенности Владимир Максимов DAX: Программирование 2 06.02.2006 16:28
WinAPI::getLastError() DreamCreator DAX: Программирование 4 20.06.2005 10:03
WinApi. Удаление файлов глючит. NJD DAX: Программирование 10 05.12.2003 13:31

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

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

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