Вопрос

В приложении C # WinForms (на .NET 3.5, возможно, вскоре появится 4.0), как бы вы разрешили пользователю определять свои собственные макросы?Например, пользователь может захотеть, чтобы нажатие клавиши CTRL + K означало нажатие определенного пункта в меню и ввод некоторого текста в открывшееся меню, прежде чем нажимать "Ok", чтобы закрыть диалоговое окно.

В идеале наше программное обеспечение могло бы предоставлять функциональность записи макросов, которая позволила бы пользователю просто начать запись, выполнить желаемые задачи и остановить запись, чтобы макрос был доступен.Это функция, к которой они привыкли из старой версии программного обеспечения, которая была написана в FoxPro, инструменте, который имеет встроенные такие возможности.

Очевидно, что лучшим вариантом для нас было бы приобретение и использование какой-либо испытанной библиотеки сторонних производителей, но также приветствуются идеи по созданию нашей собственной версии.

Нет правильного решения

Другие советы

Если бы я работал над чем-то подобным, я бы, возможно, интегрировал eventhandler общего назначения для регистрации событий, которые вы хотите сделать записываемыми (возможно, либо как отдельный обработчик, добавленный к доступным кнопкам, либо создав класс RecordedEventHandler для расширения EventHandler, а затем выделив из него подклассы для всей вашей обработки событий - это просто первоклассные идеи, поэтому я не рассматривал, какие из них были бы наиболее жизнеспособными) и просто используйте кнопку "записать макрос" в качестве переключателя для этого.Вероятно, потребуется записать всего несколько различных типов событий - нажатия кнопок, ввод с клавиатуры в любых текстовых полях, сочетания клавиш и ввод с помощью мыши в любых полях ввода с помощью мыши, так что это не слишком трудоемкая задача, хотя, конечно, разработка того, как хранить и привязывать макросы и как упростить импорт и экспорт, если вы склонны это делать, отнимает много времени, но не является технически сложной.Я не знаю ни о каких библиотеках для этой цели (хотя я ожидаю, что некоторые из них существуют), и, думая об этом, я не уверен, насколько легко было бы интегрировать что-то подобное, потому что потребности большинства людей в плане макросов, вероятно, будут разными.

Если вам нужно было иметь возможность регистрировать события вокруг вашего приложения, то вы можете найти Управляемый WinAPI чтобы быть полезным.

У меня есть хороший опыт работы с "шаблоном проектирования команд" для функциональной записи макросов.Каждая команда запускает какое-либо событие для всего приложения (например, статическое) с информацией о параметрах и т.д...Записывающее устройство прослушивает это событие и сохраняет последовательность вызова команды.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top