![]() |
#1 |
Участник
|
![]()
Очень хочется приделать к редактору много всякиз вкусных штук, но довольно неудобно их вызывать через EditorScripts.
Сейчас я пользуюсь макросами AutoHotkey для этого, причем имитирую нажатия клавиш, что хреновато работает при переключении раскладки. Хотелось бы работать с контекстными меню по именам пунктов. Например, чтобы скрипт выглядел так: Нажатие клавиши APPS В появившемпся попапе выбрать Scripts В появившемпся попапе выбрать Templates и так далее. Я вижу что в форуме появилось много людей, знающих чем lpsz отличается от void* - может они чем-то помогут? |
|
|
За это сообщение автора поблагодарили: mazzy (5). |
![]() |
#2 |
Участник
|
А вариант получить Editor e подходит? Только в этом случае все равно надо немного дописывать EditorScripts ....
|
|
![]() |
#3 |
Участник
|
Я не очень понял, как получить 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 |
|
![]() |
#4 |
Участник
|
Я делал примерно так:
Alt-C отлавливал через ActiveX. В форме ставится таймер, чтобы потом поймать записанный Editor. Далее находим активное MDI окошко, если это Редактора - шлем в него Alt-M (вызов EditorScripts). В EditorScripts дописывался метод, который вызывается первым (вроде showProperties) в нем ставлю проверку - если Alt-M съэмулирован мной - записываю Editor e и выхожу, если не мной - все работает как обычно. После отработки таймера - делаю с Editor e все что хочу. К сожалению не могу пока показать код....переустанавливаюся =) |
|
![]() |
#5 |
Участник
|
ALT+M не работает при ошибках компиляции - лучше пользоваться Apps
В принципе, можно сделать скрипт, который всегда будет первым и будет играть роль диспетчера для других. Только как к нему добраться - enter посылать? А как тогда добраться до Scripts |
|
![]() |
#6 |
Участник
|
Цитата:
После того как мы получили Editor e нам никакие Scripts уже не нужны. |
|
![]() |
#7 |
Moderator
|
Есть такая программа 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 |
|
![]() |
#8 |
Участник
|
Дык намакросить я и сам могу - я хочу вызывать скрипты редактора, которые могут что-то узнать о потрохах аксапты. Например как мне с помощью PowerPro (или не важно чего - я вот, например, Autohotkey пользуюсь) вырать пункт из контекстного меню
|
|
![]() |
#9 |
Moderator
|
Надо смотреть конкретное приложение и конкретный случай. Этот пункт меню хоткей имеет? Тогда можно послать в Аксапту коомбинацию клавиш.
Можно еще попробовать поиграться с окнами и сообщениями им. Что-то типа: Цитата:
[power pro code]
local mainwin=window("firstwindow","c=mainclass") local subs=win.childhandlelist(mainwin,"c=subclass") |
|
![]() |
#10 |
Участник
|
дык у меня конкретный вопрос: я посылаю {apps} в редактор аксапты - каким образом мне раздобыть handle контекстного меню, которорый потом возникает и выбрать из него пункт - а на чем реализовать - другой вопрос, хоть на pywinauto
|
|
![]() |
#11 |
Moderator
|
Цитата:
хоть на pywinauto
![]() |
|
![]() |
#12 |
MCTS
|
Цитата:
Сообщение от Alex_KD
![]() Я делал примерно так:
Alt-C отлавливал через ActiveX. В форме ставится таймер, чтобы потом поймать записанный Editor. Далее находим активное MDI окошко, если это Редактора - шлем в него Alt-M (вызов EditorScripts). В EditorScripts дописывался метод, который вызывается первым (вроде showProperties) в нем ставлю проверку - если Alt-M съэмулирован мной - записываю Editor e и выхожу, если не мной - все работает как обычно. После отработки таймера - делаю с Editor e все что хочу. К сожалению не могу пока показать код....переустанавливаюся =) ![]() ActiveX для перехвата реализуете вне Аксапты? |
|
![]() |
#13 |
Участник
|
|
|
![]() |
#14 |
Участник
|
Сделал. Перехватывает контекстное меню, анализирует структуру и посылает ему необходимое количество клавиш перемешений
База знаний ERP : Axapta / Макросы Auto Hotkey |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|